-
27/04/2017
-
30
-
76 bài viết
Thử tay nghề với CTF boot2root. Tại sao không?
Trong thời gian gần đây, dạng CTF boot2root ngày càng phổ biến. Khi lướt trên Tryhackme platform, mình có thấy một bài CTF cũng là dạng boot2root là 1 phần của Incognito 2.0 nên sẵn đây cũng là cơ hội cho các bạn hiểu thêm về dạng này và qua bài này thì có thêm cách thức để thực hiện pentest một box.
Nếu như bạn muốn thử sức trước thì đây là link lab.
Còn nếu như bạn stuck hoặc không biết bắt đầu như thế nào thì có thể đọc bài hướng dẫn giải của mình dưới đây nhé.
Let’s start now!!!
Sau khi bạn click start thì sẽ nhận được 1 IP sau 1 phút. IP của mình là 10.10.153.55.
Với việc chỉ có 1 IP thì nghĩ ngay đến nmap nhé. Scan nào.
Khai Thác Thông tin
Chúng ta sẽ chạy để xem box đang có những dịch vụ nào.
Sau khi chạy thì chúng ta có các service đang chạy trên box như sau
Port 22: OpenSSH.
Kiểm tra với searchsploit thì không có những lỗ hổng có thể giúp ta lấy shell mà chỉ tồn tại lỗ hổng cho phép chúng ta đoán username thôi.
Port 80: Apache 2.4.29
Đầu tiên để thu thập thông tin thì dùng nikto và gobuster.
Nikto:
Gobuster với wordlist mình mong muốn. Ở đây mình dùng common và medium wordlists.
Trường hợp bạn chưa có gobuster thì có thể sài dirb thay thế hoặc bạn có thể cài trên kali theo kali page.
Vì gobuster chạy cũng khá lâu nên luôn có những tham số có thể giúp chúng ta chạy nhanh hơn như tăng thread.
Trong quá trình chờ thì mình tiếp tục thu thập ở những port khác.
Port 139/445: samba smb.
Với Samba, dùng smbclient để thu thập thông tin. Kiểm tra xem có expose cái gì trong đó không?
Hoặc kiểm tra xem có lỗ hổng nào không
Hoặc tham khảo nhiều hơn ở đây.
Samba cũng không có gì đặc biệt.
Và đến port cuối cùng là rsync trước khi quay lại cổng 80.
Port 873: Rsync
Để kiểm tra version.
Ở đây có 2 share folders là Conf và All Confs. nhưng thử kết nối mà không có gì đặc biệt.
Thông qua việc search gg, chúng ta tìm thấy cách để list và download những file được share.
https://www.netspi.com/blog/technic...ting/linux-hacking-case-studies-part-1-rsync/
https://medium.com/@minimalist.ascent/enumerating-rsync-servers-with-examples-cc3718e8e2c0
Trong config có rất nhiều file. Thử download về.
Kiểm tra xem có gì đặc biệt không?
Webapp.ini
FootHold
Ở đây có vẻ như web đang chạy ở môi trường product và có tài khoản của user.
Ok !Bây giờ quay lại port 80 xem có gì đặc biệt.
Khi load page lên browser thì là trang default của apache.
Từ gobuster và nikto trước đó chúng ta có đường dẫn. /admin. Khi vào thì trả về 403 nhưng mà view source thì có hint.
Bởi edit webapp và dùng rsync để upload lên.
Sync file.
Sau đó reload lại admin page.
Với credentials trước đó. Thì mình có thể đăng nhập vào.
Khi kiểm tra người dùng tom thì hiện ra kết quả
Với vài payload kiểm tra thì ở đây là 1 dạng blind sql injection.Bạn có thể dùng 2 payload dưới để kiểm tra.
Hoặc có thể dùng union để đoán kết quả.
tom " union select 1,2,3 -- //
Chúng ta có thể dùng mysql để tạo shell:
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL Injection/MySQL Injection.md#mysql-write-a-shell
Hoặc dùng burp và lưu request to file và chạy sqlmap để check.
Đúng như kết quả ở trên
Thử với os-shell nào.
Cuối cùng cũng lấy được shell.
Bây h mình sẽ có chuyển qua persistent-shell.
Đầu tiên mình route all traffic qua burp.
Từ log burp chúng ta có thể thấy được là đã upload được shell..
Chuẩn bị 1 file php reverse shell từ pentestmonkey.
Download và chỉnh sửa host và port. Sau đó upload lên box.
Sau đó từ nc thì mình có thể lấy shell.
Ok vậy bước tiếp theo là mình cần leo quyền để đạt được root.
Privilege Escalation.
Thu thập rất nhiều thông tin từ manual nhưng không có cách nào để leo quyền nên mình quyết định dùng linpeas.
Từ kết quả cho thấy,.
Người dùng hiện tại có thể chạy tcpdump.
Dùng tcpdump để check.
Sau khi chạy. Đọc file tcp.out. Ở đó có chứa ssh private key.
Bây h copy private key và thử login với ssh.
Oh yeah cuối cùng cũng leo quyền thành công.
Nếu trong quá trình khai có vấn đề hoặc ý kiến nào thắc mắc thì bạn có thể đặt câu hỏi ở dưới nha.
Chúc các bạn thành công.
Happy hacking!!!
Nếu như bạn muốn thử sức trước thì đây là link lab.
Còn nếu như bạn stuck hoặc không biết bắt đầu như thế nào thì có thể đọc bài hướng dẫn giải của mình dưới đây nhé.
Let’s start now!!!
Sau khi bạn click start thì sẽ nhận được 1 IP sau 1 phút. IP của mình là 10.10.153.55.
Với việc chỉ có 1 IP thì nghĩ ngay đến nmap nhé. Scan nào.
Khai Thác Thông tin
Chúng ta sẽ chạy để xem box đang có những dịch vụ nào.
Sau khi chạy thì chúng ta có các service đang chạy trên box như sau
- Port 22: OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
- Port 80: Apache/2.4.29 (Ubuntu)
- Port 139/445: Samba smb
- Port 873: rsync (protocol version 21)
Port 22: OpenSSH.
Kiểm tra với searchsploit thì không có những lỗ hổng có thể giúp ta lấy shell mà chỉ tồn tại lỗ hổng cho phép chúng ta đoán username thôi.
Port 80: Apache 2.4.29
Đầu tiên để thu thập thông tin thì dùng nikto và gobuster.
Nikto:
Mã:
nikto -h 10.10.153.55 -Format txt –output nikto
Gobuster với wordlist mình mong muốn. Ở đây mình dùng common và medium wordlists.
Mã:
gobuster dir --url http://10.10.153.55 --wordlist /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
gobuster dir --url http://10.10.153.55 --wordlist /usr/share/dirb/wordlists/common.txt
Trường hợp bạn chưa có gobuster thì có thể sài dirb thay thế hoặc bạn có thể cài trên kali theo kali page.
Vì gobuster chạy cũng khá lâu nên luôn có những tham số có thể giúp chúng ta chạy nhanh hơn như tăng thread.
Trong quá trình chờ thì mình tiếp tục thu thập ở những port khác.
Port 139/445: samba smb.
Với Samba, dùng smbclient để thu thập thông tin. Kiểm tra xem có expose cái gì trong đó không?
Hoặc kiểm tra xem có lỗ hổng nào không
Mã:
nmap --script smb-vuln* -p139,445 -T4 -Pn 10.10.153.55
Hoặc tham khảo nhiều hơn ở đây.
Samba cũng không có gì đặc biệt.
Và đến port cuối cùng là rsync trước khi quay lại cổng 80.
Port 873: Rsync
Để kiểm tra version.
Ở đây có 2 share folders là Conf và All Confs. nhưng thử kết nối mà không có gì đặc biệt.
Thông qua việc search gg, chúng ta tìm thấy cách để list và download những file được share.
https://www.netspi.com/blog/technic...ting/linux-hacking-case-studies-part-1-rsync/
https://medium.com/@minimalist.ascent/enumerating-rsync-servers-with-examples-cc3718e8e2c0
Trong config có rất nhiều file. Thử download về.
Kiểm tra xem có gì đặc biệt không?
Webapp.ini
FootHold
Ở đây có vẻ như web đang chạy ở môi trường product và có tài khoản của user.
Ok !Bây giờ quay lại port 80 xem có gì đặc biệt.
Khi load page lên browser thì là trang default của apache.
Từ gobuster và nikto trước đó chúng ta có đường dẫn. /admin. Khi vào thì trả về 403 nhưng mà view source thì có hint.
Mã:
rsync webapp.ini 10.10.153.55::Conf/webapp.ini
Sau đó reload lại admin page.
Với credentials trước đó. Thì mình có thể đăng nhập vào.
Khi kiểm tra người dùng tom thì hiện ra kết quả
Với vài payload kiểm tra thì ở đây là 1 dạng blind sql injection.Bạn có thể dùng 2 payload dưới để kiểm tra.
Mã:
Tom” and 1=2 -- /
Mã:
Tom" and 1=1 -- /
Hoặc có thể dùng union để đoán kết quả.
tom " union select 1,2,3 -- //
Chúng ta có thể dùng mysql để tạo shell:
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL Injection/MySQL Injection.md#mysql-write-a-shell
Hoặc dùng burp và lưu request to file và chạy sqlmap để check.
Đúng như kết quả ở trên
Mã:
sqlmap -r req -p username --level=3 --risk=3 --random-agent
Thử với os-shell nào.
Mã:
sqlmap -r req -p username --level=3 --risk=3 --random-agent –os-shell
Cuối cùng cũng lấy được shell.
Bây h mình sẽ có chuyển qua persistent-shell.
Đầu tiên mình route all traffic qua burp.
Mã:
sqlmap -r req -p username --level=3 --risk=3 --random-agent –os-shell –proxy=’http://127.0.0.1:8080’
Từ log burp chúng ta có thể thấy được là đã upload được shell..
Chuẩn bị 1 file php reverse shell từ pentestmonkey.
Download và chỉnh sửa host và port. Sau đó upload lên box.
Sau đó từ nc thì mình có thể lấy shell.
Ok vậy bước tiếp theo là mình cần leo quyền để đạt được root.
Privilege Escalation.
Thu thập rất nhiều thông tin từ manual nhưng không có cách nào để leo quyền nên mình quyết định dùng linpeas.
Từ kết quả cho thấy,.
Người dùng hiện tại có thể chạy tcpdump.
Dùng tcpdump để check.
Mã:
tcpdump -i lo -A -n > tcp.out
Sau khi chạy. Đọc file tcp.out. Ở đó có chứa ssh private key.
Bây h copy private key và thử login với ssh.
Oh yeah cuối cùng cũng leo quyền thành công.
Nếu trong quá trình khai có vấn đề hoặc ý kiến nào thắc mắc thì bạn có thể đặt câu hỏi ở dưới nha.
Chúc các bạn thành công.
Happy hacking!!!
Chỉnh sửa lần cuối: