VulnHub靶场 Chronos
进行二层发现
发现目标主机为 192.168.135.105
,进行端口扫描
发现目标主机上开放 80 端口,访问目标端口 HTTP 服务
没啥东西,尝试目录扫描,也没出货。查看源码
这里存在一段 JS,不过有一些混淆。不过这里有一个明文的 URL
这里端口是 8000 端口,而且我们在进行端口扫描的时候,也发现了目标主机上开放了 8000 端口。而这个域名 chronos.local
,可能就是靶机。我们可以添加个 hosts 试试。然后再刷新页面
页面发生了变化,我们直接访问 http://chronos.local:8000
。不过在 windows 上经过测试,需要添加 UA 头,值为 Chronos
。再次访问,得到如下结果
没啥东西了,重点应该就是这个 4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL
,尝试解一下
那么他是怎么输出的呢?
结果和我们页面返回的一样。那么我们猜测后端其实就是执行了一个 date 命令,那么利用管道符就可以执行目标命令
重放进行尝试
得到 ls 命令结果,命令执行成功。使用 nc 进行反弹,失败,使用 MSF,成功
一番找,在 /opt/chronos-v2/backend
下发现个 package.json
这里有一些 chronos-v2
引用的库,这里有个 express-fileupload
,该库存在 JS 原型污染,并且在服务端,必要条件 parseNested
为 True 也存在
exp 如下
注意,由于是 server.js
下存在这个漏洞,它的监听端口是 127.0.0.1:8080
,所以不要搞错 IP 端口。
把文件传到 /tmp
下,运行,即可得到反弹 shell
但是不是 root 权限,我们使用 sudo -l
查看
可以看到,/usr/local/bin/node
有 root 权限。使用 node 进行提权
然后再传 MSF 马,得到 root 权限