Combien de fois le bon vieux WinRAR vient à notre aide! De temps en temps, il déballe soigneusement et généreusement nos archives et les replie. Mais nous avons vieilli, et maintenant je veux essayer quelque chose de plus intéressant, non? Et à ce moment-là, ils ont trouvé une vulnérabilité de 19 ans qui permet de sauvegarder les logiciels malveillants extraits des archives vers un emplacement arbitraire. Voyons comment cela peut être fait, en utilisant l'exemple de la tâche numéro 9 de l'
étape en ligne de NeoQUEST-2019 .
Selon la légende, nous avons deux serveurs. Le premier serveur (http://213.170.100.213:800/) vous permet d'envoyer un cadeau à Pandora, qui aime déballer tous les objets non identifiés qui ont attiré son attention. Le format «cadeau» est connu: le serveur ne télécharge que des archives rar. Téléchargez une archive rar arbitraire. En réponse, nous voyons ce qui suit:
Il est peu probable que Pandora s'intéresse à nos archives. Essayons d'en savoir un peu plus sur le serveur en utilisant nmap:
Maintenant, nous savons que le premier serveur:
- permet de charger des archives rar;
- élevé sur Windows.
Win + rar = WinRar! Probablement, les archives sont traitées par cet archiveur, dans lequel (plus précisément - dans la bibliothèque UNACEV2.DLL) ils ont trouvé une vulnérabilité qui existe depuis 19 ans. Ce "trou" vous permet de décompresser le contenu de l'archive dans un répertoire arbitraire, quel que soit l'endroit où l'utilisateur extrait les fichiers. Nous trouvons ici une description détaillée du mécanisme d'exploitation de la vulnérabilité. Nous procédons à la production de l'archive, qui
marche seule et décide par elle-même où la déballer.
Tout d'abord, procurez-vous l'utilitaire WinAceArchiver. Selon les instructions données sur le lien ci-dessus, nous créons une archive primitive contenant le fichier hello.txt. Dans WinAceArchiver, cliquez sur le bouton Créer, dans l'onglet Options, définissez Compression sur Store, puis revenez à l'onglet Sélection, sélectionnez le fichier hello.txt, spécifiez le chemin pour enregistrer notre archive, et surtout! - définissez l'option "stocker le chemin complet":
Ensuite, cliquez sur le bouton "Ajouter" et récupérez l'archive Hello.ace. Reste à ajuster légèrement le chemin et à corriger la somme de contrôle. N'importe quel éditeur binaire et script
acefile.py nous aidera avec cela, qui calculera utilement les valeurs réelles par lui-même.
Pour exploiter la vulnérabilité, vous devez ajouter un nom de volume avant le chemin absolu du fichier, qui sera supprimé par l'archiveur. Ensuite, le reste du chemin sera considéré comme un parent «sûr». Ouvrez donc l'éditeur et modifiez le chemin pour qu'il commence par
C: \ C: \ .
C'était:
C'est devenu:
Vérifiez maintenant les sommes de contrôle à l'aide du script acefile.py:
Corrigez la valeur au courant:
Il ne reste plus qu'à renommer notre archive en Hello.rar. C'est fait. Vérifiez comment Pandore un tel cadeau?
Super! Les attentes coïncidaient avec la réalité et WinRar a traité l'archive exactement comme nous en avions besoin. Reste à savoir une chose: de quelle voie avons-nous besoin?
Selon la légende, nous savons que les trésors peuvent être "visualisés" sur le deuxième serveur (http://213.170.100.213:900/). Comment est-ce le plus facile à faire? Bien sûr, en exécutant votre script php, qui produira, par exemple, la liste du répertoire racine du serveur. Nous confirmons notre supposition:
Génial, le serveur est prêt à exécuter notre script php! Il est temps de savoir exactement où mettre ce script. Jusqu'à présent, nous savons que le serveur fonctionne sous Windows - par conséquent, le chemin commence probablement par
C: \ . Et alors? En savoir un peu plus sur le serveur au trésor.
Sur le serveur nginx est levé. Certes, l'environnement de Pandora suit le dernier mot du progrès technologique (dans tout ce qui ne concerne pas les archiveurs) et utilise la dernière version de nginx, qui est 1.15.9 (vous pouvez vérifier
ici ). Il reste à ajouter le répertoire racine du serveur spécifié dans le fichier de configuration nginx par défaut:
Le résultat est le suivant:
C: \ nginx-1.15.9 \ html . Que répondra Pandora cette fois?
L'accès au répertoire est interdit ... Mais on ne pouvait pas se tromper! Nous sommes définitivement sur la bonne voie, car l'accès est refusé, mais le répertoire existe. Il y a probablement quelque chose que nous ne savons pas encore. Nous continuons à collecter des informations sur le serveur à l'aide du scanner d'annuaire:
Ouais, ça y est. Le répertoire admin / semble prometteur. Essayons d'envoyer à Pandore une archive ace, dans laquelle
C: \ nginx-1.15.9 \ html \ admin agit comme un chemin absolu:
Succès! Enfin, nous exécutons notre script dans lequel le répertoire racine du serveur est répertorié:
213.170.100.213 : 800 / admin / test34852ED2-8996-4F81-A919-30B6FE9F03AB.php . Le script peut ressembler à ceci:
<?php if ($handle = opendir('C:\nginx-1.15.9\html')) { while (false !== ($entry = readdir($handle))) { if ($entry != "." && $entry != "..") { echo "$entry <br>"; } } closedir($handle); } ?>
Le résultat est le suivant:
Eureka! Pandorica! De même, voyons quel genre de "trésor"
pandorica / est lourd et voyons le
key.txt tant
attendu , qui n'est plus
difficile à lire. C'est fait!
Dans un avenir proche, des articles seront publiés avec une analyse des différentes tâches restantes. Et bientôt NeoQUEST 2019 aura lieu! Toutes les actualités - sur
le site de l' événement, ne manquez pas!