Catégories
HackTheBox Machines Non classé

HTB{Networked}

Aujourd’hui, je me lance sur la commande Networked, classé facile sur HTB.

3 ports y sont ouverts: le port 22 ssh, 80 http. Un port y est fermé, le port HTTPS 443.

La page d’accueil ne nous montre rien d’intéressant. Je lance ffuf pour trouver des documents et chemins sur le site.

On y voit beaucoup de fichiers en php, et un dossier backup. Le dossier backup contient un fichier backup.tar. Je le télécharge et je l’extrait.

Je peux y voir les fichiers que nous avons trouvé via ffuf. Mais là nous pouvons y voir le code php.

Sur le code de la page upload.php, on peut y voir que le script php accepte les fichiers jpg, .png, .gif et .jpeg.

Le code n’accepte que les extensions d’image, mais il ne vérifie pas si une autre extension les précède. Ceci peut être exploité en ajoutant « .php » devant une extension valide, ce qui peut être exploitable, selon la configuration d’Apache.

J’ai une image jpg, je la copie et y ajoute un payload pour avoir un reverse shell. Je l’upload sur le site et je l’affiche via la page uploads.php

Et voila, j’ai un shell.

En regardant de plus près les fichiers du compte utilisateur, deux fichiers sont visibles et un en particulier crontab.guly

On y voit que le fichier check_attach.php y est lancé toutes les 3 minutes.

En regardant le fichier check_attach de plus près, je vois que celui ci est vulnérable. En effet, la ligne

exec("nohup /bin/rm -f $path$value > /dev/null 2>&1 &");

est vulnérable. La variable $value stocke le nom du fichier, mais n’est pas nettoyée par le script, ce qui signifie que nous pouvons injecter des commandes par le biais de noms de fichiers spéciaux. Par exemple, un fichier nommé  » ; whoami » donnera lieu à la commande :

nohup /bin/rm -f $path;whoami > /dev/null 2>&1 &

Je créé un fichier avec comme nom mon payload et j’ai un reverse shell.

Une fois le shell obtenu, je recherche un autre moyen d’élever mes privilèges. Je vois via la commande sudo -l que le fichier changename.sh est utilisable en sudo sans mot de passe.

Le script crée une configuration pour l’interface réseau guly0 et utilise « ifup guly0 » pour l’activer à la fin. L’entrée de l’utilisateur est validée, et seuls les caractères alphanumériques, les barres obliques ou les tirets sont autorisés. Les scripts de configuration réseau sur CentOS sont vulnérables à l’injection de commandes par le biais des valeurs d’attributs comme décrit ici. Cela est dû au fait que les scripts proviennent du service sous-jacent, ce qui entraîne l’exécution de tout ce qui suit un espace.
Nous pouvons exploiter cela en exécutant /bin/bash en tant que root.

Et voilà nous sommes root.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *