今天在这篇文章中,我将分享一篇关于使用授权Header(Authorization Headers token)的 SQL 注入的文章。
Authorization Headers token的一些介绍,
=> 授权令牌由服务器生成和签名,用于通过唯一令牌验证用户。
=> 登录成功后,服务器会发送一个授权令牌,Web 开发者通常会将其存储在浏览器的本地存储或会话存储中。
=> 现代网站使用 JWT(JSON Web 令牌)进行用户授权。这并不意味着每个授权令牌都是 JWT。这取决于网站使用的后端和框架,
我是一个季节性的 Bug 赏金猎人。我尝试通过google dorks搜索一些私人的bug赏金计划,并随机选择了一个程序进行狩猎。
当我从主要目标开始时,我没有做像子域枚举或任何 Dorking 这样的基本侦察。
对我来说,这是平凡的一天。我刚刚启动了 BurpSuite并打开了目标站点。根据公司政策,我不能透露目标。
在 Wappalyzer 插件的帮助下,我注意到目标在 PHP 上运行。
对我来说,PHP 本质上是易受攻击的。作为一名 Web 开发人员,我有丰富的 PHP 构建网站和修复漏洞的经验。
在攻击目标时,我会在侦察过程的初始阶段对目录进行暴力破解并检查 robots.txt 文件。
我使用 Dirsearch 查找隐藏目录,但没有运气。除了管理页面,我没有得到任何可疑的东西。
我尝试通过访问 target/admin/ 打开管理页面
但是没有成功,它会引发错误403 Forbidden
我并没有太快放弃,再次尝试使用Dirsearch 在管理页面内进行 Fuzz。这次活动页面收到了200状态码。
没有任何延迟,我已经打开了页面 www.target.com/admin/events/
我注意到这个页面是一个普通的登录页面,它有两种登录方式,一种用于用户,另一种用于超级管理员
正如我所说,登录页面有两个链接,一个用于用户,另一个用于管理员,我选择了第一个,并将我重定向到
www.target.com/admin/events/?classic_login=true
它弹出用户名和密码,我开始提供错误的凭据并观察服务器的响应,测试了一段时间后,我提供的用户名和密码为1'
幸运的是,它出现了SQL报错。
我试图重现它,但它不起作用,并且登录弹出窗口完全消失了。
即使刷新页面后,错误消息也会显示在那里,因为我认为这可能是一些后端错误。
我查看了 Burp代理历史记录,发现没有发送常规的 POST 表单数据或 JSON 数据。
我有一段时间空白,后来在隐身模式下打开了链接,然后出现了用于登录的弹出窗口。再次观察请求和响应。
后来,我注意到带有令牌的 Header Value Authorization。
作为一名 Web 开发人员,我知道授权令牌是如何工作的,并且我对 PHP、MERN 堆栈和一些 Django 框架有很好的了解。我可以很容易地猜到开发人员使用的标记化
Authorization: Basic Base64Values
您可能经常在 Web 应用程序中看到此 Header。
专业提示:在后端,在大多数情况下,Bearer 被忽略,开发人员将令牌与发行的令牌匹配。
如果那是 JWT,那么开发人员通常会对其进行解码,而不是验证这就是不正确的访问控制、帐户接管发生的地方。
我已将请求发送到Repeater,选择了令牌并使用 Burp 解码器对其进行解码,因为我通过长度和性质猜测了加密类型。它不是 JWT,而是 1':1' 的 base64 值
我很快想起了 Sqlmap 工具,捕获了整个请求,并将其保存到一个文本文件中。
并尝试运行sqlmap,但问题出现在base64编码。虽然 sqlmap 支持 base64 编码,但场景是值之间有一个冒号 :。
因为应用程序的行为如下
它接受用户名和密码,并使用 base64 对值进行编码,其中用:分隔
虽然我擅长手动 SQL 注入利用,但有一种 base64 编码的实时模式,并在转发器中应用有效负载。为此,我试图找到目标的列数。
并将用户名和密码的payload:
1' Order By 1 — -:1' Order By 1 — -
Base64后 Auth的payload如下。
Authorization: Basic MScgT3JkZXIgQnkgMS0tIC06MScgT3JkZXIgQnkgMS0tIC0=
base64 编码发送,无 SQL 错误,显示常规未授权错误
试图增加这些列,但抛出错误。我知道只有一列并尝试注入联合语句。
注入payload:
1' Union Select 1 — -:1' Union Select 1 — -
编码后
Authorization: Basic MScgVW5pb24gU2VsZWN0IDEtLSAtOjEnIFVuaW9uIFNlbGVjdCAxLS0gLQ==
我已成功登录管理面板并能够修改内容
下面是没有打码的POC演示
如果你是一个长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款