hello大家好,我是小黑。今天给大家分享一个渗透小tip,做安服项目的时候可以水一个中低危(误)。
大家应该都知道,对一个登陆框进行爆破时,如果能【先爆破出用户名再针对存在的用户名爆破密码】,则比起【同时爆破用户名和密码】的方式能极大的提升爆破效率。
判断用户名是否存在通常是根据登陆失败后页面上的回显(响应包的长度)来判断,比如:
用户名存在时:“密码错误!”
用户名不存在:“用户名不正确!”
遇到这种情况,报告上就可以写一个:“低危漏洞—登陆界面未做模糊化处理”。然后就可以愉快的下班了~
但如果开发这样写:无论用户名是否存在,登陆失败的回显都是:“用户名或密码不正确!”,这种情况下是否就无法判断用户名的存在性了呢?今天给大家分享一个小tip,如何在模糊化处理的情况下尝试爆破用户名。
模糊化处理的情况下,可以根据服务器的响应时间来判断用户名的存在性,下面介绍一下如何用burp进行这个操作:
3、在爆破界面的Columns选项中勾选Response这两项。
4、按响应时间顺序排列,响应时间最长的即是有可能存在的用户名
5、此方法有一定的误差,可以更换可能存在的用户名在字典中的位置进行多次测试,如果发现多次测试后这个用户名仍然像腰间盘一样突出在首位,那基本可以确定此用户名存在了。
1、按照安全规范,数据库里保存的不是明文密码,而是密码的哈希值,通常使用md5算法进行哈希运算。
3、不能解密,那如何判断用户提交的密码和数据库里的相同?把用户提交的也哈希加密一下,然后对比哈希值是否相同就行了。
OK,说到这里问题应该很明显了:用户提交的用户名不存在时,数据库里就查不到密码,程序也就走不到哈希运算的步骤。
但用户名存在时,程序需要进行哈希运算,同时我们故意提交长密码拖延时间,就造成了服务器响应时间的差别,根据这个差别就可以判断用户名的存在性啦!
这是一个程序员过度优化造成的漏洞,不过危害确实不大就是了。
同时不知是有意还是无意的,有部分程序是在判断用户名之前就先把用户提交的密码进行了哈希运算。这样就避免了这种漏洞的产生。
同时网络环境也对该漏洞的利用有很大的影响,所以实战中不保证100%能够利用哦~
END.
喵,点个赞再走吧~
本文始发于微信公众号(小黑的安全笔记):通过响应时间爆破用户名
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/443389.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论