[ハンズオン]Kioptrix level1 Walkthrough


[以前書いた記事](https://qiita.com/rui-watanabe/items/5ac828d29c6c5915c0a1)では脆弱性サーバーを提供しているVulnHubのpWnOS:2.0にKali Linuxで攻撃をしかけ、root権限を取得する流れについてまとめました。

今回も同じくVulnHubの、**Kioptrix: Level1**という脆弱性サーバーに攻撃を仕掛け、root権限からEmailの情報を取得する方法についてまとめていきたいと思います。

流れとしては、以下のような手順になります。

**nmap**でポートスキャンとサービスのバージョン取得→動いているサービスから攻撃できる**エクスプロイトコードを探す**→**エクスプロイトコードを実行し、**root権限でEmail情報の記載ファイルを探す。

#初期設定
まずはVulnHubの[Kioptrix level1](https://www.vulnhub.com/entry/kioptrix-level-1-1,22/)からイメージをダウンロードしてきます。

その後Virtual Boxを立ち上げ、VulnHubの情報を参考してLinuxサーバーを設定し(最小スペックでも可)、新規作成。

そして、設定→ストレージ→ハードディスクの追加を押し、先ほどダウンロードしたKioptrix Level 1.vmdkを設定してください。

次にネットワークの設定をしていきます。

Kioptrix: Level1はIPアドレスが動的に変わるDHCPになっているので、Kali Linuxと同じネットワーク内に設定するために、設定→ネットワーク→NATから**NATネットワーク**(Kali Linuxと同じネットワーク名を選択）に変更をしてください。

これで、初期設定は完了です。

最後に、Kali Linux側のIPアドレスとKioptrix側のIPアドレスを**nmapコマンド**を使って確認します。

Kali LinuxとKioptrixを立ち上げ、Kali Linux側で以下の同ネットワーク範囲で動いているサーバーを検索するコマンド打ってください。

最初にKali Linux側で動いているアドレスを確認します。

```
root@kali:~# ip a
```

NATネットワーク範囲はデフォルトでは10.0.2.0/24なので、**Kali Linux側では10.0.2.5**でサーバーが動いていることが確認できました。


次に同ネットワーク範囲内で動いているサーバを、nmapの-sPオプションでPingScanningをして確認。

```
root@kali:~# nmap -sP 10.0.2.0/24
```

Virtual Boxで2つのサーバーを同NATネットワークで立ち上げている場合、10.0.2.5ではない、右側に(Oracle VirtualBox virtual NIC)と記載されているIPアドレスが、KioptrixのIPアドレスとなります。

ここでは、**Kioptrixが10.0.2.15**というIPアドレスで動いていることが確認できました。


#nmapでポートスキャン・バージョン取得

まずはnmapで**空いているポート**や、**動いているサービスのバージョン**からどこに対して攻撃をしかけられるか調査していきます。

今回はnmapに-sVオプションをつけて、情報を取得しました。

```
root@kali:~# nmap -sV 10.0.2.15
```

![demo](https://gyazo.com/dde8e8b71ee39b366b52e7d258d696a0/raw)


以下が取得できた情報です。

- 開放ポート22,80,111,139,443,1024
- OpenSSH 2.9p2
- Apache 1.3.20
- mod_ssl 2.8.4
- OpenSSL 0.9.6b


#サービスのバージョンから攻撃するエクスプロイトコード実行

先ほどnmapで取得した各サービスのバージョンから、エクスプロイトコードを実行できるものがあるか、**searchsploitコマンド**で調べていきます。

各バージョンにおいて検索した結果、**OpenSSL 2.9p2**において、リモート実行できる/usr/share/exploitdb/exploits/unix/remote/764.cというエクスプロイトコードを発見しました。

```
root@kali:~# searchsploit OpenSSL
```

![demo](https://gyazo.com/f5649e8abcedbd601969258b7dcc054b/raw)

https://www.exploit-db.com/exploits/764

このエクスプロイトコードを、root下にコピーします。

```
root@kali:~# cp /usr/share/exploitdb/exploits/unix/remote/764.c 764.c
```

764.cはC言語なのでgccコマンドを使って、**コンパイル**する必要があります。

まずは、コンパイルのためにlibssl-devパッケージをインストール。

```
root@kali:~# apt-get install libssl-dev
```

その後実際にコンパイルして、このエクスプロイトコードの名称であるOpenFuckという名前のファイルに保存。

コンパイルには、OpenSSLライブラリを使用しているため-lcryptoのオプションを付けています。

```
root@kali:~# gcc -o OpenFuck 764.c -lcrypto
```

ただ、このエクスプロイトコードについてはコンパイルエラーが出てしまいました。

調べた結果バージョンが古いらしく、764.cのコードを修正する必要がありました。

そこで、ソースコードを一部書き換えます。

書き換える方法は以下のサイトに記載。
https://www.hypn.za.net/blog/2017/08/27/compiling-exploit-764-c-in-2017/

コードを書き換えたら、再度上記のコマンドでコンパイル。

コンパイルがエラーを出さず完了したら、OpenFuckを実行してみます。

```
root@kali:~# ./OpenFuck
```

実行結果から0x6aと0x6bが、今回の**Apache: 1.3.20のバージョンに対してリモート使用できる**ことがわかりました。

![demo](https://gyazo.com/f55f5fa5a285b4ffdce74d52cfc64081/raw)


実際に確かめたところ、**0x6b**の方でシェルに入れることも確認できました。

```
root@kali:~# ./OpenFuck 0x6b 10.0.2.15
```

![demo](https://gyazo.com/3bb631b6148fbbe44c9236427757f322/raw)

#Email情報の記載ファイルを探す

最後にリモートのshell内で実際に、Email情報がどこにあるのか確認していきます。

まずは、自分が誰なのか（どの権限なのか)を確認。

```
whoami
root
```

rootと返ってきたので、**root権限**であることが確認できました。

そこでEmail情報の取得のため、mailという名前がついたディレクトリやファイルを、各root下のディレクトリで確かめていきます。

その結果、var/下にいくつか該当しそうなフォルダやファイルを見つけることができます。

```
cd /var
find ./ -name 'mail'
```

実際にファイルを確認する中で/var/mail/root下のファイルに、以下のようなメッセージを発見。

![demo](https://gyazo.com/bf68fe73c68f19dc2ec6da6a668c2177/raw)

このメッセージから、目的であったEmail情報の取得が完了したことがわかりました。

以上が、**Kioptrix Level1のWalkthrough**でした。

#参考URL

https://driasandlions55.hatenablog.com/entry/2019/01/30/162321
https://qiita.com/v_avenger/items/de123fcd7a5686b7bc09
https://www.hypn.za.net/blog/2017/08/27/compiling-exploit-764-c-in-2017/
https://qiita.com/pokari_dz/items/0f14a21e3ca3df025d21
https://orebibou.com/2015/06/nmap%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E8%A6%9A%E3%81%88%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84%E4%BD%BF%E3%81%84%E6%96%B911%E5%80%8B/
https://sehermitage.web.fc2.com/program/linux_devlp.html