freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

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

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

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

FreeBuf+小程序

FreeBuf+小程序

burpsuite配合mitmproxy实现加解密数据
2024-06-20 12:13:41

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. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录