TryHackMe(THM):Inclusion

目次

Task 1 Deploy

Virtual Boxを実行して接続する

Task 2 Root It

ファイルインクルージョン(File Inclusion)は、Webサーバ上のデータに対し入力検証の不備を突いて不正なスクリプトを挿入する攻撃手法である。

RFIは不正なスクリプトをサーバに挿入し、ターゲットのページを介して悪意のあるコードを実行させることで、サーバ側はもちろん、クライアント側にも被害を及ぼすことになる。

LFIは、ターゲットのサーバ上のファイルに対して、不正なスクリプトを挿入しデフォルトファイル名の変更、データのアップロード/ダウンロードの実行等やりたい放題ができる。

user flag

まずnmapを実行

# nmap -sV -sC <$IP>

f:id:akebono-haze:20210314165110p:plain

22番(SSH)と80番(HTTP)の2ポートが解放されているので、まずブラウザでアクセスしてみる。

f:id:akebono-haze:20210314165737p:plain

普通のWebサイトに見える。3つのボタンがありそれぞれ押下すると、それぞれの説明が書いてある。

時間のある人は内容を確認してください。(自分も!)

ほかに隠れたディレクトリがあるか確認するためgobusterコマンドを実行してみる。

# gobuster dir -u http://<$IP> -w  /usr/share/dirb/wordlists/common.txt

f:id:akebono-haze:20210314171019p:plain

特に真新しいディレクトリは見つからず...

今回は質問文にもあるように真ん中の説明を読むと、RFIは不正なスクリプトをサーバに挿入し、ターゲットのページを介して悪意のあるコードを実行させることで、サーバ側はもちろん、クライアント側にも被害を及ぼすことになる。

先人の知恵を拝借する。

3つのボタンを押下すると、URLの「name」の後ろが変更されている。 http://<$IP>/article?name=<ボタン名>

wfuzzを使ってみる。

$ wfuzz -c -z file,/usr/share/wfuzz/wordlist/vulns/dirTraversal-nix.txt --filter "c=200" http://<$IP>/article?name=FUZZ

オプションとして

-z : リクエストの中でFUZZを置き換えるものを指定

f:id:akebono-haze:20210314165953p:plain

../../../etc/passwdをURLに追加してみる../../../etc/passwdをURLに追加してみる http://<$IP>/article?name=../../../etc/passwd

f:id:akebono-haze:20210314171132p:plain

「/etc/passwd」ファイルが表示された。

ファイルが表示された [Ctrl]+[U]を押下すると、ページのコードが表示されて見やすくなった。

ブラウザの下のほうにユーザ名とパスワードが表示されている。

f:id:akebono-haze:20210314171245p:plain

別のターミナルを起動してsshで接続してみる。

f:id:akebono-haze:20210314171346p:plain

先ほど表示されたユーザ名とパスワードを入力すると入ることができた。

 現在のディレクトリのリストを表示させるとuser.txtファイルがあるので確認。

f:id:akebono-haze:20210314171539p:plain


root flag

先ほど、ブラウザのURLでディレクトリトラバーサルが使たので、同じように「/root/root.txt」を入力してみると、なんと表示された。

f:id:akebono-haze:20210314171740p:plain

 

完了!