RandomHeadrPlus-实现请求头动态替换

  • A+
所属分类:安全文章

RandomHeadrPlus-实现请求头动态替换

最近一直在公司打杂,忙的没有时间输出信息。
最近<规定>的发布,也让我们开始焦虑更多的东西,要加快自己自主学习的过程了。

一点点感悟:
1、个人的精力是有限的,如果有志同道合的人是最好的。2、所有的事情都有其价值,在不同人的衡量观里,这个价值是不同的。3、做一件新的事情是能学到东西,但也会花很多时间去踩坑。
△△△点击上方“蓝字”关注我们了解更多精彩




本文目录结构
0x00 Preface前言/简介0x01 random-ip-address-header插件0x02 插件改造思路0x03 实际修改记录0x04 动态替换插件的使用0x05 动态变量在固定字段fixed-Value中的测试0x06 动态变量在动态列表fixed-List中的测试0x07 总结与下载




0x00 Preface前言/简介

目录扫描经常遇到一个小场景:

部分网页直接访问或进行目录爆破操作时,如果refer不存在,就会报403禁止访问。
如果手动增加refer的话又比较麻烦,burpsuite替换增加refer报头需要手动去确定域名。dirsearch等脚本自动替换refer又需要进行代码修改。


有没有能够自动根据URL等特征来动态取值来来添加refer报头的burpsuite插件或者代理脚本。


扩展问题,如果支持动态的refer,是不是也能扩展成为添加动态XFF,动态useragent,动态host,请求头功能呢?


由此就有了这篇文章来介绍这个新改造的插件。


PS:该40X得绕过还有其他得研究,这只是流水线的一个小小实现。



0x01 random-ip-address-header插件
在Github和bapp商店搜索需求,逐个试用后最终bapp找到了一个最合适的插件。
random-ip-address-header https://github.com/PortSwigger/random-ip-address-header

random_header支持修改任意报头,并且这些报头的值能够从IPv4段、IPv6段、文件列表等选项中随机获取,或者说设置为一个固定值,并且拥有UI界面用于配置。

对我的需求而言,只需要再实现间接的字符串替换,就能够获实现自动
添加动态的refer,以及动态增加其他报头。

PS:还有一个小BUG,输入HeaderName的地方UI重合了。
PS:插件命名格局小了,应该叫random-all-header




0x02 插件改造思路
1、获取当前请求中的一些动态信息,保存为变量。2、使用固定的字符串表示这个变量,并将这个字符串用于替换中3、在在最后传递请求头时,将这些特殊含义的字符串使用变量进行替换。



0x03 实际修改记录
1、修改UI重合问题

RandomHeadrPlus-实现请求头动态替换

2、添加动态变量支持
%RURL%        代表当前请求URL%RHOST%       代表当前请求请求HOST %RPORT%       代表当前请求请求PORT%RPROTOCOL%   代表当前请求请求协议%RURLPATH%    代表当前请求请求URL的路%RURLQUERY%   代表当前请求请求URL的参数%RMETHOD%     代表当前请求请求方法

3、代码修改实现

/////////////////////////////////////////////////////////////////////////////////////////////////////////this.RURL = String.valueOf(rqInfo.getUrl()) == "null" ? "": String.valueOf(rqInfo.getUrl());//editorthis.RHOST = String.valueOf(messageInfo.getHttpService().getHost()) == "null" ? "": String.valueOf(messageInfo.getHttpService().getHost());//editorthis.RPORT = String.valueOf(messageInfo.getHttpService().getPort()) == "null" ? "": String.valueOf(messageInfo.getHttpService().getPort());//editorthis.RPROTOCOL = String.valueOf(messageInfo.getHttpService().getProtocol()) == "null" ? "" : String.valueOf(messageInfo.getHttpService().getProtocol());//editorthis.RURLPATH = String.valueOf(rqInfo.getUrl().getPath()) == "null" ? "" : String.valueOf(rqInfo.getUrl().getPath()) ;//editorthis.RURLQUERY = String.valueOf(rqInfo.getUrl().getQuery()) == "null" ? "" : String.valueOf(rqInfo.getUrl().getQuery()) ;//editorthis.RMETHOD = String.valueOf(rqInfo.getMethod()) == "null" ? "" : String.valueOf(rqInfo.getMethod());//editor/////////////////////////////////////////////////////////////////////////////////////////////////////////value = value.replace("%RURL%",this.RURL);value = value.replace("%RHOST%",this.RHOST);value = value.replace("%RPORT%",this.RPORT);value = value.replace("%RPROTOCOL%",this.RPROTOCOL);value = value.replace("%RURLPATH%",this.RURLPATH);value = value.replace("%RURLQUERY%",this.RURLQUERY);value = value.replace("%RMETHOD%",this.RMETHOD);/////////////////////////////////////////////////////////////////////////////////////////////////////////



0x04 动态替换插件的使用

1、加载修改版插件
2、新增一个header,headname是请求头的名字。
如新增refer
3、IPv4和IPv6是动态的随机IP,使用动态变量应选择固定值或列表文件,如输入固定值为%RURL%
4、选择应用范围。
勾选Enable Random Header表示启用插件,会对Burpsuite所有模块都启用插件。
勾选Apply to in-scope requests only,默认勾选,表示仅对加入scope的URL进行替换操作
5、在logger日志模块查看报文是否被成功修改,没有logger模块可以安装logger++插件。



0x05 动态变量在固定字段fixed-Value中的测试
固定字符串会被进行动态的变量替换,然后追加到请求头。

RandomHeadrPlus-实现请求头动态替换

RandomHeadrPlus-实现请求头动态替换



0x06 动态变量在动态列表fixed-List中的测试

列表中的行会被随机选择,然后进行变量替换。

RandomHeadrPlus-实现请求头动态替换

RandomHeadrPlus-实现请求头动态替换

RandomHeadrPlus-实现请求头动态替换





0x07 总结与下载
NOVASEC公众号后台回复【酒零】,获取修改后的random-header插件项目地址。

本次使用土司域名进行访问测试,没有任何攻击性行为。如有侵权请后台联系。

如果您发现其他问题和思路,可以联系我一起解决和探讨。

END



如您有任何投稿、问题、建议、需求、合作、后台留言NOVASEC公众号!

RandomHeadrPlus-实现请求头动态替换

或添加NOVASEC-MOYU 以便于及时回复。

RandomHeadrPlus-实现请求头动态替换


感谢大哥们的对NOVASEC的支持点赞和关注

加入我们与萌新一起成长吧!


本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!


本文始发于微信公众号(NOVASEC):RandomHeadrPlus-实现请求头动态替换

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: