行业新闻

通过 JS 文件实现Bypass管理面板

通过 JS 文件实现Bypass管理面板

声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

背景介绍:

今天的故事来自一位Zhenwar Hawlery白帽子,他和他的好基友是来自库尔德斯坦的白帽子和漏洞赏金猎人,他们喜欢在 Web 应用程序和移动应用程序中挖掘漏洞。废话不多说,开始我们今天的分享。

漏洞发现过程:

目标网站提供了一个由 Flutter 创建的移动应用程序和网站,要知道捕获 Flutter 创建的 APP 请求是很困难的,所以他们没有在移动应用上浪费太多的时间,而是决定把注意力集中在网站上,因为它也是移动应用的后端。

通常,他们会试图找到管理面板,因为主域网站只是一个用于下载应用程序的页面。在暴力破解子域后,他们发现该网站有一个类似的子域 ([admin.project.com]---本篇文章中使用 project.com 作为项目的域名进行替代),与往常一样,他们首先访问了一些敏感的子域。

通过Amass Tool查找子域

当访问某个子域时,他们看到了一处登录页面:

第一个输入字段为手机号码(因此管理员可以通过他的电话号码登录),第二个字段是密码,看起来很不错,但真的是这样吗?

经过尝试发现:

1- 无法暴力破解密码(301 Too Many request)

2- 目录扫描无任何结果

3- 没有任何可以尝试绕过的方式

4- 该网站是个新网站,因此没有任何相关的URL/信息

那么此时如果换做是你,你会怎么做?放弃还是继续?

白帽哥俩发现阅读源代码有时是发现漏洞很不错的一种办法,当他们阅读页面源代码时,只有一行代码值得关注,那是一个 Javascript 文件:

页面源代码

这通常是漏洞的开始,也是最困难的部分,当然也是最令人愉快的部分,因为你应该逐行阅读 JS 文件以了解代码并了解网站的工作方式,这很难,但哥俩却感到非常愉快!:)

打开 JS 文件后,他们首先通常会搜索一下敏感词,如(admin、config、password、token、email、.conf等),当尝试到token时,他们发现了这段‘有料’的代码:

源代码中的一段代码

([“TOKEN”,”hxcdjskhck643782bcdshcdsjk231cbdns”,”fullname”,a,”phone”,b,”city”,c,”superadmin”,d,”permisions”,e,”password”,f],t.N,p))s=3return A.U(A.ck(null).cc(“https://project.app/RedactedAppBackend/dashboard/addAdmin.php",c,n),$async$uH)

很明显这是一个 POST 请求:

TOKEN=hxcdjskhck643782bcdshcdsjk231cbdnsfullnamephonesuperadminpermissionspassword

那么我们能用它们来做什么呢?首先我们应该知道如果发送一个这样的 POST 请求数据会发生什么?在结合最后的 addAdmin.php URL 部分,我们可以大胆推测它将创建另一个管理员帐户:

RedactedAppBackend/dashboard/addAdmin.php

于是,他们果断从JS文件获得的数据伪造了一个POST请求:

POST请求

喜闻乐见,响应为OK,这意味着他们成功地创建了另一个管理员帐户,于是尝试使用电话号码和密码再次登录:

成功登录控制面板,小哥俩也因此获得了漏洞赏金$奖励。

建议:

对于漏洞赏金猎人来说,重要的是:

1-关注JS文件

2-始终认为你是第一个找到该页面/站点的人

3-没有什么是不可能的

对于开发者来说,重要的是:

请勿将敏感数据放入 Token! 等客户端源代码中。

====正文结束====

关闭