1、个人的精力是有限的,如果有志同道合的人是最好的。
2、所有的事情都有其价值,在不同人的衡量观里,这个价值是不同的。
3、做一件新的事情是能学到东西,但也会花很多时间去踩坑。
0x00 Preface前言/简介
0x01 random-ip-address-header插件
0x02 插件改造思路
0x03 实际修改记录
0x04 动态替换插件的使用
0x05 动态变量在固定字段fixed-Value中的测试
0x06 动态变量在动态列表fixed-List中的测试
0x07 总结与下载
部分网页直接访问或进行目录爆破操作时,
如果refer不存在,就会报403禁止访问。
如果手动增加refer的话又比较麻烦,
burpsuite替换增加refer报头需要手动去确定域名。
dirsearch等脚本自动替换refer又需要进行代码修改。
有没有能够自动根据URL等特征来动态取值来来添加refer报头的burpsuite插件或者代理脚本。
再扩展问题,如果支持动态的refer,是不是也能扩展成为添加动态XFF,动态useragent,动态host,请求头等功能呢?
由此就有了这篇文章来介绍这个新改造的插件。
PS:该40X得绕过还有其他得研究,这只是流水线的一个小小实现。
random-ip-address-header
https://github.com/PortSwigger/random-ip-address-header
1、获取当前请求中的一些动态信息,保存为变量。
2、使用固定的字符串表示这个变量,并将这个字符串用于替换中
3、在在最后传递请求头时,将这些特殊含义的字符串使用变量进行替换。
RURL% 代表当前请求URL
RHOST% 代表当前请求请求HOST
RPORT% 代表当前请求请求PORT
RPROTOCOL% 代表当前请求请求协议
RURLPATH% 代表当前请求请求URL的路
RURLQUERY% 代表当前请求请求URL的参数
RMETHOD% 代表当前请求请求方法
3、代码修改实现
/////////////////////////////////////////////////////////////////////////////////////////////////////////
this.RURL = String.valueOf(rqInfo.getUrl()) == "null" ? "": String.valueOf(rqInfo.getUrl());//editor
this.RHOST = String.valueOf(messageInfo.getHttpService().getHost()) == "null" ? "": String.valueOf(messageInfo.getHttpService().getHost());//editor
this.RPORT = String.valueOf(messageInfo.getHttpService().getPort()) == "null" ? "": String.valueOf(messageInfo.getHttpService().getPort());//editor
this.RPROTOCOL = String.valueOf(messageInfo.getHttpService().getProtocol()) == "null" ? "" : String.valueOf(messageInfo.getHttpService().getProtocol());//editor
this.RURLPATH = String.valueOf(rqInfo.getUrl().getPath()) == "null" ? "" : String.valueOf(rqInfo.getUrl().getPath()) ;//editor
this.RURLQUERY = String.valueOf(rqInfo.getUrl().getQuery()) == "null" ? "" : String.valueOf(rqInfo.getUrl().getQuery()) ;//editor
this.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);
/////////////////////////////////////////////////////////////////////////////////////////////////////////
列表中的行会被随机选择,然后进行变量替换。
END
本文始发于微信公众号(NOVASEC):RandomHeadrPlus-实现请求头动态替换
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论