Présentation de la machine

Europa est une machine qui demande des compétences de recherches et quelques connaissances dans les failles de sécurité PHP. Le point difficile est l'obtention d'un accès initial.

Auteur: ch4p
Difficulté: Moyen

Enumération des services

Pour changer, je commence par un scan des ports ouverts.

nmap -sC -sV -p- 10.10.10.22

Le scan de ports nous indique 3 services disponible. Une autre information importante est la présence d'un certificat SSL pour les noms de domaines "www.europacorp.htb" et "admin-portal.europacorp.htb".

J'ai donc mis à jour le fichier /etc/hosts de ma machine.

Par habitude je laisse de coté le port 22 pour l'instant. Le port 80 nous affiche la page par défault d'une installation Apache, ça semble être aussi une mauvaise piste. Je vais donc me concentrer sur le port SSL.

Une fois la bonne adresse renseignée, il ne reste plus qu'à accepter le certifcat autosigné pour accéder à la page d'autentification de "admin-portal.europacorp.htb"

En examinant ce formulaire on se rend compte qu'il réagit étrangement à une tentative d'injection SQL.

Si on remplace le mot de passe par un champ vide, on obtient le hash MD5 d'une chaine de caractère vide.

Avec ce second exemple il devient clair que le paramètre "password" est hashé avant d'être traité par la base de donnée.

Cela implique que pour faire une injection SQL le seul paramètre utilisable est le champ "email".

Pour simplifier le process je vais utiliser sqlmap.

Je vais commencer par énumérer les databases disponibles.

sqlmap -u https://admin-portal.europacorp.htb --data="email=something&password=something" --dbs

2 databases disponibles... Concentrons nous sur la plus intéressante.

sqlmap -u https://admin-portal.europacorp.htb --data="email=something&password=something" -D admin --tables
La base ne contient qu'une seule table.

Allons voir le contenu de cette table.

sqlmap -u https://admin-portal.europacorp.htb --data="email=something&password=something" -D admin -T users --dump

Cette table contient 2 lignes, avec le même hash de password.
Un simple tour sur un outil en ligne permet de récupérer le mot de passe original.

Une fois le couple login-mot passe entré on accède à une interface admin!

Ce site web est assez simple. Il contient un outil de génération de configuration. Allons explorer d'avantage cet outil.

En observant les requêtes à l'aide de Burp, on se rend compte que la regexp est fabriquée coté client.

Prenons le temps d'analyser la situation.
Tout ce qu'on à c'est un outil qui cherche et remplace une chaine de charactère. Cet outil utilise une regexp qui est construite coté client, ce qui signifie qu'elle peut être modifiée à volonté.

Il doit donc exister un exploit avec une fonction de type search and replace que l'on puisse utiliser.

Une rapide recherche Internet nous conforte sur cette piste

Pour adapater l'exemple à notre cas il faut remplacer le pattern par /^(.*)/e. Ensuite il faut remplacer le paramètre ipaddress par la fonction à excuter (içi phpinfo();). Le paramètre text peut être remplacer afin de rendre la lecture plus simple, il n'a pas d'impacte sur cet exploit.

NB: ne pas oublier le /e ni le point virgule à la fin de la commande à éxecuter, sinon ça ne fonctionnera pas.

exécution d'un phpinfo();

Maintenant qu'on peut utiliser cet outil pour exécuter des commandes, essayons d'obtenir un shell.

Et tada ! un shell tout beau, tout propre, avec le user.txt en prime !

Privesc

Comme souvent pour la partie de privesc, je vais utiliser un script LinEnum.sh.

Oh ! Un cronjob

Une inspection rapide du cronjob montre qu'il tente d'exécuter un script shell qui n'existe pas (encore).

Je vais donc créer le script manquant et le charger de me donner le mot de passe root.

echo "cat /root/root.txt > /tmp/root.txt" > /var/www/cmd/logcleared.sh

chmod +x /var/www/cmd/logcleared.sh
Il ne reste plus qu'a attendre l'exécution du script et voilà !

Résumé

Un petit résumé graphique

Social media stuff

RootMe: www.root-me.org/_AGS
HackTheBox: https://www.hackthebox.eu/home/users/profile/54394
Twitter: @GhostAgs

If you appreciate my work please consider make a donation
Tipeee: https://fr.tipeee.com/ags-syndrome