BurpSuiteTrickALLInONE(第⼀版)
BurpSuite是⼀款Web安全研究⼈员、渗透测试⼈员和BugHunter的⼯具,在实际使⽤的时候⼀些⼩Trick将会帮助你更⾼效的使⽤这款⼯
具,本⽂是在看到Twitter上@c_r0开启的⼀个话题#BurpHacksForBounties之后基于他提到的⼀些trick进⾏扩展之后撰写的,在撰
写的途中融合进了个⼈在使⽤BurpSuite时的⼀些trick和想法,也参考了众多⽂章,本篇为第⼀版,随后再有更多Trick的话会继续更新下
⼀版。
BurpSuiteTrickALLInONE(第⼀版)
0x01Basic
1x1AntiBurpbyWebInterface
1.配置SwitchyOmega代理的时候增加设置如下列表的不⾛代理
ite
4.
主要原因是防⽌被检测到使⽤burpsuite在抓包,最重要的是防⽌被检测到使⽤burp抓包之后返回蜜罐的响应信息给你。
参考:
1.最好把burp的也删除
zip-dburpsuite_"resources/Media/"
参考:
1x2AntiBurpbyJA3指纹
cloudflare上的https站点使⽤burp和python均⽆法发包,应对的⽅式就是在burp的上游再加⼀个代理。
0x02Trick
2x1TurboIntruder
1/N使⽤⽅法:
1.⾸先你需要安装这个插件
2.选中⼀个请求,点击右键选择Extensions-Sendtoturbointruder
2/N⼀旦你向该插件发送请求,⼀个python编辑器就会打开,窗⼝会显⽰⼏个现有的python脚本,供你参考和使⽤。
3/N增加并发量或增加管道,然后点击攻击。⽰例代码见(或者下⾯):
###Thisctionwillmostlyremainasitis
###defqueueRequests(target,wordlists):engine=RequestEngine(en
dpoint=nt,concurrentConnections=5,requestsPerConnection=100,pipeline=Fal
)
###----------------------------------------
ThisattackwillbesimilartoClusterBombtechnique#Asth
eyarenestedloops#Youcandoalmostanythinghere,withthepowerofpython,#thiswillbeappliedtorequestparamswhereyouhavet%s%si
ntheRequestctioninthetopforfirstParaminopen('/usr/share/dict/words'):forcondParaminopen('/usr/share/dict/web2'):
e(,[(),()])#Doanythingwithrespon,let
dleRespon(req,interesting):#,unt,#add
(req)data=('utf8')#Extractheaderandbodyheader,_,body=ion('rnrn')
#Savebodytofile/tmp/put_file=open("/tmp/","a+")output_(body+"n")output_()
4/N使⽤这个插件,你⼏乎可以在Burp⾥⾯⽤Python做任何事情
例如:
处理⾃定义登录
定制化的⼀些测试
过滤你想要的请求
添加速率限制、管道等
2x2Match(匹配)andReplace(替换)功能的有效使⽤
要点:
(1)Fal2Truetrick
(2)在所有的参数处注⼊通⽤性payload
1/NFal2Truetrick,当⽤户访问⼀个资源是未经授权的。通过在burp响应体匹配和替换中将服务器响应体从F更改为T,有很⼤的机会
可以使隐藏的客户端控件取消隐藏属性。
1.添加匹配和替换(Matchandreplace)。
2.添加所⽰的替换。
这是⼀个将fal返回体更改为true的⽰例技巧。并且这是⼀个⾮常常见的⽤例。
2/N今天的主要技巧。在表格中⾃动的注⼊payload,⽽不是⼿动打出整个payload。
3/N上述匹配和替换规则将把请求主体中的所有KKK替换为SQLi和XSS这种通⽤型payload。
此处的⽰例载荷
'">test
这样的话只要把KKK放在参数输⼊处,发送之后就会⾃动将对应的位置替换为⽰例中的有效载荷,这样就可以对XSS和SQLi漏洞进⾏发
现。
PS:其实这个功能也可以⽤于Hosts碰撞得到host对应的内⽹域名名之后,设置替换对应的内⽹域名。相关⽂章—
2x3FindReferences:Burp中最被低估和未被充分利⽤的功能
PS:只有Pro版本的可以在整个Burp中去寻找URIs的references(引⽤),这个功能的重点是发现客户端脚本对后端的请求,从⽽发现更多
的测试点。
1/N从任何地⽅挑选请求,右击->EngagementTools->FindReferences
2/N⼀个新的窗⼝将被打开,它将显⽰references和这些references的位置。位置可以是repeater,scanner等。reference可以是在请
求、响应、头⽂件中。将会像图⽚中所⽰的那样被⾼亮显⽰。
3/N可以⽤来发现浏览器的脚本发送的请求,并学习它来制作你对该端点的有效载荷请求。
2x4你可以在req模块中修改被压缩的数据
不要忽视BurpSuite中那些看起来的脏数据。可以保持这⼀设置,并在Burp中玩弄压缩数据
1/N在BurpProxy中,解压设置默认是禁⽤的,像这样启⽤它。
2/NBefore&After.
2x5⼀次性检测所有攻击载荷的攻击效果
⼀次性检查intruder,repeater,quencer等模块中数据包的响应信息,⽽不是每次都向浏览器发送反应。
⼀个⼀个检查intruder模块中的每⼀个测试结果是⾮常⽆聊的(特别是对XSS漏洞),所以你可以按照如下过程进⾏操作:
1.在启动intruder之前,转到BurpSuite的projectoptions中->logging->tickintruderrespon->将它保存为⼀个html⽂件
1.然后双击这个html⽂件,所有的XSSpayload就会⼀起被触发了
2x6禁⽌Firefox发送与其相关的请求
0/N⾸先,为什么使⽤BurpSuite和Firefox的组合?现在的BurpSuite已经内置了Chromium浏览器,为什么还要使⽤Firefox?
这是因为:
Burp内置的Chromium在每次不同的运⾏中都不能保持设置。
每次都要重新安装插件
不能禁⽤本地CORS检查
不灵活等。
2/N最好的办法是在Firefox上禁⽤这个功能,⼀劳永逸。
相信我,这很容易,这将是你的伟⼤投资。
进⼊about:config,完全禁⽤这个功能。
这个⽅法只是其中之⼀,还有两种解决⽅案
1.利⽤功能
BurpSuite->Proxy->Options->TLSPassThrough.
.*..*..*.^.*?apple..*$^.*?icloud..*$^.*?mzstatic..*$^.*mozilla.(com|net|org)$^.*.$^.*.
m$^.*.ghostery.(com|net)$^.*.$^.*.$^.*.$^.*.$^.*.$^.*.$^.*.azureedg
$^$^.*.$^.*.$^.*.$.*..*..*.
PS:也有师傅提出如果不需要拦截所有⽹页流量的话,可以⽤scope,scope的⽅法可以参考⽂章
1.替换掉firefox的⽂件,从源头上根治
将⾥⾯的放到对应的profie下,firefox就不会发出⼀堆烦⼈的请求了
Windows:C:Urs
/Firefox/Profiles/tLinux:/home/
2x7宏(Macro):录制的会话
Part1:What,How&Why?
1/NBurp套件中的宏(Macros)是⽤来记录⼀组请求的。
你⾸先通过代理传递请求,然后选择要添加到宏中的请求集来创建这些记录的请求。
要创建⼀个宏(Macro)。ProjectOptions->Sessions->Macro
2/N点击添加,代理标签将打开。
发送你想记录的请求。
点击确定。
宏将被记录下来,给它起个好听的名字。
3/N在会话中使⽤宏。
对于现在所有范围内的URL,在会话下的这个宏将在每个请求之前运⾏。
N/N使⽤案例
拥有⾃定义登录的⽹站(常见的例⼦就是带token的情况)。
有助于编写扩展插件。
IDOR测试。
这是典型的使⽤上⼀个请求响应中的token作为下⼀个请求的参数,你发送的请求才能够被后端成功接收的案例。
⾸先找有token的那个请求记录
点击configureitem->add->双击对应的字符串,burp会⾃动创建对应的规则
之后设置使我们创建的宏⽣效(起作⽤+作⽤范围)就好了
随后在发包的时候只要看到我们的token是发包前更新的就可以验证宏设置成功了
但是这种的局限性就是他只能替换token=这种形式的,对于json或者其他则⽆能⽆⼒,此时就可以使⽤插件,关于这个插件的使⽤可以参
考:。但是这个插件还是⽐较复杂的,更简单⼀点的插件是,对应的⽂章介绍是
Part2:Howtoutoautomatetesting?
通过宏进⾏⾃动化,在为API和受保护的资源创建会话时使⽤宏。
⼀旦创建,将其作为会话(ssion)添加,并设置范围(scope)。在演⽰中,我将所有的URL添加为范围(scope)。
现在,⼯具范围中提到的所有请求将被宏处理。
可以使⽤跟踪器(Tracer)来调试宏
2x8在BurpSuite中repeater模块的响应中快速追踪你修改的参数
当你在中继器选项卡中修改⼀个参数,它的值会反映在响应中,当你必须滚动查看变化的内容时,你可以启⽤这个切换键……真正的省时省
⼒!
操作如下图⽚所⽰。
2x9你在使⽤BurpSuite时也⾯临着缓存响应的问题吗?
如果受到了缓存的影响,那么关闭它就好了
在这个模块中开启以下两个规则Proxy->Options->MatchandReplace.
If-Modified-Since
If-None-Match
有时我在Burp中看到304的响应,我不得不在Burp历史中挖掘,以检查第⼀次出现的响应并进⾏分析。移除这些头⽂件后,你可能不会再
看到这样的响应。
2x10在使⽤BurpSuitepro进⾏企业测试的时候,我们不应该捕获和存储企业的证书
使⽤的步骤以及为什么这点是重要的:
步骤:
1.临时项⽬/会话。
2.登录到应⽤程序,像正常⼀样。
3.识别哪些域的请求包含凭证。
4.在Burp中启动主项⽬。
5.将这些域添加到SSL穿透中。Proxy>Options>TLSPass-Through
我为什么这样做。我保存了会话,⽽burp将存储这些凭证和会话。我个⼈不希望凭证被存储在⽂件中。
另⼀个重要的问题是,我们不是在测试SSO,⽽是在测试SSO背后的应⽤程序。
2x11基于burpproxyhistory⽣成字典
tTreeasETimporturllibimportba64importmathimportsysimportre#usage:OpenBurp,navigatetoproxyhistory,ctrl-atolec
tallrecords,rightclickand"SaveItems"e.##entropy(string):#"Calc
ulatestheShannonentropyofastring"#getprobabilityofcharsinstringprob=[float((c))/len(string)ys(list(string
))]#calculatetheentropyentropy=-sum([p*(p)/(2.0)forpinprob])returnentropydefavgEntropyByChar(en,length):
#calulate"average"entropylevelreturnen/lengthtree=([1])root=t()wordlist=[]foriinroot:#prervesubdomain
s,file/dirnameswith.-_wordlist+=('|?|&|=',i[1].text)#getsubdomainnamesandbreakupfilenameswordlist+=('|?|&am
p;|=|_|-|.|+',i[1].text)#getwordsfromcookies,headers,POSTbodyrequestswordlist+=('|?|&|=|_|-|.|+|:||n|r|"|'|<|>|{|}|[|]|
`|~|!|@|#|$|;|,|(|)|*||',e(ba64.b64decode(i[8].text)))#responifi[12].textisnotNone:wordlist+=('|?|&|=|_|
-|.|+|:||n|r|t|"|'|<|>|{|}|[|]|`|~|!|@|#|$|;|,|(|)|*|^|||',e(ba64.b64decode(i[12].text)))auxiliaryList=list(t(wordlist))final=
[]avgEntropyByLength={}forwordinauxiliaryList:m()or'-'inwordor'.'inwordor'_'inword:en=entropy(word)#remove"ran
domstrings"thatarehighentropyifen<4.4:(word)()withopen('','w')asf:foriteminfinal:("%sn"
%item)print""
2x12使⽤Burp来对⽬标进⾏批量扫描
很多时候我们会在burp上⾯集成很多萨漏洞扫描或者信息收集插件,所以可以借助设置上层代理的⽅式来将⽬标发送到burp,随后使⽤
burp来对⽬标来做下⼀步的安全测试。
|httpx||gau|-replay-proxy127.0.0.1:8080/
基于这个想法扩展⼀下,准备做⼀个中间层(数据包去重+重要信息提取),把爬⾍(crawlergo,rad,LSpider)和Burp(xray也可以)联动起
来,既然不知道⽤哪个爬⾍那就全都要。#TODO
2x13IPtables+BurpSuite+Android应⽤
在设备上添加BurpCA
绕过capinning
root设备(iptable需要)
Dport(是设定⽬的端⼝的参数)80路由-运⾏以下命令(或许对443端⼝也需要做这样的事情)
iptables-tnat-AOUTPUT-ptcp--dport80-jDNAT--to-destination
2x14使⽤repeater模块测试那些通过反向代理的请求
例如这个⽹站,⽹站进⾏了反向代理的设置,它会检查⼦域并对其进⾏相应的路由,现在让我们为它改变host。
图1:Target的值与Host的值相同的时候
图2:Target的值与Host的值不相同的时候,这个请求就会被路由到不同的站点
2x15HTTP-Pipelining
HTTP-Pipelining⽅式的好处就是会产⽣跟域前置(domainfronting)相类似的效果,将恶意请求隐藏在正常请求之后,并且⽬前⼤多数服
务器都是⽀持这个技术的。此测试技术可以参考⽂章。在burpsuite中可以使⽤如下⽅式来开启HTTPpipelining功能
PS:其实初看这个概念你可能觉得陌⽣,但是这个技术点其实就是前⼀段时间最⽕的HTTP-Request-Smuggling(HTTP请求⾛私漏洞)
2x16在Intruder模块中设置过滤
过滤出那些呈现出特定响应的数据包
1.为Intruder的响应数据包创建⼀个过滤器。
1.载⼊payload开始fuzz
2.如果响应包含你在“grep“中输⼊的字符串,将显⽰在⼀个额外的列中。
->你只能关注你正在寻找的响应。
2x17Plugin:BurpBounty
在BurpSuite主动/被动扫描器中添加你⾃⼰的扫描规则。不需要写⼀⾏代码就可以在扫描器中⾃定义检查策略。
插件名称:BurpBounty扫描检查⽣成器。
这是⼀个相当容易使⽤的插件。从BAppStore安装,⽤简单的名字创建⼀个检查。给它⼀个严重性,检查输⼊你想执⾏/检查的
req/res,并启⽤它。
2x19BurpCollaborator
BurpSuiteCollaborator是PortSwigger提供的⼀个托管⽹络服务,在⼿动测试中⾮常有⽤。
1/N当你不清楚⼿动注⼊的有效载荷是否触发了与其他⽹站的交互时,就可以使⽤Collaborator来验证。Collaborator功能默认使⽤的是
由PortSwigger托管的公共服务器。具体的⼯作原理如下图所⽰。
2/NCollaborator客户端的使⽤如下所⽰
1.启动Collaborator客户端
2.点击复制,将创建⼀个带有<>.域名的⾃定义URL。之后在payload中使⽤该URL
3.轮询以查看在URL上发出的请求。
4.⽤于请求的payload⽰例(这个案例中会产⽣DNS和HTTP两种请求)
3/N⼀些有⽤的场景
SQLi盲注
SSRF
XSS
BlindXXE
检测你能想到的任何出站的源负载
逃避防⽕墙,如果出站的TCP请求被阻⽌⽽HTTP被允许的话
2x20三步创建⼀个属于你⾃⼰的BurpExtender插件(Java类型)
从Burp->Extender->APIs->SaveInterfacefiles下载API接⼝。
创建⼀个名为burp的包,并将⽂件保存在那⾥,你可以选择任何你喜欢的IDE。
让IDE准备好构建JAR。
创建⽂件名为BurpExtender并添加以下代码。
创建⽂件名为BurpExtender并添加以下代码。
2/n
⽂件名BurpExtender将是你的插件的⼀个⼊⼝点,扩展接⼝在加载时在Burp中注册。该插件的所有逻辑都在这⾥。
构建Jar
在Burp中加载Jar。
3/n
你也可以⽤这些命令从命令⾏建⽴Jar。php代码位置->cdurcode*.class⽂件的位置->mkdirbuildjar的位置->mkdirbin编译代码->javac-
dbuildsrc/burp/*.java建⽴jar->jarcfbin/-Cbuildburp
2x21Autorize与IDOR(越权漏洞)
Autorize可以帮助你⾃动化的查找越权漏洞,基本的使⽤步骤如下:
1.⾸先在Autorize扩展中提供低权限/不同⽤户的cookie详细信息。
2.然后作为⾼权限⽤户使⽤浏览器并连接burp漫游并在易受攻击的⽹站上获取不同的资源。
3.对于您在站点上向⾼权限⽤户发出的每个请求,Autorize扩展都会使⽤给定的低权限cookie重复相同的请求。
4.最后,您可以检查Autorize扩展是否已使⽤低特权cookie请求访问了任何特权资源。如果是,那就找了⼀个越权漏洞。
参考链接:
2x22burp性能优化之最⼤限度地减少RAM和处理器的负荷
1.关闭你不⽤的burp扩展—只要禁⽤所有不使⽤的扩展,即使它们被加载,也会影响性能。
2.确定扫描仪的明确范围—你可以在配置中限制递归的深度
3.合并⽤于限定范围的正则表达式—如果你使⽤正则表达式来过滤流量,可以尝试将多个正则表达式合并为⼀个,性能上将会有所优
化。
搜索功能⽐⽹站地图过滤器更快
2x23通过代码层⾯的可视化来更好地理解BurpSuite中不同的intruder攻击类型
对于上⾯这个例⼦来说,如果我们想要去使⽤BurpSuite的Intruder模块去Fuzz那么我们就⾸先会⾯临四种类型的选择:
单⼀有效载荷集
相同的有效载荷⼀次适⽤于所有位置。
适合于每次对单个参数进⾏模糊处理,在针对所有具有共同漏洞的有效载荷时⾮常有⽤。
loc1⾸先⽤相同的数据进⾏测试,然后是loc2,以此类推…
⽤代码来表⽰就是
INGRAM
单⼀有效载荷
每个有效载荷同时放置在每个位置上
当攻击需要所有参数的相同输⼊时使⽤
RBOMB
每个位置都有不同的有效载荷集。
将此视为嵌套循环。对于locl的每个有效载荷,其他有效载荷的所有条⽬都被测试。(类似笛卡尔积)
ORK
每个位置都有不同的有效载荷集
但每个有效载荷都是同时递增的
2x24⼀种简单的在Android设备上安装证书的⽅式
Burp—>Proxy—>options—>import/export—>certificateinDERformat—>cert—>next—>save
nsslx509-informPEM-subject_hash_|9a5ba575.0#has
hfromtheabovecommandoutputadbshell"mount-orw,remount/system"adbpush9a5ba575.0system/etc/curity/cacerts/adbshell"chmod644system/
etc/curity/cacerts/9a5ba575.0"omount-oro,remount/systemadbremountadbreboot
本文发布于:2022-11-26 14:48:42,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/25735.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |