测试身份验证和会话管理
第4章-1_测试身份验证和会话管理
Web服务是指在网络上提供数据和功能的一种服务,可以通过Web协议进行访问,通常使用XML或JSON等格式进行数据交换。它的基础理论包括:
-
HTTP协议:Web服务的通信协议一般采用HTTP协议。HTTP是一种基于请求-响应模式的协议,客户端发送一个请求,服务器端返回一个响应。请求和响应都包含一个头部和一个主体。
-
XML和JSON:Web服务的数据交换格式一般采用XML或JSON。XML是一种可扩展标记语言,可以描述各种复杂的数据结构,且具有良好的兼容性。JSON是一种轻量级的数据交换格式,具有更好的可读性和更快的解析速度,适合用于Web服务的数据交换。
-
WSDL:Web服务描述语言,是一种基于XML的语言,用于描述Web服务的接口和可用操作。它将Web服务的操作列表、输入和输出参数等内容描述清楚,方便客户端对Web服务进行访问。
-
SOAP:简单对象访问协议,是一种基于XML的协议,用于在Web服务之间交换消息。SOAP规定了一种标准的XML格式,可在各种不同的操作系统和编程语言之间进行通信。通过SOAP,Web服务可以进行远程过程调用(RPC)。
-
REST:表述性状态传递,是一种基于HTTP协议的Web服务架构风格,可用于在网络上建立分布式系统。REST使用较简单的HTTP协议,不需要像SOAP那样使用复杂的XML消息格式,因此速度较快。REST的主要概念包括资源、URI、HTTP方法、状态码等。
. 在Web服务中,身份验证和会话管理是非常重要的方面,因为它们确保只有授权的用户才能访问和操作受保护的资源。以下是一些测试身份验证和会话管理的方法:
-
身份验证测试:测试身份验证的目的是确保只有经过身份验证的用户才能访问受保护的资源。测试人员应该尝试使用无效凭据、无效用户名和密码、不同的身份验证方法等进行测试。
-
会话管理测试:测试会话管理的目的是确保会话在过期或终止后不会继续使用。测试人员应该尝试在会话期间更改密码、用其他浏览器或机器登录、进入受保护的页面等进行测试。
-
安全性测试:测试安全性的目的是确保Web服务不容易受到攻击和滥用。测试人员应该尝试使用SQL注入、跨站点脚本、会话劫持等攻击方法进行测试。
-
审计测试:测试审计的目的是确保Web服务可以跟踪和记录用户访问和操作敏感资源的情况。测试人员应该尝试访问和操作敏感资源,并根据系统日志和审计跟踪功能检查是否有效。
-
可伸缩测试:测试可伸缩性的目的是确保Web服务可以处理多个并发或大量请求,而不会出现性能问题。测试人员应该尝试同时发送多个请求,以测试服务的负载能力和响应时间。
综上所述,测试身份验证和会话管理需要考虑多个方面,包括安全性、可伸缩性、审计等等。为了确保Web服务的安全和可靠性,测试人员应该仔细设计和执行测试方案,并记录所有测试结果和发现的问题。
4.1用户名枚举
4.1用户名枚举要破解用户/密码验证机制的第一步是发现有效的用户名。方法之一是通过枚举,枚举 Web应用程序中的用户是通过分析在登录、注册和密码恢复页面等位置提交用户名时的响应来完成的。在此小节中,我们将使用一个普通用户名列表向应用程序提交多个请求,并通过比较响应来确定哪些提交的用户名属于现有用户。环境准备对于这个小节中,我们将在靶机VM_1中使用WebGoat脆弱主机,并且在Kali Linux上使用Burp Suite作为我们的代理。实战演练几乎所有的应用程序都为用户提供了在忘记密码时恢复或重置密码的渠道。当不存在用户名时,这些应用程序也能识别出来,这可以用来枚举出现有名称的列表:
 ,如果弹出登录对话框,则使用webgoat作为用户名和密码。
2.http://www.webgoat, http://www.webgoat认证缺陷|忘记密码。如果我们提交任意用 户名,而该用户在数据库中不存在,我们将收到一条消息,说该用户名无效:
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、用户名不合法:
- 现在,开始攻击。请注意,有一些名称(如 admin),其中无效用户名的消息没有使用Burp Suite 标记,这些名称在应用程序中是有效的:
4.2-使用Burp Suite进行登陆页面的字典攻击
4.2 使用Burp Suite对登录页面进行字典攻击一旦我们获得了目标应用程序的有效用户名列表,我们就可以尝试爆破攻击,它会尝试所有可能的字符组合,直到找到有效的密码。但是大量的字符组合以及客户端和服务器之间的响应时间,爆破攻击在Web应用程序中是不可行的。一个更现实的解决方案是字典攻击,它采用一个简化的高可能性密码列表,并使用有效的用户名进行尝试。中文名称:BurpSuite入侵者;实战演练我们将使用 WackoPicko 管理部分登录来测试此攻击:
1.首先,我们将Burp Suite设置为浏览器的代理。
2.浏览到 http://192.168.56.11/WackoPicko/admin/index.php?page=login3.我们将看到一个登录表单。 我们尝试测试用户名和密码。
4·现在,在Proxy的历史记录里查找我们刚刚通过登录尝试发出的POST请求,并将其发送给 Intruder。
5·单击【ClearS】按钮,清除预先选择的插入位置。6.现在,我们通过突出显示参数的值并单击【Add§】按钮,将位置置于两个POST参数(管理员名、密码)7.由于我们的密码列表针对所有用户,因此我们选择Cluster bomb作为攻击类型
8 .入侵者有效载荷。9.在Payloads Options [Simple list] (选项[简单列表])部分的文本框中,添加以下名称:13用户约翰adi14. jpeg爱丽丝鲍勃管理员用户wackopicko亚当样本系统通过密码
10.现在,从Payload Set框中选择列表2.此列表将是我们的密码列表,我们将使用2017年最常用的25个密码进行此练习(http://time.com/5071176/worst-passwords-2017/) :
11.开始攻击:我们可以看到所有响应似乎具有相同的长度,但是有一个 admin / admin 组合具有状态 303(重定向)和次要长度。 如果我们检查它,我们可以看到它是重定向到管理员的主页: