专栏首页玄魂工作室Kali Linux Web渗透测试手册(第二版) - 4.1 - 介绍+用户名枚举

Kali Linux Web渗透测试手册(第二版) - 4.1 - 介绍+用户名枚举

翻译来自掣雷小组

成员信息:

thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt

本期封面大图地址:http://images4.fanpop.com/image/photos/18200000/Legends-silent-movies-18236311-1680-1050.jpg

标记红色的部分为今日更新内容。

第四章、测试身份验证和会话管理

4.0、介绍

4.1、用户名枚举

4.2、使用Burp Suite进行登陆页面的字典攻击

4.3、使用Hydra强制进行暴力攻击

4.4、使用Metasploit破解Tomcat的密码

4.5、手工挖掘cookie中的漏洞

4.6、攻击会话固定漏洞

4.7、使用Burp排序器评估会话标识符的质量

4.8、滥用不安全的直接对象引用

4.9、执行跨站点请求伪造攻击


4.0、介绍

当应用程序管理的信息不被公开时,需要一种机制来验证是否允许用户查看某些数据,这称为身份验证。当今web应用程序中最常见的身份验证方法是使用用户名(或标识符)和密码组合。

HTTP是无状态的协议,这意味着它的每个请求都是独一无二的,因此应用程序还需要一种方法来区分来自不同用户的请求,并允许它们执行可能需要由同一用户执行的一系列请求和同时连接的多个用户执行的任务。这称为会话管理。cookie中的会话标识符是现代web应用程序中最常用的会话管理方法,尽管Token令牌(包含在每个请求的授权头中发送的用户标识信息的值)在某些类型的应用程序中日益流行,例如后端web服务。

在本章中,我们将介绍检测web应用程序身份验证和会话管理中一些最常见漏洞的过程,以及攻击者如何滥用这些漏洞以获得对受限制信息的访问。


4.1、用户名枚举

要破解用户/密码验证机制的第一步是发现有效的用户名。方法之一是通过枚举;枚举web应用程序中的用户是通过分析在登录、注册和密码恢复页面等位置提交用户名时的响应来完成的。

在此小节中,我们将使用一个普通用户名列表向应用程序提交多个请求,并通过比较响应来确定哪些提交的名称属于现有用户。

环境准备

对于这个小节中,我们将在vm_1靶机中使用WebGoat脆弱主机,并且在Kali Linux上使用Burp Suite作为我们的代理。

实战演练

几乎所有的应用程序都为用户提供了在忘记密码时恢复或重置密码的渠道。当不存在用户名时,这些应用程序也能识别出来,这可以用来枚举出现有名称的列表:

1. 从Kali Linux的浏览器打开WebGoat (http://192.168.56.11/WebGoat/attack),如果弹出登录对话框,则使用WebGoat作为用户名和密码。

2. 进入WebGoat后,转到Authentication Flaws | Forgot Password。如果我们提交任意用户名,而该用户在数据库中不存在,我们将收到一条消息,说该用户名无效:

3. 然我们可以假设,当提供了有效的用户名时,响应是不同的。要对此进行测试,请将请求发送Intruder模块。在Burp的历史中,它应该是一个

http://192.168.56.11/WebGoat/attack?Screen=64&menu=500的POST请求。

4. 进入Intruder模块,设置用户名作为唯一要破解的位置:

5. 然后,转到Payloads来设置我们将在攻击中使用的用户字典列表。保持默认类型为简单列表,然后单击Load按钮来加载/usr/share/wordlists/metasploit/http_default_users.txt文件:

6. 现在我们知道了用户不存在时的响应,我们可以使用Burp告诉我们该消息何时出现在结果中。转到 Options | Grep – Match清除列表。

7. 添加一个新的字符串来匹配Not a valid username:

8. 现在,开始攻击。请注意,有一些名称(如admin),其中无效用户名的消息没有使用Burp Suite标记,这些名称在应用程序中是有效的:

原理剖析

如果我们正在测试一个需要用户名和密码才能执行操作的web应用程序,我们需要寻找攻击者发现有效的用户名和密码的方法。在登录、注册和密码恢复页面中,对有效和无效用户的响应稍有不同,就会让我们找到一个有效信息。

分析对类似请求的响应差异是我们作为渗透测试人员需掌握的技能。我们可以使用Burp Suite等代理工具来记录原始请求,Intruder模块通过变量(用户名)的值的变化多次重放该请求。Intruder模块还允许我们自动搜索回包字符串,并指示我们在哪个响应中找到该字符串。

本文分享自微信公众号 - 玄魂工作室(xuanhun521)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CTF实战33 综合实战和讲解三(讲解部分)

    该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

    用户1631416
  • 看代码学PHP渗透(3) - 实例化任意对象漏洞

    大家好,我们是红日安全-代码审计小组。最近我们小组正在做一个PHP代码审计的项目,供大家学习交流,我们给这个项目起了一个名字叫 PHP-Audit-Labs 。...

    用户1631416
  • Python算法和数据结构:在二叉树中找到和为sum的所有路径

    思路:先用递归创建一颗二叉树,作为输入;然后对这课二查树进行递归遍历,递归中每遍历一个节点,下次递归的和为sum-data;并用一个数组记录遍历过的路径,当存在...

    用户1631416
  • 如何将 Spring Boot Actuator 的指标信息输出到 InfluxDB 和 Prometheus

    Spring Boot Actuator是Spring Boot 2发布后修改最多的项目之一。它经过了主要的改进,旨在简化定制,并包括一些新功能,如支持其他We...

    程序猿DD
  • Centos6.5 安装部署KVM

    KVM是开源软件,全称是kernel-based virtualmachine(基于内核的虚拟机),是一个开源的系统虚拟化模块,基于硬件的完全虚拟化,不过需要硬...

    泽阳
  • 自利性偏差

        对自己有利的一面来判断客观事物,把不好的、错误的原因归于其他人或者外因,这种归因错误也很容易导致偏见和对对方的刻板印象,心理学上常称其为“自利性偏差”

    宇相
  • Open edX 学习、开发、运维相关链接整理

    所需知识: Linux Git Python (Django Mako coffeescript sass) (MongoDB Mysql) Ansible-p...

    庞小明
  • Python进阶-面向对象-上

    对象指的是类的实例,类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫做类的实例化。

    小团子
  • 【BlackHat 2017】美国黑客大会首日议题汇总,演讲PPT下载也在这里

    今年是 Black Hat 举办的第 20 个年头,高温酷暑也挡不住全世界黑客和安全人员奔赴拉斯维加斯的热情。毕竟这可是一年一度的盛大狂欢啊。今年的 BHUSA...

    FB客服
  • Layui 时间线

    用户5760343

扫码关注云+社区

领取腾讯云代金券