一、BurpSuite简介 BurpSuite是用于攻击Web应用程序的集合平台,包含了许多工具。BurpSuite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP消息、持久性、认证、代理、日志、警报。BurpSuite基于Java开发,所以你的电脑上必须得安装有JDK Proxy代理模块 BurpSuite默认使用8080端口作为代理,当然,你也可以自己修改端口号 ProxyOptions,然后下面可以自己修改代理的端口号,默认是8080 这里Proxy的intercept这里显示Interceptison表示拦截包开启,所有代理的包都必须经过BurpSuite放行才可以走 如果这里我们选择Interceptisoff的话,那么所有的包都会经过BurpSuite,可以在HTTPhistory看所有经过的包,但是BurpSuite不会对经过的包进行拦截 关于浏览器端怎么设置代理我就不讲了,推荐一款Firefox浏览器中最好用的代理插件FoxyProxyStandard 当我们拦截数据包后,如图,这里有4个选项 Raw:抓取的请求数据包 Params:请求数据包的参数信息,包括GETPOST请求的参数,cookies参数 Headers:请求数据包的头部信息 Hex:Raw中信息的二进制内容 Repeater模块(改包,重放) 我们抓一个包来看看,抓取包之后,右键SendtoRepeater发送重放模块 在Repeater模块,我们可以随意修改数据包。修改完后,点击go,就可以发包了。右边就会显示服务器回的包 Intruder模块(爆破) BurpIntruder爆破主要由四个模块组成1:Target用于配置目标服务器进行攻击的详细信息2:Positions设置Payloads的插入点以及攻击类型(攻击模式)3:Payloads设置payload,配置字典4:Options此选项卡包含了requestheaders,requestengine,attackresults,grepmatch 功能介绍 该模块不仅仅可以完成暴力破解,还可以进行洞利用和Web应用程序模糊测试 Sniper 在position中插入一个变量,读取一个字典库,填入该变量进行爆破(详见Lowlevel实验过程) BatteringRam 在postion中插入n个变量,读取一个字典库填入到n个变量中去 相当于将admin和pwd里都填入了一个字典库的值 这种适用场景太少了,谁的用户名和密码能一模一样呢? Pitchfork 在postion中插入n个变量,读取n个字典库填入到n个变量中去,n个字典库的行数应该一致 这里是按顺序执行的,要一一对应,如果行数不一致就有可能部分变量填入的时候没有数据 当然也可以就输入一个变量,一般处理token验证时会用到Pitchfork模式,配合GrepExtract使用(highlevel实验里有详细步骤) 〔postcid2206〕 字典库1输入到admin里 字典库2输入到pwd里 ClusterBomb 第三种Pitchfork的方式很不人性化,如果字典库的行数不一样,就会缺参数,而且不能交叉的进行排列组合,只能一一对应。 ClusterBomb这种方式可以化解上述问题。 排列组合之后的结果 Target模块 Target模块设置攻击的信息 position模块 position模块配置攻击类型和攻击点 Attacktype攻击类型,这里有四种可以选择 Sniper:对变量依次进行破解,如果有多个攻击点,则多个攻击点依次进行。只能用一份密码字 Batteringram:对变量同时进行破解,如果有多个攻击点,多个标记点同时进行。只能用一份密码字典 Pitchfork:每一个变量标记对应一个字典,取每个字典的对应项。最少设置2处攻击点,最多设置20处攻击点。每个攻击点设置一个密码字典 Clusterbomb:每个变量对应一个字典,并且进行交集破解,尝试各种组合。最少设置2处攻击点,最多设置20处攻击点。适用于用户名密码的组合 假如现在有两份密码字典,每份密码字典里都有5个爆破字符的话。设置两处爆破点,Sniper会尝试10次,Batteringram会尝试5次,Pitchfork会尝试5次,Clusterbomb会尝试25次 Payloads模块 这个模式是用来配置攻击载荷Payloads PayloadsSets:这里我们设置我们Payloads的数量类型。你可以定义一个或多个有效载荷;有效载荷的数量取决于攻击类型定义;对于未知标签中定义的攻击类型;可以为每个有效载荷提供有效载荷类型;并且每种有效载荷类型可以以不同方式定制Simplelis:简单字典Runtimefile:运行文件Customiterator:自定义迭代器(可以在字典前后加任意字符)Charactersubstitution字符替换CasemodificationRecursivegrepillegalunicode:非法字符Characterblocks:字符块Numbers:数字组合Dates:日期组合Bruteforce:暴力破解Nullpayloads:空payloadUsernamegenerator:用户名生成copyotherpayload:复制其他payload PayloadOptions〔Simplelist〕:该选项会根据PayloadSets的设置而改变 PayloadProcessing:对Payload进行编码、加密、截取等操作 如下:是我们对payload进行base64编码 PayloadEncoding:burpsuite还会默认自动对我们payload中的一些字符进行URL编码,我们可以勾选也可以取消 Options模块 该模块是用来对请求头和请求过程以及请求结果的一些设置 然后我们点击Options选项卡,该选项卡包含了requestheaders,requestengine,attackresults,grepmatch,grepextrack,greppayloads和redirections。你可以在发动攻击之前,在主要Intruder的UI上编辑这些选项,大部分设置也可以在攻击时对已在运行的窗口进行修改。 RequestHeaders:这些设置控制是否在Intruder是否更新配置请求头 如果选中UpdateContentLengthheader,BurpSuite会使用每个请求的HTTP主体长度的正确值,添加或更新这个请求里HTTP消息头的内容长度。这个功能对一些需要把可变长度的有效载荷插入到HTTP请求模板主体的攻击是很有必要的。这个HTTP规范和大多数web服务器一样,需要使用消息头内容长度来指定HTTP主体长度的正确值。如果没有指定正确值,目标服务器会返回一个错误,也可能返回一个未完成的请求,也可能无限期地等待接收请求里的进一步数据。 如果选中SetConnection:close框,则BurpSuite会添加或更新HTTP消息头的连接来请求在每个请求后已关闭的连接。在多数情况下,这个选项会让攻击执行得更快。 RequestEngine:设置发送请求的线程、超时重试等 AttackResults:设置攻击结果的显示 GrepMatch:在响应中找出存在指定的内容的一项 GrepExtract:通过正则提取返回信息中的内容 GrepPayloads:这些设置可以用于包含已提交的有效负载的反射的标志结果项目。如果启用了此选项,BurpSuite会添加包含一个复选框指示当前负载的值在每个响应发现新的结果列 Redirections:重定向响应,控制Burp在进行攻击时如何处理重定向 一处爆破点 第一步,我们将抓取到的数据包发送到Intruder模块。右键SendtoIntruder 在Intruder模块下的Positions,burpsuite会自动把可能是爆破的地方进行标记。我们可以点击右边的clear清除,然后选择我们自己要爆破的地方,点击add 这里,我们的Attacktype选择默认的Sniper,我们这里只爆破passwd密码字段 然后我们点击Payloads,去设置我们的字典密码 去Grepmatch,这是对结果进行匹配的。也就是说对数据包返回的结果进行匹配,匹配规则我们自己设置。我们把ExcludeHTTPheaders这里的勾选去掉,因为我们是根据返回头里面是否包含index。php来判断是否登录成功的!这就要我们分析登录成功和登录失败返回数据中哪里不同来判断是否登录成功 Startattack开始攻击 这里对匹配到我们规则的项自动勾选上了,可得知,这就是我们正确的密码 多处爆破点 Attacktype攻击类型,这里我们选择Clusterbomb,这个模式下可以设置多处爆破点。这里我们设置username和password两处爆破点 然后去设置我们的payload了,因为爆破点有两处,所以,两处都得设置payload 对第一处爆破点设置payload 对第二处爆破点设置payload 设置对结果进行Grepmatch,和上面一样 Attack攻击,查看结果 Spider模块(爬取网站目录) 该模块是根据网页中的链接进行爬取目录树结构,而不是利用爆破的方法进行爆破 开启我们的BurpSuite,拦截网站数据包,右键,SendtoSpider 接下来会弹出一个警告弹窗提示:这个Item不在当前的作用域中,是否将这个网站添加到作用域中,我们点击Yes 然后我们切换到Spider窗口,就会看到BurpSuite已经在爬目录了。 并且我们的scope中也有该网站了 爬取到有些网页需要登录,会弹出页面叫你填表单。可以填好提交,也可以忽视它 Spider标签的Options标签是对爬虫的设置。我这里取消勾选了Checkrobots。txt选项,这样BurpSuite就会爬取robots。txt不允许爬取的目录了。还有一个选项是passivelyspiderasyoubrowse(被动蜘蛛浏览),BurpSpider可以以被动和主动模式运行。 还有一个选项是ApplicationLogin,我们可以在这里设置默认的账号密码。如果bp爬取到需要登录的网页,就会填入我们输入的账号密码。 还有就是爬虫的线程数,我们可以在SpiderEngine这里设置 最后,如果Spider的Contro窗口,如果请求队列是0,并且爬取了一段时间,说明已经爬取完成 点击TargetSitemap,可以看到爬取网站的目录结构 只拦截特定网站的数据包 切换到proxy页面的options的InterceptClientRequests 然后点击Add,比如我们只想拦截http:baidu。com域名下的所有子域名的数据包,我们可以如下。 最后多了下面这一行,以后我们的burpsuite的拦截模式开启了,也只会拦截http:baidu。com域名下的数据包 Scanner扫描模块 Scanner模块主要用于自动检测Web系统的各种漏洞。Scanner扫描模块和其他扫描器不同的是,Scanner扫描是对BurpSuite当前历史记录中抓到的数据包进行扫描。也就是他不会进行自动化的对网站先爬虫然后扫描。所以进行Scanner扫描前,我们先将代理的Intercept模块设置为off,然后手动浏览网站的所有页面,在进行扫描。 主动扫描 当使用主动扫描时,BurpSuite会向应用发送新的请求并通过Pyaload验证漏洞,这种模型下的操作会产生大量的请求和应答数据。在生产情况下不建议使用主动扫描。 点击TargetSitemap,右键我们需要检测的网站Activelyscanthishost 此时弹出过滤的设置,保持默认选项,NextOk。即可扫描该网站。 也可以在ProxyHTTPHistory,右键需要检测的网站Doanactivescan。 扫描结果可以在ScannerIssueactivity下查看。 Issueactivity标签 Livescanning 实时扫描可让您决定哪些内容通过使用浏览器的目标应用,通过BurpProxy服务器进行扫描。您可以实时主动扫描设定liveactivescanning(积极扫描)和livepassive(被动扫描)两种扫描模式。 LiveActiveScanning:积极扫描。当浏览时自动发送漏洞利用代码 IssueDefinitions漏洞列表,列出了burp可以扫描到的漏洞详情 当扫描完成后,我们可以在Target标签的Sitemap下右键该网站,IssueReportissuesforthishost,来导出扫描报告 被动扫描 当使用被动扫描时,BurpSuite不会重新发送新的请求,只是对已经存在的请求和应答进行分析。 被动扫描的使用和主动扫描一样 Sequencer模块 该模块主要用来检查Web应用程序提供的会话令牌的随机性。并执行各种测试。 Comparer模块 该模块主要用来执行任意的两个请求,响应或任何其它形式的数据之间的比较 BurpSuite中好用的第三方插件sqlmap:这是直接在burpsuite中调用sqlmap的插件JSONBeautifier:这是对JSON数据进行美化的插件,直接Extender中有BurpCollector:这是收集BurpSuite中历史记录中的路径和参数的一款插件JSONandHTTPP:这是将JSON数据和HTTP互相转换的插件