Craft2

odt responder ntlm file write WerTrigger phpmyadmin

  • Nom machine : Craft2

  • Difficulté : Difficile

  • OS : Windows

Enumération

NMAP

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-21 15:06 EDT
Nmap scan report for 192.168.228.188
Host is up (0.034s latency).
Not shown: 65531 filtered tcp ports (no-response)
PORT      STATE SERVICE       VERSION
80/tcp    open  http          Apache httpd 2.4.48 ((Win64) OpenSSL/1.1.1k PHP/8.0.7)
|_http-title: Craft
|_http-server-header: Apache/2.4.48 (Win64) OpenSSL/1.1.1k PHP/8.0.7
135/tcp   open  msrpc         Microsoft Windows RPC
445/tcp   open  microsoft-ds?
49666/tcp open  msrpc         Microsoft Windows RPC
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

HTTP (80)

Nous allons commencer par analyser la page. Dans le menu on ne peut cliquer sur "admin login", on nous indique c'est encore en construction. Tout en bas on voit une adresse mail : admin@craft.offsec. Nous allons ajouter me nom de domaine dans /etc/hosts

Juste au-dessus, nous pouvons voir que nous pouvons uploader un fichier, mais seulement ODT. Si nous fournissons bien un fichier ODT :

Cela nous donne un bon indice sur la marche à suivre...

Accès initial

Notre payload :

Il faut lancer un serveur python et avoir powercat.ps1 sur sa machine. Nous allons ensuite encoder le payload en base64. Nous allons ensuite executé ce script python.

Nous créeons notre macro sur libreoffice :

Nous avons réessayé avec un autre port, mais sans succès.

Nous avons trouvé un autre moyen d'exploiter ces fichiers odt :

https://github.com/octodi/CVE-2018-10583

On lance Responder puis on upload le fichier odt précédement crée.

Nous obtenons le hash NTLM de thecybergeek

thecybergeek:winniethepooh

Nous pouvons lire et écrire dans le dossier WebApp. Nous allons donc nous y connecter et y transférer un shell.php qui nous permettra d'exécuter des commandes.

Enumérer les dossiers nous permet de savoir où nous nous trouvons.

Nous avons ajouté nc.exe à la machine puis utiliser netcat pour obtenir un reverse shell.

Elévation des privilèges

Nous allons tout d'abord nous connecter à l'utilisateur précédement trouvé grâce à l'exécutable : RunasCs.exe. Nous le téléchargons tout d'abord sur la machine puis l'exécutons.

Nous allons exécuter winpeas

On peut voir qu'il y a un service mySQL et Apache. Nous allons effectuer une redirection de port afin d'avoir accès à phpmyadmin avec chisel. Nous allons le télécharger sur la cible.

Nous allons voir quels droits nous avons sur un fichier lorsqu'un fait une requête SQL.

Nous allons voir comment obtenir un shell.

Il y 4 méthodes différentes. Nous allons utiliser WerTrigger.

Nous allons cloner le depôt github puis transférer les fichiers à la cible, Report.wer et WerTrigger.exe doivent bien être dans le même directoire (ici C:\xampp\htdocs), soit via smb soit via certutil/iwr.

Nous allons profiter de nos droits pour écrire phoneinfo.dll dans C:\Windows\System32

Nous pouvons exécuter l'exploit !

Pas de retour. Nous allons essayer différement.

Nous allons tester de générer un reverse shell directement avec le fichier phoneinfo.dll.

Nous avons réinitialisé la machine et recommencé les étapes précédentes, en remplacant le fichier phoneinfo.dll par celui que nous venons de générer. On exécute l'exploit... Ca marche !

Nous sommes bien nt authory\system.

En regardant le code source sur GitHub, nous pouvons voir que le fichier phoneinfo.dll ouvre le port 1337, peut-être est-ce cela qui a fait que cela ne fonctionne pas.

Mis à jour