爆破是渗透测试中必不可少的一部分,对于没有太大价值可利用的漏洞或是业务只有一个登陆页面时,爆破更是我们的最合适的选择。那么在爆破时,抛去目标系统对爆破频率的限制,如果遇到较为复杂的密码,该如何顺利进行密码破解?
以tomcat为例,首先大家可以先想一想,tomcat后台在提交认证信息时,数据是以何种方式传输,是明文嘛?还是某种加密?还是编码?具体的认证请求包如下所示:
这边的Authorization字段就是用来做身份认证的,使用的是HTTP Basic认证,用户认证信息就是后面那一串,把他复制到BurpSuite的Decoder模块,使用Base64解码即可获取用户认证信息明文。那么之前的问题也有答案了,tomcat使用base64编码进行认证信息传输,使用的是HTTP Basic认证方式。
知道用户认证信息提交方式之后,我们可以把抓到的包发送到Intruder中进行爆破准备,但是有一点问题,我们在爆破目标测试系统的账户的时候,账号和密码往往是分离的,那这样其实兜了好几圈,不太好直接爆破。当然有人觉得可以用脚本先拼接所有格用户名和密码再进行编码组成一个新的字典,不是不行,但是这破坏了原有的单纯的密码字典的内容,使这个密码字典变成了只有tomcat可以用,而且每次有新的密码字典和用户名字典想要加入时,都必须经过处理,这样其实就事倍功半了。
Burpsuite的intruder模块其实包含了很多复杂密码的变异方式。知道了tomcat的密码格式,我们下拉intruder模块中的payload标签页的payload type:
选择custome iterator,就可以进行我们的自定义拼接,position的位置就是我们的拼接方式,那么根据tomcat密码的格式,我们可以很轻松的联想出如何进行拼接,第一位(position1)密码:
第二位(position2)密码:
第三位(position3)密码:
拼接完成后,还需要进行编码。在burpsuite中,对字典进行加密或编码处理,在payload标签页中的payload processing进行,当然首要你要清楚你的进行什么样的处理,到底是加密还是编码:
选择完成后,就是这样:
再记得把请求包特殊符号编码去掉=号(因为base64编码大概率会有=)
这样确认之后,直接start attack即可。
可以尝试再decoder中解密这个字符串:
这篇文章只是拿tomcat的特殊密码格式举例,burpsuite里还有很多其他格式,需要大家自己去多去联系,孰能生效,才能事半功倍。
BTW,安全测试课的同学可以通过学习的网络空间搜索引擎课程来进行tomcat爆破的合法实战
作 者:Testfan Covan
出 处:微信公众号:自动化软件测试平台
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接
。