目录
官方示例使用说明
进入到作者主页(https://github.com/outlaws-bai),
示例
看到示例:GalaxyDemo: HTTP报文二次加密的具体实现,用于测试的示例,访问地址为:GitHub - outlaws-bai/GalaxyDemo: HTTP报文二次加密的具体实现,用于测试 https://github.com/outlaws-bai/Galaxy 中的示例
下载对应的zip文件后,解压到对应的文件夹下,最好是全英文的路径下
使用python3.8以上版本(本人使用python3.10)安装相关组件
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple -r requirements.txt
python清华源设为默认pip安装地址
升级 pip 到最新的版本后进行配置:
python -m pip install --upgrade pip
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
查看运行脚本manager.py,发现使用fastapi进行web服务编写
默认端口为8000,如果和自己的其他软件使用的端口有冲突,可以修改此处的端口
示例程序运行
运行对应的python文件,会启动对应的web服务,默认端口8000
使用burpsuite浏览器打开对应的web地址,
查看第一条:DesCbc.html,点击查询按钮,发现请求和响应的data数据都做了加密
js逆向
尝试在浏览器中找到对应的加解密算法以用于插件的反编译
01 浏览器中按F12,进入调试界面
02 刷新页面
03 点击查询按钮,发送xhr请求
04 进入Network下,点击xhr,看到对应的查询链接
05 选择对应的链接,点击payload就是对应的请求数据,目前为加密数据
复制对应的请求地址,保留后面的一些数据,如:api/des-cbc/getUserInfo
进入到资源界面,在xhr断点中点击+号设置刚刚的数据断点
重新点击query查询按钮,发现请求在断点处挂起
由于示例较为简单,直接就可以在html中看到,因此就获取到相关加解密信息
des-cbc_encrypt
请求加密代码
des-cbc_decrypt
响应解密代码
js逆向调试代码
js逆向调试代码,可不看(使用VSCode+nodejs1.18+nodejs组件crypto-js)
保存相关代码到本地,尝试本地运行对应的代码,js本地运行需要使用nodejs(本次使用nodejs1.18),且需要安装相关加解密库(crypto-js)
js逆向结论
结论
因此知道了如下信息:
-
加解密方式为des-cbc模式
-
key为:12345678
-
iv 为:12345678
-
mode:CBC
-
padding: Pkcs7
插件脚本相关
编写相关代码并运行
-
hooker选择脚本语言本次我选择的是java
-
勾选hook Response,表示对请求和响应相关数据都做加解密
-
配置Expression,我本次使用的是:!request.isStaticExtension() && request.host=='192.168.1.6' && request.method=='POST'
-
hook Script,本次选择Descbc模式,如果相关项目是其他的请求格式,如全局加密,就需要修改整体代码了,本次直接使用默认代码就可以了
-
编辑后相关代码,就可以点击start,运行相关代码了
具体如下图所示:
查看相关加解密数据
启动插件后,返回到history中查看相关加密数据
右键发现解密成功
解密成功的数据,会在请求头中添加X-Galaxy-Http-Hook: HttpHook,可继续右键发送到其他位置进行解密后数据编辑
在burp的repeater中使用解密的数据发包,发现请求和响应都是明文数据了
与sqlmap的联动
尝试使用sqlmap扫描对应的解密后的数据,方式如下:
首先需要使用包含X-Galaxy-Http-Hook: HttpHook的解密数据
然后开启sqlmap上游代理到burpsuite中
最后sqlmap就会进行扫描了
burpsuite的history中查看相关信息
Galaxy学习系列
Burpsuite加解密插件Galaxy使用第一课教程-CSDN博客