序言
我在这里对Burpsuite社区版的核心功能做一个详细介绍,目的是对想从事安全渗透测试的同学提供一个快速入门的手册!Burpsuite社区版开放的免费功能完全符合想入门渗透测试的同学的需求,当大家熟练地使用社区版后,就能够对渗透测试有了初步的认识,然后可以有的放矢的选择其他工具进行深入学习!
试用结论
社区版下载地址
https://portswigger.net/burp/communitydownload
初步比较结论:
Burp的免费版中关于渗透测试需要的常用模块:Proxy 模块,intruder模块,Repeater模块,sequencer模块,decoder模块,comparer模块都可以使用。对于入门渗透测试的同学是非常好的选择。
不足:
1工程不能保存
2.无Scan功能,如下图所示
3.插件受限制,受限制的插件如下:
4.启动,由于是社区版,所以不能保存工程到磁盘
主要模块介绍:
Target(目标)——显示目标目录结构的的一个功能
Proxy(代理)——拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。
Intruder(入侵)——一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。
Repeater(中继器)——一个靠手动操作来触发单独的HTTP 请求,并分析应用程序响应的工具。
Sequencer(会话)——用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。
Decoder(解码器)——进行手动执行或对应用程序数据者智能解码编码的工具。
Comparer(对比)——通常是通过一些相关的请求和响应得到两项数据的一个可视化的“差异”。
Extender(扩展)——可以让你加载Burp Suite的扩展,使用你自己的或第三方代码来扩展Burp Suit的
Options(设置)——对Burp Suite的一些设置
拦截HTTPS请求
如果想要拦截https请求,需要在浏览器中导入burp suite生成的ca证书,如下图所示:选择Proxy>Import/export CA certificate
保存导出的der文件
在浏览器中导入der文件,以firefox为例,如下图所示:
浏览器导入der文件后,burp suite就可以截取浏览器的https请求了。
Proxy
Proxy代理模块作为BurpSuite的核心功能,拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。Burp 代理允许你通过监视和操纵应用程序传输的关键参数和其他数据来查找和探索应用程序的漏洞。通过以恶意的方式修改浏览器的请求,Burp 代理可以用来进行攻击,如:SQL 注入,cookie 欺骗,提升权限,会话劫持,目录遍历,缓冲区溢出。拦截的传输可以被修改成原始文本,也可以是包含参数或者消息头的表格,也可以十六进制形式,甚至可以操纵二进制形式的数据。在 Burp 代理可以呈现出包含 HTML 或者图像数据的响应消息。
在Burpsuite中点击Proxy标签,在子标签中点击Options标签,启用127.0.0.1:8080进行代理。可以设置该值改变代理的端口。
如果对浏览器进行拦截则需要设置浏览器中的代理与Burpsuite代理一致。Firefox设置代理页面如下:
如果对手机请求进行拦截则需要设置手机中的代理与Burpsuite代理一致。
注意:
1手机和Burpsuite所在电脑需要在同一网络中
2.在Burpsuite的代理设置中要使用本机的真实IP而非127.0.0.1
手机设置代理页面如下:
在intercept标签中,按钮功能如下所示:
forward:当你编辑之后,发送信息到服务器或浏览器
Drop:当你不想发送这次信息可以点击drop放弃这个信息
interceptionis on/off: 这个按钮用来切换和关闭所有拦截,如果按钮显示interceptions on,表示请求和响应将被拦截或自动转发,根据配置的拦截规则配置代理选项,如果按钮显示interception is off则显示拦截之后的所有信息将自动转发。
设置interceptionis on,在浏览器中访问百度,发现网页不能展示,切回到intercept标签页展示如下:
Action:说明一个菜单可用的动作行为操作可以有哪些操作功能:
Send to Spider 发送给spider进行爬取
Do an active scan 执行主动扫描
Send to Intruder 发送到入侵者
Send to Repeater 发送到中继器
Send to Sequencer 发送到序列发生器
Send to Comparer 发送到比较器
Send to Decoder 发送到解码器
Request in browser 在浏览器的请求
Engagement tools 参与工具
Change request method 对所有的请求,经过把所有相关的请求参数适当地搬迁到这个请求里来,你就可以自动地把请求的方法在 POST 和 GET 中间切换。通过发送恶意的请求使用这个选项来快速测试应用程序的极限参数是多少。
Change body encoding 对于所有的请求,你可以在应用程序/X-WWW 格式的 URL 编码和多重表单/数据之间切换消息体的编码方式。
Copy URL 把当前的 URL 完整地复制到粘贴板上。
Copy as curl command 作为curl命令
Cope to file 这个功能允许你把选择一个文件,并把消息的内容复制到这个文件里。这个对二进制数据来说是很方便的,要是通过粘贴板来复制会带来一些问题。复制操作是在选择的文本上进行的,如果没有被选中的内容,则是针对整个消息了。
Pase form file 这个功能允许你选择一个文件,并把文件里的内容粘贴到消息里。这个对二进制数据来说是很方便的,要是通过粘贴板来复制会带来一些问题。粘贴操作会替换掉被选中的内容,如果没有内容被选中,则在光标位置插入这些内容。
Save item 这个功能让你指定一个文件,把选中的请求和响应以XML的格式保存到这个文件,这里面包括所有的元数据如:响应的长度,HTTP 的状态码以及 MIME 类型。
Don't intercept requests 通过这些命令可以快速地添加拦截动作的规则来阻止拦截到的消息,这些消息和当前的消息有着相同的特征(如远程主机,资源类型,响应编码)。
Do intercept 仅对请求有效,这允许你可以对当请求和响应的进行强制拦截。
Convert seiection 这些功能让你能够以多种方案对选择的文本进行快速的编码和解码。
URL-encode as you type 如果这个选项被打开,你输入的像&和=这样的符号会被等价的 URL编码代替。
Cut 剪切
Copy 复制
Paste 粘贴
Message edit help 消息编辑帮助
Proxy interception help 代理拦截帮助
在http histroy标签中,记录了截取的url请求,鼠标右键选择某一个url,可以出现类似action菜单,如下图所示:
Intruder
Burp Intruder是一个强大的工具,用于自动对Web应用程序自定义的攻击,Burp Intruder 是高度可配置的,并被用来在广范围内进行自动化攻击。你可以使用 Burp Intruder 方便地执行许多任务,包括枚举标识符,获取有用数据,漏洞模糊测试。合适的攻击类型取决于应用程序的情况,可能包括:缺陷测试:SQL 注入,跨站点脚本,缓冲区溢出,路径遍历;暴力攻击认证系统;枚举;操纵参数;拖出隐藏的内容和功能;会话令牌测序和会话劫持;数据挖掘;并发攻击;应用层的拒绝服务式攻击。
Burp Intruder主要有四个模块组成:
1:Target 用于配置目标服务器进行攻击的详细信息。
2:Positions 设置Payloads的插入点以及攻击类型(攻击模式)。
3:Payloads 设置payload,配置字典
4:Options 此选项卡包含了request headers,request engine,attack results ,grep match,grep_extrack,grep payloads和redirections。你可以发动攻击之前,在主要Intruder的UI上编辑这些选项,大部分设置也可以在攻击时对已在运行的窗口进行修改。
1:Target 目标选项(Target tab)
这个选项是用来配置目标服务器的细节:
2:Positions 位置选项(Positions tab)
这个选项是用来配置在攻击里产生的所有 HTTP 请求的模板:
使用一对§字符来标记出有效负荷的位置,在这两个符号直接包含了模板文本的内容。当把一个有效负荷放置到一个给出的请求的特殊位置上时,就把这§符号放到这个位置,然后在两个符号之间的出现的文本都会被有效负荷替换。当有个特殊位置没有为一个给出的请求安排有效负荷时(这只适用”sniper”攻击类型),那个位置的§字符会被删除,出现在它们之间的文本不会变化。
当使用 Burp Suite 发送一个其他地方的请求时,Burp Intruder 会对你最想放置有效负荷的位置做一个最好的猜测,并且它把这些放置在每个 URL 和主体参数的值里,以及每个cookie 里。每个标记和它中间的文本都会被加亮以显得更清晰。你可以使用 Intruder 菜单上的选项标记的位置是要替换还是附加现有的参数值。在上面的请求编辑器里,指出了定义位置的数量和文本模板的大小。
你可以使用选项上的按钮来控制位置上的标记:
1. add § — 在当前光标位置插入一个位置标记。
2. clear § — 删除整个模板或选中的部分模板里的位置标记。
3. auto § — 这会对放置标记的位置做一个猜测,放哪里会有用,然后就把标记放到相应位置。这是一个为攻击常规漏洞(SQL 注入)快速标记出合适位置的有用的功能,然后人工标记是为自定义攻击的。
4.refresh — 如果需要,可以刷新编辑器里有颜色的代码。
5.clear — 删除整个编辑器内容。
3:Payloads 有效负荷选项(Payloads tab)
这个选项是用来配置一个或多个有效负荷的集合。如果定义了”cluster bomb”和”pitchfork”攻击类型,然后必须为每定义的有效负荷位置(最多8个)配置一个单独的有效负荷。使用”payload set”下拉菜单选择要配置的有效负荷。
选项1:Payload Sets Payload数量类型设置
选项2:Payload Options[Simple list] 该选项会根据选项1中Payload type的设置而改变
选项3:Payload Processing 对生成的Payload进行编码、加密、截取等操作
选项4:Payload Encoding 你可以配置哪些有效载荷中的字符应该是URL编码的HTTP请求中的安全传输。任何已配置的URL编码最后应用,任何有效载荷处理规则执行之后。 这是推荐使用此设置进行最终URL编码,而不是一个有效载荷处理规则,因为可以用来有效载荷的grep选项来检查响应为呼应有效载荷的最终URL编码应用之前。
4:Options 选项卡(Options tab) 此选项卡包含了request headers,request engine,attack results ,grep match,grep_extrack,grep payloads和redirections。你可以发动攻击之前,在主要Intruder的UI上编辑这些选项,大部分设置也可以在攻击时对已在运行的窗口进行修改。
选项1:Request Headers 这些设置控制在Intruder是否更新配置请求头。
如果选中‘update Content-Length header’框,Burp Intruder 会使用每个请求的 HTTP 主体长度的正确值,添加或更新这个请求里 HTTP 消息头的内容长度。这个功能对一些需要把可变长度的有效载荷插入到 HTTP 请求模板主体的攻击是很有必要的。这个 HTTP 规范和大多数 web 服务器一样,需要使用消息头内容长度来指定 HTTP 主体长度的正确值。如果没有指定正确值,目标服务器会返回一个错误,也可能返回一个未完成的请求,也可能无限期地等待接收请求里的进一步数据。
如果选中‘set Connection: close’框,则 Burp Intruder 会添加或更新 HTTP 消息头的连接来请求在每个请求后已关闭的连接。在多数情况下,这个选项会让攻击执行得更快。
选项2:Request Engine 设置发送请求的线程、超时重试等。
选项3:Attack Results 设置攻击结果的显示。
选项4:Grep – Match 在响应中找出存在指定的内容的一项。
选项5:Grep – Extract 通过正则提取返回信息中的内容。
选项6:Grep – Payloads 这些设置可以用于包含已提交的有效负载的反射的标志结果项目。如果启用了此选项,BurpSuite会添加包含一个复选框指示当前负载的值在每个响应发现新的结果列。
选项7:Redirections 重定向响应,控制Burp在进行攻击时如何处理重定向。
Burp Suite Intruder的4种攻击类型
一 Sniper(狙击手模式)
狙击手模式使用一组payload集合,它一次只使用一个payload位置,假设你标记了两个位置“A”和“B”,payload值为“1”和“2”,那么它攻击会形成以下组合(除原始数据外):
二Battering ram(攻城锤模式)
攻城锤模式与狙击手模式类似的地方是,同样只使用一个payload集合,不同的地方在于每次攻击都是替换所有payload标记位置,而狙击手模式每次只能替换一个payload标记位置。
三Pitchfork(草叉模式)
草叉模式允许使用多组payload组合,在每个标记位置上遍历所有payload组合,假设有两个位置“A”和“B”,payload组合1的值为“1”和“2”,payload组合2的值为“3”和“4”,则攻击模式如下:
四Cluster bomb(集束炸弹模式)
集束炸弹模式跟草叉模式不同的地方在于,集束炸弹模式会对payload组进行笛卡尔积,还是上面的例子,如果用集束炸弹模式进行攻击,则除baseline请求外,会有四次请求:
Repeater
BurpSuite的Repeater功能,是通过手工修改请求参数,查看返回结果response进行结果分析;
1, 与Proxy模块不同,Repeater模块没有单独的Options功能,对Repeater的设置是通过顶部工具栏,如图:
2, 右上角的Target可以将修改后的请求发送到指定域名;
3,设置页面展示效果;
Comparer
Comparer模块提供一个可视化的差异比对功能,来对比分析两次数据之间的区别。使用中的场景可能是:
1.枚举用户名过程中,对比分析登陆成功和失败时,服务器端反馈结果的区别。
2.使用 Intruder 进行攻击时,对于不同的服务器端响应,可以很快的分析出两次响应的区别在哪里。
3.进行SQL注入的盲注测试时,比较两次响应消息的差异,判断响应结果与注入条件的关联关系。
以Intruder为例,对一个请求进行了2次攻击操作,然后把2次响应结果发送到Comparer模块,如下图所示:
在comparer模块中,看到了这两个响应,如下图所示:
点击底部的“words”按钮,可以看到两个响应的区别,如下图所示:
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!