Kali 渗透测试:使用Burp Suite 对网络认证服务的攻击
Burp Suite 是用于攻击Web应用的集成平台,这个平台集成了许多工具。如何使用它来破解一些网站的密码。首先我们查看一个需要用户名和密码的登录界面(这个实例使用了经典的Web渗透测试平台Pikachu),如下图所示:
首先,在Kali中启动Burp Suite这个工具,如下图所示:
Burp Suite在这里的主要作用是在用户使用的浏览器和目标服务器之间充当一个中间人的角色。这样当我们在浏览器中输入数据之后,数据包首先会被提交到Burp Suite处,Burp Suite可以将这个数据包进行复制,修改之后再提交到服务器处。所以Burp Suite 此时相当于一个代理服务器。
首先启动Burp Suite,其工作界面如下图所示:
我们要将Burp Suite 设置为代理服务器。首先单击“Proxy”, 如下图所示:
然后切换至“Proxy”选项卡的“Option”选项下,选择“127.0.0.1:8080”,如下图所示:
现在Burp Suite成了一个工作在8080端口上的代理服务器。接下来我们就需要在浏览器中将代理服务器指定为Burp Suite。然后打开使用的 浏览器,Kali中默认的浏览器是Firefox,单击右侧的工具菜单,如下图所示:
选择“Preferences”然后在Firefox中选择“General”–>“Network Settings”–>“Settings”, 如下图所示:
请注意,每种浏览器的设置往往不一样,需要考虑具体情况。打开“Connection Settings” 对话框之后,选中“Manual proxy configuration”,在“HTTP Proxy”处输入“127.0.0.1”, 在“Port”处输入“8080”,如下图所示:
设置完成之后,单击“OK”按钮,然后我们用这个浏览器来访问目标地址,这里的目标地址为http://192.168.68.205:9999/pikachu, 因为此时浏览器中向目标服务器发送的请求都被Burp Suite所截获,所以现在服务器并没有返回任何数据。切换回Burp Suite来处理截获的数据包,通常由放行(Forward)、丢弃(Drop)、拦截(Intercept is on)、操作(Action)这几种操作。
我们要选择放行之前的数据包,这样才能正常访问登录界面。执行的方法就是单击上图中红框内的“Forward”,没在浏览器执行一次操作,都需要执行一次放行操作。进入登录界面,如下图所示:
接下来构造登录数据包,在上图中的登录界面中,输入一个用户名admin(假设我们已经知道用户名admin,密码未知),随意输入一个密码,如“000000”,然后单击“Login”按钮,如下图所示:
切换到Burp Suite, 这时的“Intercept”变成黄色,表示截获到了数据包,这个数据包的格式如下图所示,最关键的是红框内部分,截获到的登录数据包:
单击鼠标右键,选择Send to Intruder,如下图所示:
然后单击“Intruder”选项卡,并在其中选择“Positions”,如下图所示:
在这个模块中,我们需要向Burp Suite指明密码所在的位置,在这操作界面中,Burp Suite虽然不能确切的知道密码所在的位置,但是它给出了4个可能的位置,也就是上图中带灰色底纹的部分。Burp Suite中使用一堆“§”来表示密码的区域,我们单击右侧的“Clear §”按钮,清除所有默认的参数,如下图所示:
然后把光标移动到密码位置,也就是“000000”的前面,单击按钮“Add §”。这样就成功地标识出来密码的位置,如下图所示:
切换到“Payloads”选项,选择要使用的Payload set, 这里我们选择要设定进行密码破解目标的个数,如我们只破解密码,这里Payload set处就要选择1;如我们既不知道用户名也不知道密码,这里Payload set处就要选择2。Payload type 选择“Simple list”, 如下图所示:
接下来我们要加入使用的字典,点击“Load”按钮,如下图所示:
这里我们选择“small.txt”作为破解的字典(small.txt里面实际上没有这次实验的密码123456,我们需要手动添加一行内容123456以保证实验成功,如果实际应用可以使用较大字典)如下图所示:
设置完成之后,单击菜单栏的“Intruder”,切换到“Payloads”,选择“Start attack”,如下图所示:
现在就开始扫描了,因为免费版限制了多线程,所以攻击过程十分漫长,如下图所示:
扫描到部分内容的时候,我们可以按照Status列或者Length列进行排序。以Status列为例,我们会看到所有数据包该列的值均为200,如图所示。在这种情况下,我们就要查看Length值,一般Length的值与其他数据包不同的话就代表是正确的。但是这种判断方式的结果并不精确,除了123456返回的长度不一样之外,0返回的长度也不一样,我们应该尝试更好的方式。如登录成功的话,界面下方会出现“login success”,如下图所示,登录失败的话则不会。
我们可以尝试判断每一个Response中是否包含“login success”,如果包含则表示成功,否则表示失败。可以看到Response中包含“login success”,如下图所示:
在“Options”中有一个“Grep-Match”,里面有一个匹配选项,我们首先使用“Clear”按钮清空里面的内容,然后将“login success” 添加到表中,如下图所示:
然后单击“Start attack”, 执行时可以看到里面多了“login success”列, 如下图所示:
可以看到,只有123456的Response中包含了“login success”。如果用户名和密码都不知道,可以重复之前的动作。如下图所示,需要同时为admin 和000000添加“§”。
这时Attack type一共有4种可选类型,分别是Sniper、Battering ram、Pitchfork以及Cluster bomb,如下图所示:
这4种类型中我们主要是使用其中的Sniper和Cluster bomb。Sniper类型主要应用于一个位置(如已知用户名,不知道密码)时。Cluster bomb类型主要应用于两个位置(用户名和密码都不知道)时,它要使用两个Payload,然后将两个Payload里面的内容进行笛卡尔积运算。如Payload1里面的内容a、b;Payload2里面的内容1、2,就会产生以下组合。
? ◆ Usrname: a; password:1。
? ◆ Usrname: a; password:2。
? ◆ Usrname: b; password:1。
? ◆ Usrname: b; password:2。
使用Burp Suite来同时破解用户名和密码很简单,只需要在上图中选择“Cluster bomb”, 然后分别选择Payload set中的1和2即可,如下图所示:
使用Burp Suite是一种十分通用的办法,但是实际中这种暴力破解方式很难成功,因为消耗的时间资源太多。如果目标网站设置了验证码或者限制登录次数,还需要考虑是否可以绕过。
|