File Upload Security Testing Services
Manual file upload security testing across Europe: extension and MIME bypass, webshell RCE, SVG XXE, path traversal and storage exposure. Free retest.
File upload security testing checks whether your upload features can be pushed past their limits: made to accept a file they should reject, store it somewhere it can be reached, and run it or serve it back in a way that harms you or your users. It is one of the shortest routes from an ordinary web form to remote code execution, so it deserves focused testing.
Every upload field is a small trust decision. The application decides this file is a profile picture, a CV or an invoice, and treats it accordingly. An attacker’s whole game is to break that assumption, to smuggle in something executable dressed as something harmless. SafetyBis is a European offensive-security team with OSCP and OSWE-certified engineers, and we test upload functionality the way an attacker probes it, one broken assumption at a time, then show the real impact.
What file upload security testing covers
An upload flow has several checkpoints, at the extension, the content type, the file contents, the storage location and the way the file is later served, and each can be bypassed independently. Here is the scope.
Why uploads are so dangerous
Most vulnerability classes let an attacker read data or run script in someone’s browser. A broken file upload can let them run code on your server. That is the ceiling, and it is why we treat upload testing as a high-priority exercise rather than a quick check of the accept attribute. The distance from “the form accepts a .php file” to “the attacker controls the server” is often a single request, and closing that gap is the point of the engagement.
The layered checks and how they fail
Good upload handling validates in layers, and an attacker only needs one layer to be weaker than it looks. Client-side checks are cosmetic and fall away the moment the request is crafted by hand. Extension allowlists are bypassed with alternate extensions the server still executes. Content-type headers are attacker-controlled and mean nothing on their own. Even content sniffing is beaten by a polyglot file that is a valid image and a valid script at once. We test each layer against the tricks that defeat it.
How we test uploads
The work is manual, with Burp Suite for intercepting the upload request and crafting each variation, because every bypass is a small deliberate change to a field the browser would never let you alter. Automated tools rarely understand the difference between an upload that is stored safely and one that is stored where it can be executed.
Mapping the upload flow
We identify every place a file can enter: profile photos, document uploads, import features, attachments, avatars, even indirect paths like a URL the server fetches and saves. For each we establish what the server checks, where the file lands, what name it keeps, and whether it can be reached again over HTTP.
Bypassing validation
We work through the checks one at a time.
Extension and content-type
We try alternate executable extensions, double extensions like invoice.pdf.php, trailing characters, and mismatched content-type headers, watching which combination the server accepts and, more importantly, later executes.
Magic bytes and polyglots
Where the server validates file contents, we craft files that carry a valid image header and a malicious payload in the same file, so a content check passes while the executable part survives.
Filename and path traversal
We test whether traversal sequences in the filename let a file be written outside the upload directory, into a web-served or system location, which turns an upload into arbitrary file write.
Proving impact
A file that is accepted is only interesting if it can do something. We confirm whether an uploaded script can be requested and executed, whether an SVG runs in a viewer’s browser, or whether an XML file’s external entities read server files. We prove the outcome with a benign, controlled payload and stop there, with every intrusive step agreed in the rules of engagement first.
Attack outcomes we test for
Remote code execution via webshell
The worst case. If a server-side script can be uploaded and reached by URL, the attacker runs code as the web application, reads configuration and secrets, and pivots deeper. We test the full path, from upload to execution, and where it works it is the headline finding in the report.
Stored XSS through SVG and HTML
An SVG is XML, and XML can carry script. Uploaded as an avatar and served inline, a malicious SVG runs in the browser of everyone who views it. We test whether image uploads are sanitised or served with a content type that prevents execution.
XXE through document formats
Formats built on XML, including SVG, DOCX and some spreadsheets, can define external entities. A parser that resolves them can be steered into reading local files or making server-side requests, turning an innocent document upload into information disclosure or SSRF.
Denial of service and storage abuse
Missing size and count limits let an attacker exhaust disk or bandwidth. Decompression bombs, tiny archives that expand to gigabytes, do the same to memory. We check the limits that keep an upload feature from becoming an availability problem.
Want this tested on your own systems?
Free 20-minute scoping call, a fixed price with no hourly surprises, and a free retest once you fix what we find.
What you get: the deliverables
Executive summary
A plain-language read on whether your upload features can be turned into code execution, stored attacks on your users, or a denial-of-service, and what each would cost.
Technical report
Each finding lists the upload point, the bypass used, the resulting impact, a CVSS score, reproduction with the exact request and file, and a specific fix, from server-side validation and content-type enforcement to storing files off the web root and serving them with a safe disposition.
Free retest
After your team applies the fixes we re-test every finding at no charge and confirm the bypass no longer works, across each variation we found.
Compliance and standards
OWASP
Unrestricted file upload maps to OWASP Top 10 categories for injection and security misconfiguration, and to specific OWASP ASVS file-handling requirements. We test against these so your developers get a recognised structure for both findings and fixes.
PCI DSS, ISO 27001, SOC 2 and GDPR
Any system that accepts files from users and handles payment or personal data falls under these frameworks’ testing and hardening expectations. The report and attestation letter are written to support PCI DSS, ISO 27001, SOC 2 and GDPR. Tell us your framework and we align the deliverables.
Where uploads hide, and why storage matters more than validation
Teams focus on validating the upload and forget where the file goes afterwards, which is where a lot of the real risk sits. A file can pass every content check and still be dangerous if it lands in a directory the web server will execute, or is served back with a content type that lets the browser run it. We have seen an application reject scripts flawlessly at the form and then store a validated image in a folder that also ran PHP, so a polyglot slipped straight through to execution. The safe pattern is boring and effective: store uploads outside the web root, give them server-generated names, and serve them with a content type and a download disposition that guarantees the browser treats them as data. We test whether your app follows it.
Direct object access to uploaded files
Uploaded files often become URLs, and those URLs are frequently guessable or sequential. We test whether one user can reach another user’s uploaded documents by altering the path, which on a KYC or invoicing feature is a straightforward personal-data breach on top of the execution risks.
Cloud and third-party storage
Many apps push uploads to object storage or a processing service. That moves the risk without removing it. We check whether a pre-signed URL is over-permissive, whether a processing pipeline parses the file unsafely, and whether the bucket serving user content is configured to prevent inline execution.
Why manual testing beats a scanner
A scanner might upload a test file and note that the form accepted it. What it cannot reliably do is craft the polyglot that beats content sniffing, recognise that the stored file is reachable at a predictable URL, or confirm that the uploaded script actually executes. Those steps require a person who understands how the server processes and serves files. In our experience the difference between “the upload looks validated” and “here is a webshell running on your server” is exactly the manual work a tool skips, and that is what a file upload security testing engagement delivers.
Pricing
Pricing follows scope: how many upload features exist, how they are processed and stored, and whether the surrounding application is tested too. Here is the shape of a typical European engagement.
| Engagement | What’s included | Timeline | Price |
|---|---|---|---|
| Essential | Upload-focused test of a single application, core bypass and RCE checks on the main upload points, full report and free retest | 3–5 working days | from €2,500 |
| Standard | Application with several upload features and roles, SVG XXE, path traversal and storage-access testing, executive and technical report | 5–8 working days | €3,500–€8,000 |
| Advanced | Complex app with document processing pipelines, image conversion and third-party storage, deep bypass and attack-chaining | 8–12 working days | €8,000–€20,000 |
| Compliance add-on | Framework mapping and attestation letter for PCI DSS, ISO 27001, SOC 2 or GDPR | with any tier | from €800 |
| Custom / large estate | Several applications or a full environment, scoped to what you run | on scoping | custom |
Every engagement is fixed-price, quoted after a free 20-minute scoping call, with no hourly surprises and a retest included. Get a fixed quote
FAQ
How much does file upload security testing cost?
How long does the test take?
Can a file upload really lead to server compromise?
We only allow images. Are we safe?
Will testing fill our storage or break the feature?
Does this satisfy PCI DSS or ISO 27001?
Is a retest included?
Are the findings confidential?
Related services
Any application that lets users upload files, from avatars and CVs to invoices, KYC documents and imports, and especially platforms that process, convert or serve those files back to other users or store them alongside payment and personal data.
Security you can prove
The same standard on every engagement, big or small.
Evidence, not opinions
Every finding ships with a reproduction and proof of concept — no vague "maybe vulnerable".
Humans over scanners
Certified engineers find the logic flaws and chained attacks automated tools walk straight past.
Fixed price, free retest
You know the cost up front, and verifying the fix is part of the deal — not a second invoice.
Ready to lock this down?
Free scoping call, fixed price, free retest. Tell us what you're running and we'll take it from there — usually within one business day.
Tell us what you're running
Scoping is free. We reply within one business day, and under 30 minutes for active incidents.