翻译来自:掣雷小组
成员信息:
thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt
标记红色的部分为今日更新内容。
第四章、测试身份验证和会话管理
4.0、介绍
4.1、用户名枚举
4.2、使用Burp Suite进行登陆页面的字典攻击
4.3、使用Hydra强制进行暴力攻击
4.4、使用Metasploit破解Tomcat的密码
4.5、手动识别Cookie中的漏洞
4.6、攻击会话固定漏洞
4.7、使用Burp Sequencer评估会话标识符的质量
4.8、滥用不安全的直接对象引用
4.9、执行跨站点请求伪造攻击
4.7、使用Burp Sequencer评估会话标识符的质量
Burp Suite的Sequencer从服务器请求数千个会话标识符(例如,通过重复登录请求),并分析响应以确定生成标识符的算法的随机性和密码强度。算法越强,攻击者就越难复制有效ID。
在本文中,我们将使用Burp Sequencer分析两个不同应用程序生成的会话ID,并确定安全会话ID生成算法的一些特征。
环境准备
我们将使用WebGoat和RailsGoat(使用Rubyon Rails框架制作的WebGoat版本)。 这两个应用程序都可用于易受攻击的VM(vm_1)。
你需要在RailsGoat中创建一个用户;所以,得到主页上进行注册。
实战演练
我们将开始分析RailsGoat的会话cookie。 我们可以使用任何PHPSESSID或JSESSIONID cookie,但我们将利用这个作为自定义值来查看其他概念。将浏览器配置为使用Burp Suite作为代理,然后按照以下步骤操作:
1. 登录RailsGoat并查看代理的历史记录,以获取设置会话cookie的响应。 你应该有标题Set-Cookie并且应该设置一个名为的cookie
_railsgoat_session.
2. 在这种情况下,这是对/ railsgoat / session的请求。 右键单击URL或请求或响应的正文,然后选择 发送到Sequencer:
3. 在继续使用Sequencer之前,让我们看看会话cookie包含的内容。 这个_railsgoat_session cookie看起来像一个base64编码的字符串,用两个连字符( - )连接到十六进制字符串。 我们将在本文后面解释这个推论。选择cookie的值,右键单击它,然后选择Send to Decoder。
4. 进入解码器,我们首先将其解码为URL,然后在第二行中将其解码为base64:
这个好像base64代码包含三个字段:session_id,它是一个十六进制值,也许是一个哈希值; csrf_token,用于防止跨站请求伪造(CSRF)攻击的值; 和user_id,似乎只是两个字符,可能是一个序号。 cookie的其余部分( - 之后的部分)不是base64编码的,并且看起来是随机哈希。 现在,我们对会话ID有了更多的了解,并且已经学习了一些关于编码和Burp Suite的解码器的知识。
5. 让我们继续我们在Sequencer中的分析。 转到Burp Suite中的Sequencer选项卡,确保选择了正确的请求和cookie:
6. 我们知道cookie是用base64编码的; 转到分析选项并在分析之前选择Base64-decode。 这样,Burp Suite将分析cookie中的解码信息。
7. 返回实时捕获选项卡,然后单击开始实时捕获。 将出现一个新窗口; 我们等待它完成。这需要一些时间。
8. 完成后,单击立即分析:
我们可以看到cookie质量很好; 这意味着攻击者不容易猜到。 随意浏览所有结果选项卡。
9. 这是一个高质量的会话cookie的例子;这次让我们来看一个不太好的会话cookie。登录WebGART并进入会话管理缺陷,劫持会话。
10.这个练习是关于通过劫持有效的会话ID来绕过登录表单的。尝试使用任何随机的用户名和密码进行登录,只是为了将其记录在Burp Suite中:
11.在这种情况下,设置会话cookie的请求是第一次加载练习的请求;在Burp Suite的历史中搜索Set-Cookie:WEAKID=响应头。这个ID仅仅是由连字符分隔的数字。
12.将请求发送到定序器
13.选择弱cookie作为目标进行分析。
14.启动实时捕获并等待它完成并执行分析:
对于这个ID,我们可以看到质量非常差。就角色分析而言,我们可以有更好的想法:
这个图表显示了每个字符位置的变化程度或重要性。我们看到,重要性从位置2增加到位置3,从位置3增加到4,然后再次下降到5,也就是连字符的位置。这表明第一ID的一部分是增量的,并且可以应用于第二部分,但是具有不同的速率。
原理剖析
BurpSuite's Sequencer对大量会话标识符(或从我们提供给它的响应中提供的任何信息)执行不同的统计分析,以确定这些数据是否被随机生成,或者是否存在允许att的可预测模式Access生成有效ID并劫持会话
首先,我们分析了一个复杂的会话cookie,该cookie由使用base64算法编码的数据结构和似乎是SHA-1哈希的数据结构组成。 我们可以告诉第一部分是base64编码的,因为它包含小写和大写字母,数字,也可能包含加号(+)或斜杠(/),它也以%3D结尾,这是URL转义 sequence = =,base64中的字符串终止符。我们说cookie的第二部分是SHA-1哈希,因为它是一个40位的十六进制字符串; 每个十六进制数字代表4位,4位* 40位= 160位; 和SHA-1是最流行的160位散列算法。
然后,我们分析了一个弱生成的会话ID。 很明显它是增量的,因为在十进制数字中,最右边位置的数字比最近的左手邻居更频繁地变化十倍。 ID的第二部分基于其长度和最高有效数字,表示Unix时间戳(https://en.wikipedia.org/wiki/Unix_time)。
另请参阅
进一步深入了解WEAKID会话cookie的生成机制,并尝试找出一种方法来发现活动会话cookie以绕过登录。 使用BurpSuite的Repeater和Intruder来促进这项工作。
要了解有关如何区分编码,散列和加密的更多信息,请查看以下优秀文章:
https://danielmiessler.com/study/encoding-encryption-hashing-obfuscation/。