Pilgrimage - HackTheBox
Noob 的 HackTheBox 之旅
环境
VPS:43.134.44.115
Mac:localhost
Burpsuite
端口转发
- VPS通过OpenVPN连接HacktheBox
- Mac通过端口转发将7080端口转发到VPS
ssh -qTfnN -D 7080 user@43.134.44.115 - 浏览器通过Burpsuite 将数据代理到7080端口
这样就可以在本地的浏览器上通过Burpsuite流畅的测HacktheBox的靶机了

getShell过程
先体验一下功能,从PHPSESSID看后端语言应该是PHP
上传功能

试了一下就算上传PHP后缀也会被处理成jpeg文件

登录注册功能

目录扫描

发现git泄漏,使用GitHack下载项目代码

代码审计
打包代码下载到本地进行代码审计
tar -zcvf pilgrimage.zip pilgrimage.htb
登录和注册功能两个参数都使用了预编译,注入无望


上传功能这里使用了magick去处理图片,并且会将后缀名设置成jpeg和png。上传无望

imagemagick这东西之前有著名的RCE漏洞,而且git泄漏这里还有magick这个文件。这里会不会存在nday呢

通过执行命令查到版本号,我们可以去exploitdb查一下有没有可利用的nday


有个任意文件读取可以用
1 | |
CVE-2022-44268
研究下POC的用法:

先通过项目给的工具指定要读取的文件,然后将生成image.png交给imageMagick处理,这一步交给存在漏洞的Web服务器去触发漏洞读取指定文件,然后将图片下载回来使用identify输出读取到的文件内容

identify -verbose oout.png
输出读取到的内容

这里就获取到了 /etc/passwd 文件内容


只有emily和root用户是可以登录到bash的
这里想到尝试一下爆破,直接爆破root应该不可能,但可以试一下emily
1 | |

然后发现好像不太适合,爆破速度特别慢。想了一下公共靶机应该也不希望用户一起爆破
那还是回到任意文件读取这个漏洞吧
写个脚本简化流程,研究了一下identify命令。如果只需要Raw profile type部分的内容,需要执行:
identify -format "%[Raw profile type]" -verbose oout.png
链接:https://www.imagemagick.org/script/escape.php
1 | |
但这里又不知道应该读哪些文件好了,想了挺久会想起Web服务用的是sqlite的数据库。我们可以把sqlite数据库文件读取,看看数据里面能不能发现什么

下载数据库文件

用命令将文件保存后处理一下,主要是删除无用字符(b’)
1 | |
学习一下sqlite命令:https://www.runoob.com/sqlite/sqlite-commands.html
从数据库中可以查到用户emily和密码,emily之前在 /etc/passwd文件里见到过了,我直接ssh


登录成功,是个普通用户,拿到了user.txt 中的user flag。下一步提权

提权
内核很新,sudo和SUID也没发现可利用的

直接上提权脚本看看,先看看查CVE的linux-exploit-suggester。对比一下内核版本,没一个靠谱的…

再看看PEASS,这个脚本集成了非常多Linux提权脚本
在观察进程的时候发现root运行了malwarescan.sh脚本

看看脚本里都是什么内容:

通过inotifywait创建了一个关于/var/www/pilgrimage.htb/shrunk/ 的监控,使用binwalk提取文件内容。看起来像是个简单的WAF,不允许文件内存在blacklist中的字符串
binwalk也有个著名的RCE漏洞(CVE-2022-4510),看看版本正好可以使用,美滋滋


输入参数运行脚本,就会生成binwalk_exploit.png,再上传到var/www/pilgrimage.htb/shrunk/目录让root运行binwalk触发即可



拿下!从Noob进化成Script Kiddie
