背景介绍
国外白帽在 Web 登录组件的 OTP 页面中发现了一处严重漏洞,问题源于对某些请求参数的不当处理,从而通过响应操控实现未经授权的访问。
该漏洞的核心主要涉及 PIDM 和 WEBID 参数来制作会话 Cookie。
漏洞发现
在一次渗透测试中,白帽小哥注意到 OTP 页面对用户身份验证的处理有一些特殊的地方。
通过分析,白帽小哥发现 POST 请求中的 PIDM 和 WEBID 参数可用于创建会话 Cookie。
- 涉及参数:PIDM 和 WEBID
- 漏洞利用技术:响应操控
- 漏洞影响:通过 OTP 绕过,从而进行未授权访问
由于该漏洞在某大型组织中发现,为保密起见,详细信息会进行隐藏
输入有效的凭据和有效的 OTP 代码后,白帽小哥开始观察服务器的响应包。
响应包中使用 POST 请求中的 PIDM 和 WEBID 值来制作的会话 Cookie。如下:
“VerC”为有效的OTP Code
服务器的响应为:
Set-Cookie: SESSID=QlZOWEY3MTIzNDcyNA==
解码 Base64 编码的 Cookie (QlZOWEY3MTIzNDcyNA==):
BVNXF71234724
这证实了PIDM和WOBID被用于创建会话Cookie。
那么通过使用 PIDM 和 WEBID 来制作会话 Cookie,攻击者就可以绕过 OTP。方法如下:
即使使用无效的 OTP Code,攻击者也可以通过组合 PIDM 和 WEBID、使用 Base64 对它们进行编码并操纵响应以包含该会话 Cookie 来手动制作会话 Cookie。因此该漏洞也可以绕过有效 OTP Code。
通过精心设计的会话 Cookie:
PIDM=1234724
WEBID=BVNXF7
Combined: BVNXF71234724
Base64: QlZOWEY3MTIzNDcyNA==
利用构建后的 Cookie 便可用于操控服务器响应。
输入有效的OTP code后,可以看到服务器响应如下:
<HTML>
<HEAD>
<meta http-equiv="refresh" content="0;url=/app/dashboard?welcome=true">
</HEAD>
</HTML>
PoC
1、 首先使用有效凭据登录
2、 然后在登录页面上输入有效的凭据以重定向到 OTP 页面
3、提交任意 OTP
4、在 OTP 输入字段中输入一个随机数并捕获 POST 请求
5、结合 PIDM 和 WEBID 值,制作会话 Cookie:
BVNXF71234724
Base64: QlZOWEY3MTIzNDcyNA==
6、截获服务器的响应并对其进行修改以包含构建的会话 Cookie:
7、当发送 Post 请求时,拦截响应并添加制作的 Cookie
8、 访问管理仪表板,包含精心设计的会话 Cookie 的操纵响应会将当前用户重定向到仪表板,从而绕过 OTP 验证。
以上内容由骨哥翻译并整理。
原文:https://medium.com/@n4if/otp-bypass-through-session-manipulation-d73deceaa42f