-
Notifications
You must be signed in to change notification settings - Fork 60
功能详解
靶场:https://github.com/outlaws-bai/GalaxyDemo
正常情况下,我们通过Burp代理进行渗透测试时,流量的流转情况如图所示。
而本插件通过 Burp 的 Montoya API
在该流程中添加了 4 个 hook,使得流量流转的情况变成下图这样。
①:HTTP请求从客户端到达Burp时被触发。你需要在此处完成请求解密的代码,这样就可以在Burp中看到明文的请求报文。
②:HTTP请求从Burp将要发送到Server时被触发。你需要在此处完成请求加密的代码,这样就可以将加密后的请求报文发送到Server。
③:HTTP响应从Server到达Burp时被触发。你需要在此处完成响应解密的代码,这样就可以在Burp中看到明文的响应报文。
④:HTTP响应从Burp将要返回到Client时被触发。你需要在此处完成响应加密的代码,这样就可以将加密后的响应报文返回给Client。
其实读到这里你就会发现,该工具不仅仅可以用于自动化加解密,对于防重放绕过,自动重新计算签名也有很好的效果(在 ② 完成相应的代码逻辑即可)
我将这四个 hook 分别命名为 hookRequestToBurp
,hookRequestToServer
, hookResponseToBurp
, hookResponseToClient
这四个 hook 需要你来实现,项目提供了两种方式供你来实现:http(首选)、 jython(没有看到该选项)
http: 你可以在本地用任何语言实现 http 服务端,并在其中实现四个 Hook 接口
,下面是一个 python 的实现
显然,你可以在其中使用 frida、jsrpc、cdp,也可以 cp 客户端代码使用 node 执行。
https://github.com/outlaws-bai/GalaxyHttpHooker
jython:你需要用 jython 实现 hook 脚本,并在其中实现四个 Hook 函数
,下面是靶场中所有加密方案对应的 hook 脚本(已内置在插件中)
https://github.com/outlaws-bai/Galaxy/tree/main/src/main/resources/examples/jython
Hooker: hook 的方式
Auto Scan Decrypted Request: 开关,是否自动将 Proxy 模块解密后的请求转发到被动代理扫描器
联动被动代理扫描器时必须配置被动扫描器的上游代理为Burp
Expression: mvel bool 表达式,用请求判断流量是否需要Hook
默认的表达式:!request.isStaticExtension() && request.host=='192.168.1.3' 是指请求不能是静态后缀,且host必须是192.168.1.3,注意这里的 request.host 是没有端口的
项目首推的 hook 方式是 http,其相较于 jython 要求没那么高,更加好理解,如果你对自己的编码能力有一定的自信可以尝试 jython 的方式,它绝对会给你带来意向不到的惊喜,但同时你也会踩很多坑,请谨慎选择。我想要用 jython
启动Http Hook服务后,在任意的HTTP请求/响应编辑器中右键可找到对应的按钮,点击即可测试
你需要查看日志(在使用 http 方式时可以 debug),判断为什么出现了报错
运行中的日志会发送到两个地方:
- ${WorkDir} / run.log
-
Burp -> Extensions -> Galaxy -> Output/Errors
(仅显示部分,并且 burp 偶有 bug 没有显示)
WorkDir:Linux/Mac 在 ~/.galaxy,Windows在 %USERPROFILE%/.galaxy
- 联动sqlmap:在已解密请求右键找到
Send Decrypted Request To Sqlmap
,点击即可 - 联动xray:配置xray的上游代理为 burp,开启
Auto Scan Decrypted Request
或在已解密请求右键找到Send Decrypted Request To Scanner
点击
当在联动sqlmap、xray时,由于流量会再次经过Burp,Burp的Proxy中势必会多出扫描流量,可以添加下方代码片段到bambda不显示这些流量
!requestResponse.annotations().notes().contains("HookedByGalaxy")
该功能会自动解析并生成所有接口的请求报文,将其发送到Organizer
,可以对参数进行修改测试。
如果想要自动将生成的请求发送到服务端,可以在Galaxy -> Settings窗口中勾选。
使用方法:
在任意响应报文Editor右键,选择"Parse Swagger Doc"即可。
绕过服务端在ssrf/重定向的测试点对host做了验证
如果想要自定义绕过Template,可以修改
${Work Dir}/templates/bypassHostCheckTemplate.txt
文件
使用方法:
在测试点输入要攻击的URL,选中它右键Send To Intruder
, 然后在Intruder
中选择Payload type -> Extension-generated
, Selected generator -> Bypass Host Check
,之后点击Start attack
即可。
通过修改Path的方式绕过某些认证/鉴权/拦截
使用方法:
以/
为开始选中需要绕过的path(可以是整体或部分), 然后右键Send To Intruder
。然后在Intruder
中选择Payload type -> Extension-generated
, Selected generator -> Bypass Auth Of Path
,之后点击Start attack
即可。