freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

burpsuite配合mitmproxy实现加解密数据
烽火戏诸侯tyq 2024-06-20 12:13:41 81549

1. 实现原理

Burpsutie 通过上游代理将请求转发给mitmproxy代理,mitmproxy通过加、解密脚本实现对数据的加、解密后,将请求转发给服务器


2. 实现目标

  • 可对请求的数据加、解密
  • 可对响应的数据加、解密

3. Mitmproxy 环境安装

pip install mitmproxy

4. 环境配置

  • mitmproxy启动命令

方式1:mitmproxy.exe -p 8888 -s md5.py

方式2:mitmweb.exe -p 8888 -s md5.py

说明:-p 指定监听端口,-s 指定加载脚本,也就是加、解密的脚本

  • burpsuite配置upsteream proxy servers

配置上游代理,mitmproxy代理的地址及端口

1718856633_6673abb9ccc4dd1bd7f8b.png!small?1718856635119



5. MD5加密实例


请求包:

POST /login_check.php HTTP/1.1

Host: 127.0.0.1

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0

Accept: */*

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding: gzip, deflate, br

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

X-Requested-With: XMLHttpRequest

Content-Length: 60

Origin: http://127.0.0.1

Connection: close

Referer: http://127.0.0.1/

Sec-Fetch-Dest: empty

Sec-Fetch-Mode: cors

Sec-Fetch-Site: same-origin

Priority: u=1


m=1&username=admin&password=21232f297a57a5a743894a0e4a801fc3


通过请求可判断加密是md5

1718856661_6673abd5e8c40a1ef810e.png!small?1718856662481





MD5脚本:

# -*- coding: utf-8 -*-

from mitmproxy import http, ctx

import hashlib


def md5_encryption(pwd):

md5 = hashlib.md5()

md5.update(pwd.encode('utf-8'))

md5_pass = md5.hexdigest()

return md5_pass


class MD5:

def request(self,flow: http.HTTPFlow)-> None:

#获取请求POST数据,如m=1&username=admin&password=admin

data = flow.request.text

#将数据以'='分切成数组,如['m', '1&username', 'admin&password', 'admin']

d = data.split('=')

#通过md5_encryption加密方法对明文密码加密

md5_pass = md5_encryption(d[3])

#将加密后的密文重新赋值给数组

d[3] = md5_pass

#将数组元素重新变成post字符串格式

data = '='.join(d)

#将加密后data数据赋值给flow.request.text

flow.request.text = data


#info = ctx.log.info

#info(data)

def response(self,flow: http.HTTPFlow):

# 获取响应对象


response = flow.response


# 实例化输出类


info = ctx.log.info


# 打印响应码


info(str(response.status_code))


# 打印所有头部


info(str(response.headers))


# 打印cookie头部


info(str(response.cookies))


# 打印响应报文内容


info(str(response.text))


addons = [MD5()]


# burpsuite # web安全 # mitmproxy # JS加密算法 # js逆向
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 烽火戏诸侯tyq 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
烽火戏诸侯tyq LV.3
这家伙太懒了,还未填写个人描述!
  • 2 文章数
  • 3 关注者
某租车系统Java代码审计之后台注入漏洞分析
2020-06-28
文章目录