La solution de travail avec pwnable.kr 08 est leg et 10 est shellshock. Assembleur ARM. Vulnérabilité Bash

image

Dans cet article, nous rappelons la syntaxe de l'assembleur ARM, traitons de la vulnérabilité shellshock, et résolvons également les 8ème et 10ème tâches du site pwnable.kr .

Information organisationnelle
Surtout pour ceux qui veulent apprendre quelque chose de nouveau et se développer dans l'un des domaines de l'information et de la sécurité informatique, j'écrirai et parlerai des catégories suivantes:

  • PWN;
  • cryptographie (Crypto);
  • technologies de réseau (réseau);
  • reverse (Reverse Engineering);
  • stéganographie (Stegano);
  • recherche et exploitation des vulnérabilités WEB.

En plus de cela, je partagerai mon expérience en criminalistique informatique, analyse de logiciels malveillants et micrologiciels, attaques sur les réseaux sans fil et réseaux locaux, réalisation de pentests et écriture d'exploits.

Afin que vous puissiez vous renseigner sur les nouveaux articles, logiciels et autres informations, j'ai créé une chaîne dans Telegram et un groupe pour discuter de tout problème dans le domaine de l'ICD. Aussi, je considérerai personnellement vos demandes, questions, suggestions et recommandations personnelles et répondrai à tout le monde .

Toutes les informations sont fournies à des fins éducatives uniquement. L'auteur de ce document n'assume aucune responsabilité pour tout dommage causé à quelqu'un du fait de l'utilisation des connaissances et des méthodes obtenues à la suite de l'étude de ce document.

Solution de quête de jambe


Nous cliquons sur la première icône avec la jambe de signature, et on nous dit que nous devons nous connecter via SSH avec le mot de passe invité. Ils fournissent également du code source en C et assembleur.

image

Téléchargeons les deux fichiers et trions le code source en C. Par langage d'assemblage, on peut dire qu'il utilise la syntaxe ARM. A propos de l'assembleur ARM sur Habré a écrit ici et ici .

image

Dans la fonction main (), un nombre est reçu de l'utilisateur et comparé à la somme des résultats des trois fonctions key (). Trions-les dans l'ordre.

image

Ainsi, la valeur du registre PC est placée dans le registre R3. Dans ARM assembler, le registre PC contient l'adresse de la prochaine instruction à exécuter. Nous regardons le code démonté.

image

Ainsi, la fonction key1 () renverra la valeur 0x8ce4. Analysons la fonction key2 ().

image

0x8d08 est placé dans R3, qui est ensuite incrémenté de 4 et écrit dans le registre R0. Autrement dit, key2 () renverra 0x8d0c. Considérez key3 ().

image

Par analogie avec la première fonction, nous concluons que key3 () retournera une valeur du registre LR. LR contient l'adresse de retour de la fonction. Voyons où la fonction est appelée et prenons l'adresse suivante.

image

La fonction key3 () renverra 0x8d80. Connectez-vous via SSH et entrez la somme des trois nombres trouvés dans le programme.

image

image

Nous remettons le drapeau et obtenons deux points.

image

Shellshock aka Bashdoor


Shellshock (Bashdoor) est une vulnérabilité logicielle découverte dans le programme GNU Bash qui permet d'exécuter des commandes arbitraires à la réception de certaines valeurs non standard de variables d'environnement. La vulnérabilité a reçu le numéro CVE-2014-6271.

Sur les systèmes d'exploitation de type Unix, chaque programme a des variables d'environnement. Le processus enfant hérite du parent une liste de variables d'environnement. En plus des variables d'environnement, bash maintient également une liste interne de fonctions - des scripts nommés qui peuvent être appelés à partir d'un script exécutable. Lors de l'exécution de scripts à partir d'autres scripts (parents), il est possible d'exporter les valeurs des variables d'environnement et des définitions de fonction existantes. Les définitions de fonction sont exportées en les codant sous la forme de nouvelles variables d'environnement d'un format spécial, en commençant par des crochets vides «()», suivis de la définition de la fonction sous forme de chaîne. Les nouvelles instances bash à leur démarrage analysent toutes les variables d'environnement, détectant ce format et le reconvertissant à la définition d'une fonction interne. Ainsi, si un attaquant a la possibilité de soumettre une variable d'environnement arbitraire pour exécuter bash, alors la possibilité d'exécuter des commandes arbitraires apparaît.

L'exemple suivant imprime le texte VULN.

env x='() { : ; }; echo “VULN”' bash -c “echo text” 

Puisque lors de l'exécution de la commande «echo text», la définition de fonction contenue dans la variable d'environnement x sera chargée et la commande «echo« VULN »» sera exécutée avec elle.

Solution de travail Shellshock


Nous cliquons sur la première icône avec le shellshock de signature, et on nous dit que nous devons nous connecter via SSH avec le mot de passe guest.

image

Une fois connecté, nous voyons la bannière correspondante.

image

Voyons quels fichiers se trouvent sur le serveur, ainsi que les droits dont nous disposons.

image

Voyons le résultat du code.

image

La ligne appelant la fonction système est intéressante. Sur la base du nom, nous supposons que bash, qui est à côté du programme et appelé depuis le programme, est vulnérable. Par analogie avec l'attaque décrite dans l'article, nous exécutons la commande pour lire l'indicateur.

 /bin/cat flag 

Pour ce faire, nous définissons une fonction dans la variable d'environnement où nous plaçons cette commande. Et puis exécutez le programme.

 export x="() { :; }; /bin/cat flag;" 

image

Nous remettons le drapeau et obtenons un point de plus. Rendez-vous dans le prochain article.

Nous sommes dans un canal de télégramme: un canal dans Telegram .

Source: https://habr.com/ru/post/fr461269/


All Articles