工具介绍
在网络安全的领域,你是否听说过抓包,挖掘漏洞等一系列的词汇,这篇文章将带你了解漏洞挖掘的热门工具------Burp Suite的使用。
Burp Suite是一款由PortSwigger Web Security公司开发的集成化Web应用安全检测工具,它主要用于网络安全领域,特别是针对Web应用程序的渗透测试。该软件是java制作的在得到jar文件之后,如果电脑上没有java环境或者java环境不匹配,依然会造成工具无法打开和使用。
在使用工具之前,我必须要提前声明:
合法使用 :用户应确保在授权和合法的情况下使用Burp Suite来帮助发现和修复系统中的安全漏洞。未经授权的使用可能是非法的和不道德的。
定期更新 :由于网络安全环境不断变化,用户应定期更新Burp Suite以获取最新的安全漏洞信息和修复措施。
谨慎操作 :在使用Burp Suite进行安全测试时,用户应谨慎操作,避免对目标系统造成不必要的损害或影响。
所以请不要在没有得到允许的情况下,或者你不确定某些功能的情况下随便操作别人的网站。否则,因为扫描或其他原因造成的损失,需要负法律责任。
功能介绍
拦截以及修改请求
在低版本的Burp中,我们通常要配置浏览器代理,这样我们的浏览器才能和Burp绑定使用,通常Burp做浏览器代理的话占用的是127.0.0.1的8080端口。而现在的更高版本的burp为了让我们的使用更加舒适,它配置了内置的浏览器,我们只需要点击Proxy的Intercept选项的open browser。

即可打开内置浏览器,如下所示,根据图标,感觉应该是Google的内核。

在浏览器中,我们输入某个网址,我们在打开输入的网站之后发现浏览器和我们平时用的没什么两样。

其实,它与我们平时的浏览器略有不同。由于这个浏览器是通过Burp控制的,所以我们可以通过Burp提前抓住服务器发送过来的包,这样浏览器就无法正常接收包,我们再提前把包里面的内容审核完毕或者修改完毕,就可以得到与服务器发送过来的不同的包(网页)。
这个时候,我们要打开intercept选项如下图:

之后,我们再在浏览器上输入某个网站的网址,它就无法在浏览器中打开,例如我们拿之前的express框架制作的样例进行测试,我们的网站监听的是192.168.1.18:8000。我们试一下能不能在内置浏览器上打开。
首先,在我们的虚拟机中打开网站的服务器。

接着,我们在浏览器中输入192.168.1.18:8000/hello看一下能不能呈现网页。

我们显而易见的发现了浏览器并没有呈现我们输入的url,但是在burp端我们却拦截了request(请求包)这说明,我们的请求并没有发出去,服务器根本没有接收到我们的请求。我们只需要点击一次Forward选项,这样我们就可以把拦截的包发送出去。
我们试想一下,如果我们在某个购物网站上购买的东西通过post请求发送回来时,我们改变商品的价格的值就可以改变最终商品的价格。多说无益,我们从Burp的官网上申请一个购物的网站作为我们本次尝试的靶场。实验:对客户端控件的过度信任 |Web 安全学院 (portswigger.net)使用的是这个网站,大家可以尝试注册一下,申请靶场的过程我不再过多的演示。

我们在尝试把某个商品放到购物车的时候,可以看到首先捕获到了一个带有post请求的包,这个包用我们前面用过的http请求构造分析之后,发现价格在请求体里,我们只需要修改请求体里面的内容,再通过forward选项把包放给浏览器即可。接下来,我们不再需要使用intercept拦截包,直接关闭拦截功能,正常操作浏览器即可。

我们发现购物车里面商品的价格变成了$0.01,那么我们直接点击place order付款。

我们惊奇的发现,在成功付款之后,我们只扣了$0.01,那么,你可能会想到,我在现实中,从网上购买一些东西通过这个方法,岂不是就便宜很多了,但实际上,这种情况,在实战中很少有。一般有一些安全意识的网站根本不会把价格放在前端里面,在传输的时候也不会不加密地把敏感内容赤裸裸的展现出来。因此,我们本次的攻击并不具有实践意义。
重新发送请求
我要向访问过的网站重新发送请求,如果你是python爬虫选手,你可能会用urllib或者request发送get_post请求,甚至你直接用socket手搓HTTP请求也是可以实现的。
但是我们的burp工具提供了非常方便的发送请求的方式,我们只需要从历史记录中找到原来的请求右键点击选择send to repeater,这样在我们的repeater选项卡中就可以看到原来的包。

我们再点击左上角的send就可以发送请求,在右边的框中我们就可以得到服务器给我们返回的包内容。这样比写代码更加方便了。
筛选HTTP流量
在一些网站中,我们向它发送请求,最终会得到许多的包,这些包虽然对我们的网页没有什么影响,但是我们在查看浏览记录,重新分析漏洞时,因为包的冗余过多,我们无法更好的挑选出我们想要的包。因此我们需要筛选。

在HTTP history中,我们可以看到这些是我们发送过的所有的请求。我们点击第一列左上角的#就可以选择让它们按序号或者按照时间的顺序进行排列。
在我们之前的测试中,我们用到了本地虚拟机的192.168.1.18:8000发送和接收请求,我想筛选出来所有的相关的请求。
首先,我右键点击后把它add to scope。

然后,我们点击上面的横条Filter,在弹出来的框里面选择show only in-scope items选项。

这样,我们就完成了筛选,我们再查看页面时就只剩下这个IP的请求了。

之后我们再发送其他网站的请求时,这里也不会显示对应的记录了。因此在测试其它的网页,我们需要把之前勾选的选项去掉。
漏洞扫描
这个功能在kali自带的burp中并没有,我们需要下载专家版或者企业版。可以搜索破解版从哪里下载。
burp scanner是非常成熟的扫描工具,我们只需要告诉它要扫描的地址就可以让它自己干活,我们休息了。
注:这种扫描可能导致网站崩溃,请在自己的网页或者靶场测试。
首先,点击New scan创建新的扫描。

接下来,选择扫描的网站。
选中lightweight之后开始扫描漏洞。

我们发现初始界面增加了一个新的扫描任务,我们要做的就是等待扫描完毕。

最终的扫描结果我们可以在target里面查看。

同时我们可以选择生成扫描报告。

按照上面的选项生成报告以后,一定要选择生成html,否则我们无法查看生成的报告。

最终给我们生成报告之后,我们打开可以发现扫描到的隐患是我们传输过程没有加密。