实验室:身份验证通过加密Oracle旁路
从业者
该实验室包含一个逻辑缺陷,该缺陷将加密甲板暴露于用户。要解决实验室,请利用此缺陷以访问管理面板并删除Carlos。
您可以使用以下凭据登录到自己的帐户:维纳:彼得
解决方案
- 使用启用“保持登录”选项并发布注释。使用BURP的手动测试工具研究相应的请求和响应。观察到
保持登录状态
cookie已加密。 - 请注意,当您尝试使用无效的电子邮件地址提交评论时,响应设置了一个加密
通知
cookie在将您重定向到博客文章之前。 请注意,错误消息反映了您的输入
电子邮件
clearText中的参数:无效的电子邮件地址:您的Valid-Email
推断这必须与
通知
曲奇饼。发送发帖 /邮寄 /评论
和后续获取 /post?postid = x
请求(包含通知cookie)以打burp recreteater。- 在中继器中,观察您可以使用
电子邮件
参数邮政
请求加密任意数据并反映在set-cookie
标题。同样,您可以使用通知
饼干得到
请求解密任意密文并反映错误消息中的输出。为简单起见,请双击每个请求的选项卡并重命名选项卡加密
和解密
分别。 在解密请求中,复制您的
保持登录状态
饼干并将其粘贴到通知
曲奇饼。发送请求。响应现在包含解密的,而不是错误消息保持登录状态
例如:cookie:维纳:1598530205184
这表明cookie应该以格式
用户名:时间戳
。将时间戳复制到剪贴板。- 转到加密请求,然后将电子邮件参数更改为
管理员:您的Timestamp
。发送请求,然后复制新的请求通知
回答中的cookie。 - 解密这个新的饼干,观察到23个字符”
无效的邮件地址:
“前缀会自动添加到您使用的任何值中电子邮件
范围。发送通知
饼干到打解码器。 - 在解码器中,URL-Decode和base64-Decode the cookie。选择“十六进制”视图,然后右键单击数据中的第一个字节。选择“删除字节”并删除23个字节。
- 重新编码数据并将结果复制到
通知
解密请求的cookie。当您发送请求时,观察错误消息表示使用基于块的加密算法,并且输入长度必须是16的倍数。无效的邮件地址:
“前缀有足够的字节,以便您将删除的字节数为16的倍数。 在Burp Repeater中,返回加密请求,并在预期的Cookie值的开始中添加9个字符,例如:
XXXXXXXXXXADMINISTRATOR:您的Timestamp
加密此输入并使用解密请求来测试它可以成功解密。
- 将新的密文发送到解码器,然后将URL和base64-decode发送到解码器。这次,从数据开始删除32个字节。重新编码数据并将其粘贴到
通知
解密请求中的参数。检查响应以确认您的输入已成功解密,并且至关重要的是,不再包含“无效的邮件地址:
“前缀。你应该只看到管理员:您的Timestamp
。 - 从代理历史记录发送
得到 /
请求打burp burp。删除会议
完全替换保持登录状态
饼干与您的自制饼干的密文。发送请求。观察您现在已登录为管理员并可以访问管理面板。 - 使用Burp Repeater,浏览到
/行政
并注意删除用户的选项。浏览/admin/delete?用户名= carlos
解决实验室。