自动加解密请求包响应包插件(autoDecoder)
之前所立的一个flag:明文传,明文响应;密文传,密文响应
0x01 背景
当数据包里都是密文,我们无从下手;就算是获得了加解密的一些关键信息,能解密出来,但是每个数据包我们都需要慢慢解密,请求包需要解密,响应包也需要解密,比较麻烦,所以它——autoDecoder
来了。
其实取auto这个名字并不是真正的auto,加解密算法还是需要自己去逆出来的,只是相对于数据包里的密文来说,可以算是半自动。
0x02 优点
- 明文传,明文响应;密文传,密文响应,不影响原本通讯包的基础上,增加一个bp扩展页面查看明文信息。
- 自定义加解密的接口,当存在复杂数据加密的时候,可以自行编写python代码对接口进行加解密, 自定义需要加解密域名,即开即用。
0x03 插件的加解密方式
- 直接通过插件自带的算法去加解密数据包(较为简单,仅支持部分AES、DES、DESede加密)。
- 通过python的flask接口去编写加解密数据包的api(不一定是flask框架,也可以起其他框架,只需要接口地址正确且加解密流程正确即可)。
具体来说说加解密的方式
- 自带算法进行加解密
支持较为简单的AES/CBC/PKCSPadding、AES/ECB/PKCSPadding等简单加解密方法,适合请求包或者响应包全部为加密的内容传参,如下文举例中的《使用自带算法进行加解密》章节。
- 自定义接口进行加解密
自定义加解密的内容,默认传入的参数是整个请求体(request body)与整个响应体(response body),支持复杂的加解密算法,当然,这些都需要自行去写代码解密了。
0x04 举例
这里主要考虑到很多app、小程序的请求是多个的,上一个请求获取到的响应包会进行自动解密并且获取里面的参数,而获取到的参数中有下一个请求包的参数,如果将密文直接替换为明文进行回显,那么程序可能在第二个数据包请求就会报错。
所以为了解决上面的问题,增加了一个扩展页面查看明文,而当burp里指定域名的请求包是明文,那么响应包会自动响应明文。
为了方便理解,以testsql.php
这个测试文件举例,testsql.php
是一个以DES加密请求包和响应包的测试页面,存在SQL注入漏洞。
以{"id":"2"}
举例,加密后的密文为Gh9+wH+QSIkOwCj/QK/Kiw==
。
使用自带算法进行加解密
插件配置如下:
原始请求如下
点击autoDecoder
再次点击Send按钮进行请求,响应包自动解密
也可以直接拿sqlmap进行测试,为做对比,先关闭插件的加解密
直接明文进行sqlmap跑注入,代理到proxy,增加命令 --proxy=http://127.0.0.1:8080
数据包如下:
burp里sqlmap的第一个请求数据包如下:
跑不出来注入(没有启动插件,传参是明文,所以无回显)
sqlmap结果
开启插件:
再次使用sqlmap,代理到proxy,增加命令 --proxy=http://127.0.0.1:8080
burp里sqlmap的第一个请求(启动了插件,传参是明文,会自动加密,所以有回显)
sqlmap结果
注入成功跑出
使用自定义接口进行加解密
python代码如下:
# -*- coding:utf-8 -*-
# author:f0ngf0ngfrom flask import Flask,Response,request
from pyDes import *
import base64def des_encrypt(s):"""DES 加密:param s: 原始字符串:return: 加密后字符串,16进制"""secret_key = "f0ngtest"iv = "f0ngf0ng"k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)en = k.encrypt(s, padmode=PAD_PKCS5)return base64.encodebytes(en).decode()def des_decrypt(s):"""DES 解密:param s: 加密后的字符串,16进制:return: 解密后的字符串"""secret_key = "f0ngtest"iv = "f0ngf0ng"k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)de = k.decrypt(base64.decodebytes(bytes(s,encoding="utf-8")), padmode=PAD_PKCS5)return de.decode()app = Flask(__name__)@app.route('/encode',methods=["POST"])
def encrypt():param = request.form.get('data') # 获取 post 参数encry_param = des_encrypt(param.strip("\n"))print(param)print(encry_param)return encry_param@app.route('/decode',methods=["POST"])
def decrypt():param = request.form.get('data') # 获取 post 参数decrypt_param = des_decrypt(param.strip("\n"))print(param)print(decrypt_param)return decrypt_paramif __name__ == '__main__':app.debug = True # 设置调试模式,生产模式的时候要关掉debugapp.run(host="0.0.0.0",port="8888")
插件配置如下:
原始请求如下:
点击autoDecoder
再次请求
sqlmap使用也是一样的,代理到burp即可,这里不再赘述
实战环境中
APP1
APP2
0x05 总结
- 越来越多的小程序、app都使用了加密算法,要想更容易挖到漏洞,对于加解密的知识还是要有所了解的。
- 对于这种加解密的程序,其实也可以用被动漏扫,上游代理解密和下游代理加密,中间穿插被动漏扫,有时间也可以记录下。
0x06 附录
https://github.com/f0ng/autoDecoder [Burp插件]
https://mp.weixin.qq.com/s/_7wSWy0gIMMZmVeOtFgdsw [某APP测试]
自动加解密请求包响应包插件(autoDecoder)相关推荐
- 天正lisp文件夹_天正启动时加载那些lisp_怎么在启动CAD时自动加载Lisp的工具和插件...
怎么在启动 CAD 时自动加载 Lisp 的工具和插件 网上有很多非常有用的 CAD 插件, 能给绘图带来很多便利. 这些 工具手动加载后就可以执行, 但每次用的时候都要加载挺麻烦的, 能 不能在启动 ...
- 天正启动时加载那些lisp_天正启动时加载那些lisp_启动CAD时自动加载Lisp的工具和插件的方法?...
互联网上有许多非常有用的CAD插件,可以为绘图带来很多便利. 这些工具可以在手动加载后执行,但是每次使用它们都麻烦. 启动软件时,您可以加载常用插件吗? 当然,有不止一种方法. 方法1:添加到启动组 ...
- Spring Boot 接口参数自动加解密
本文标题:Spring Boot 接口参数自动加解密 原始链接: https://www.shuibo.cn/102.html 许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链 ...
- 天正启动时加载那些lisp_启动CAD时自动加载Lisp的工具和插件的方法?
互联网上有许多非常有用的CAD插件,可以为绘图带来很多便利. 这些工具可以在手动加载后执行,但是每次使用它们都麻烦. 启动软件时,您可以加载常用插件吗? 当然,有不止一种方法. 方法1:添加到启动组 ...
- 天正启动时加载那些lisp_怎么在启动CAD时自动加载Lisp的工具和插件?
原标题:怎么在启动CAD时自动加载Lisp的工具和插件? 网上有很多非常有用的CAD插件,能给绘图带来很多便利.这些工具手动加载后就可以执行,但每次用的时候都要加载挺麻烦的,能不能在启动软件的时候把自 ...
- IP-Guard自动加解密文件夹支持多目录使用说明
自动加解密文件夹支持多目录使用说明 一.功能介绍 在控制台客户端配置设置decrypt_files和encrypt_files这两条策略可以实现指定文件夹自动解密文件和自动加密文件的功能.策略设置时支 ...
- 天正启动时加载那些lisp_怎么在启动CAD时自动加载Lisp的工具和插件
怎么在启动 CAD 时自动加载 Lisp 的工具和插件 网上有很多非常有用的 CAD 插件, 能给绘图带来很多便利. 这些 工具手动加载后就可以执行, 但每次用的时候都要加载挺麻烦的, 能 不能在启动 ...
- 天正启动时加载那些lisp_怎么在启动CAD时自动加载Lisp的工具及插件
怎么在启动CAD时自动加载Lisp的工具及插件 网上有很多非常有用的CAD插件,手动加载后就可以执行,但每次用的时候都要加载挺麻烦的,能不能在启动软件的时候把自己常用的插件加载进来? 方法1:添加到启 ...
- 某广告SDK流量加解密-请求
今天刚好在看某甲广告sdk,发现他请求跟响应的数据都是加密的,于是跟了一下,做个记录. 样本的话,随便那个apk都行,现在基本99%应用都集成了穿山甲 请求 先找一个sdk中请求广告的函数开始跟(sd ...
最新文章
- 06-Windows Server 2012 新特性 ---- Hyper-V实时迁移
- 某SAP项目进销存报表优化小记
- 值得关注的未来技术,增强现实
- mysql 连接 分组_详解MySQL中的分组查询与连接查询语句
- RT-Thread移植到STM32F103ZET6具体操作步骤(利用keil5新建工程,添加RT-Thread源码到工程)
- 偶遇mysql(Percona Server)的一个新bug
- ELK入门01—Elasticsearch安装
- SpringMVC(2)—SpringMVC整合Spring的HelloWorld
- C语言10的五百次方占位,震惊:10的500次方个宇宙?实在无法想象
- SpringBoot 2.0 系列005 --启动实战之SpringApplication应用
- 鸿蒙OS比fuchsia的优势,第一天带你走进华为开发者大会,了解鸿蒙OS
- html中不支持什么元素,html5新元素和html不支持的元素
- 多线程与NSTimer
- 干掉visio,这是一款免费又好用的画图神器
- MapGuide安装
- 基于51单片机超声波红外避障语音导盲仪设计(全套资料)
- LODOP直接用base64码输出图片
- 自己使用的jquery公用common.js
- World Locking Tools for Unity (五)安装部分
- 用matlab解决多重共线性问题,几种关于多重共线性回归问题的解决方法