
背景
用户在使用 Yakit MITM 功能的时候,经常会遇到一些特殊需求:
- 我的数据包需要携带一些特征变量才能访问,但是浏览器无法做到,我可以批量修改流量新增某一个 Header 吗?
- 我可以在代理层面在所有流量中新增一个参数吗?
这类需要动态修改流量并放行的需求如果手动操作的话,非常复杂。需要劫持到数据包,然后修改数据包,手动放行,不是不可以完成,而是这样的操作并不是自动化的,人工操作多了很容易疲倦漏掉一些关键信息。 熟悉 Yakit 的用户,尤其是一些深度用户非常熟悉这种操作,我们可以点击 “热加载”,在恰当的 Hook 点编写我们希望操作流量做的事儿,然后加载进引擎中,等待流量执行。 通过一个简单的图例展示热加载代码在流量劫持中的过程:

实战案例:使用 XFF 绕过 IP 封禁
如果在测试过程中,IP 被 WAF 封禁了,阻碍了我们后续的工作,当然,通过代理池的手段,我们可以直接解决这个问题,但是通常在筹备代理池之前,我们会尝试修改 XFF 或者 XRI 来绕过 IP 限制。
这个原理十分简单,一般来说,我们后端需要通过 X-Forwarded-For 或 X-Real-IP 来识别客户端的真实 IP,那么在频繁进行测试中,WAF 会对过频访问的 IP 进行限制,那么我们修改 X-Forwarded-For 一般能起到绕过检测的作用。
当然,能否真的绕过取决于 WAF 部署的层数,如果在 TCP 层部署的 WAF 一般情况是无法通过这个手段绕过的,如果仅仅是七层 WAF,或 Nginx 强制覆盖了 XFF 等头,也会造成绕过失败。
对于用户来说,只需要为每一个请求新增 XFF 即可达到很好的效果,那么在 Yakit 中,我们如何操作呢?
编写一个数据包修改函数
如下图展示,我们使用 Yaklang 中的 fuzz 模块,构建了一个数据包,这个数据包会在新数据包的基础上随机使用一个 IP 作为 XFF 的值填入。


本文介绍了如何在YakitMITM环境下,利用热加载功能动态修改流量,如添加XFF绕过IP封禁,以及通过fuzz模块实现数据包的头、Cookie和参数的修改。作者提供了实战案例和核心代码示例,展示了如何编写和应用这些功能。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



