测试身份验证和会话管理----用户名枚举
文章目录
前言
在本节中,将使用一个普通用户名列表向应用程序提交多个请求,并通过比较响应来确定哪些提交的名称属于现有用户。
提示:以下是本篇文章正文内容,下面案例可供参考
一、用户名枚举
要破解用户/密码验证机制的第一步是发现有效的用户名。方法之一是通过枚举,枚举web应用程序中的用户是通过分析在登录、注册和密码恢复页面等位置提交用户名时的响应来完成的。
二、使用步骤
1.靶场:OWASP BWA
靶机:WebGoat
Kali Linux上使用Burp Suite作为代理。
几乎所有的应用程序都为用户提供了在忘记密码时恢复或重置密码的渠道。当不存在用户名时,这些应用程序也能识别出来,这可以用来枚举出的方式,现有名称的列表:
2.在kali linux中开启Burp Suite Community Edition,并打开BP的Chromium浏览器。
Chromium登录:http://192.168.40.150/WebGoat/attack
如下(示例):
靶场的地址
搜索靶场的IP地址 登录过程中使用的用户名和密码是:webgoat
进入WebGoat后,点击start
点击Authentication Flaws,会出现Forgot Password等下拉菜单
选择Forgot password,弹出输入User Name的页面,如果没有可以点击Restart this Lesson
提交任意用户名(例如xshell),而该用户在数据库中不存在,将收到一条消息,说该用户名无效
. 然后可以假设,当提供了有效的用户名时,响应是不同的。下面要对此进行测试,请将请求发送Intruder模块。
在Burp的Proxy/HTTP history中,我们找到刚才输入User-name是xshell的那个数据包,如上图示
对该数据包单机右键选择Send to Intruder
进入Intruder模块,设置用户名作为唯一要破解的位置:
点击Clear§
在最后一行,Username=xshell处,选择xshell,在点击Add§按钮
![(https://img-blog.csdnimg.cn/3d31712bd2404cfeb69dc355fd92a537.png#pic_center)
在最后一行,Username=xshell处,选择xshell,在点击Add§按钮
转到Payloads来设置将在攻击中使用的用户字典列表。Payload type保持默认类型为Simple list简单列表,然后单击Load按钮来加载 /usr/share/wordlists/metasploit/http_default_users.txt文件
现在知道了用户不存在时的响应,可以使用Burp告诉该消息何时出现在结果中。转到 Intruder | Settings | Grep – Match,全选列表内容,点击Remove清除列表
勾上
选择
勾选Flag result items with responses matching these expressions,
再输入Not a valid username,然后点击Add。
返回Intruder | Positions,点击Start attack,开始攻击。
请注意,有一些名称(如admin),其中无效用户名的消息没有使用Burp Suite标记,这些名称在应用程序中是有效的:
输入用户名admin,What is your favorite color?输入green,可以看到密码,也就是用户名admin是正确的,用户名root的颜色是green
2.更多详情
|浏览文章观看学习| 主动上手练习|
学习收获
就是按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,我们采纳这个解,否则抛弃它。在列举的过程中,既不能遗漏也不应重复。
学习心得
时间过的很快,一学期的计算机信息安全课要结束了。通过这一学期的学习,使得自己在计算机信息安全这一方面有了更多的了解也有了更深刻的体会,对计算机信息安全也有了更多的兴趣
分析
枚举算法的优点:
1.由于枚举算法一般是现实生活中问题的“直译”,因此比较直观,易于理解;
2.由于枚举算法建立在考察大量状态、甚至是穷举所有状态的基础上,所以算法的正确性较高。
而枚举算法的缺点也有很多:
1.枚举算法的最大缺点就是运算量很大,解题效率不高;
2.枚举算法只能解决数据范围较小的问题;
说得通俗一点,枚举算法就是利用计算机计算效率高,而创造出来的正确性很高的算法
而枚举算法的大致思路一般有两条:
1.确定枚举对象、范围和判定条件。
2.逐一枚举可能的解并验证每个解是否是问题的解。
制作枚举算法时的三要素:
1.循环(枚举问题的解)
2.条件判断(筛选问题的解)
3.输出解的形式(输出所有符合题目要求的解或输出解的个数)
并且还要注意四个点:
枚举时要注意数据范围,列出所有可能情况,不能重复,不能遗漏;
枚举时要尽量缩小数据范围,提高计算效率,或者进行优化
一一罗列,不能盲目枚举
总结
如果正在测试一个需要用户名和密码才能执行操作的web应用程序,需要寻找攻击者发现有效的用户名和密码的方法。在登录、注册和密码恢复页面中,对有效和无效用户的响应稍有不同,就会让找到一个有效信息。 分析对类似请求的响应差异是作为渗透测试人员需掌握的技能。可以使用Burp Suite等代理工具来记录原始请求,Intruder模块通过变量(用户名)的值的变化多次重放该请求。Intruder模块还允许自动搜索回包字符串,并指示在哪个响应中找到该字符串。