JS敏感信息泄露:企业不容忽视的WEB漏洞

VSole2021-10-04 06:21:24

一、前言

    这段时间jsonp漏洞再一次证明了一个微小的漏洞,经过攻击者的巧妙而持久的利用,也会对企业和用户造成巨大的危害。而本文将要介绍的JS泄露敏感信息问题也是如此,攻击者不仅可以轻松收集用户手机号,姓名等隐私信息,更可以借此攻入企业后台甚至是getshell。本文将通过一些公开和未公开的漏洞详细阐述此类漏洞。

二、漏洞成因

   JavaScript作为一种相当简单但功能强大的客户端脚本语言,本质是一种解释型语言。所以,其执行原理是边解释边运行。上述特性就决定了JavaScript与一些服务器脚本语言(如ASP、PHP)以及编译型语言(如C、C++)不同,其源代码可以轻松被任何人获取到。一些粗心的开发者将各式敏感信息存储在JavaScript脚本中,由于JS的特性,攻击者可以对这些信息一览无余,从而导致对WEB服务和用户隐私造成不同程度的威胁。

三、漏洞分类及利用

    根据泄露的内容、利用方式以及带来的危害不同,大致可以将JS敏感信息泄露分为以下三类:

1、JS文件泄露后台管理敏感路径及API

    此类问题主要存在于后台登陆页面以及类似网页内引入的JS文件中。在企业渗透测试时如果遇到后台,在SQL注入或者是路径爆破都试过,但是仍然无法进入后台时。根据此类漏洞,说不定登陆页面下引入的js文件暴露的后台路径会成为突破口。如果某台的某一个页面没有对是否登陆状态做验证,攻击者就可以一次未授权访问这些暴露的API,实现篡改前台内容甚至是getshell。下面这个某大型互联网服务提供商的房产后台页面引入的js文件泄露后台接口信息,就是非常典型的例子:

(信息泄露源是房产管理登陆后台页面下的common.js)

    (js文件中的urlMap对象内容完整的泄露了后台所有功能实现的API,因此攻击者无需登陆就可以进行未授权操作)

    早在12年gainover便在乌云漏洞报告平台上给出了很好的实例:WooYun: PKAV腾讯专场 - 2. 腾讯产品交流平台的一个js文件泄漏了一个url之后 

2、页面内JS泄露http-only保护的cookie

    因为此类问题利用方式和造成的危害与即将谈论到的第三类问题不同,所以把这类问题单独拿出来讲一讲。XSS常见利用手段是劫持用户cookie并登陆其账户,但添加了http-only标记的cookie客户端脚本无法读取,该项技术已经成为减小XSS带来的危害的重要手段。部分厂商更是因此降低了对XSS的评级。不过千里之堤溃于蚁穴,可爱的程序员直接将受http-only保护的cookie写入页面,导致通过利用crossdoamin.xml配置不当等漏洞,攻击者可以轻松跨域读取到受保护的cookie,攻击者登陆用户账户登录的梦想得以延续。其实在乌云Zone中WEB前端安全大牛EtherDream早已从漏洞成因检测等方面撰文进行了阐述。

(知道首页js内直接输出受保护的BDUSS)

    乌云上也不乏良好的实例,比如下面这个由于百度知道crossdomain配置不当,再结合知道页面内的js直接输出用户的BDUSS,成功绕过了http-only的保护:WooYun: 我是如何窃取到百度受http-only保护的cookie的(3)(附简单POC) 

3、页面内JS以及AJAX请求泄露用户敏感信息

    经过以往测试经验的归纳,此类漏洞常见该类型的泄露常见于网站评论功能实现处。其实该类型的漏洞比通过jsonp漏洞收集用户敏感信息来的更加快捷容易。由于程序员疏忽直接在页面的js以及AJAX请求返回的内容中输出参与评论用户的敏感信息,导致攻击者可以轻松获取用户的手机号,真实姓名,注册邮箱,住址甚至有可能获取用户手机的IMEI,和抽奖抽中的游戏礼包号。泄露内容千奇百怪,遇到此类问题时,看着泄露的内容时常会被雷到。从个人的测试经验来看,涉及的厂商范围广泛,从某搜索服务提供商下的订票网站、在线挂号网站到某公司旗下的大型游戏网站都发现过此类漏洞,其他厂商肯定也存在该类问题。不需要SQL注射脱库,黑产哥通过编写爬虫就能大批量的获取用户的敏感信息,利用难度小,危害却很大。

    (某FM类应用评论处泄露匿名评论用户邮箱,手机号)

    (某大型游戏网站抽奖页面下泄露获奖用户礼包兑换号码)

    (某应用商店获取评论内容ajax请求中泄露用户imei和真实ip)

    乌云上也有相关的例子(第一个告诉我们获取音乐人明星的手机号和QQ号不是梦,第二个告诉我们网上看病,隐私会被人看光光):

    WooYun: 百度某站设计缺陷2:获取匿名用户手机号漏洞

     WooYun: 百度某站一处设计缺陷导致部分用户手机号与邮箱等信息泄漏 

四、漏洞挖掘和检测

    不管是第一、二还是第三种漏洞,他们都有一个共同的检测方式,那就是查看源代码然后在源代码中搜索 (Ctrl+F) 常见的泄露点关键词”phone”,”email”,”ip”等等。当然不同情况还是需要不同对待的:

    对于第一种泄露形式的检测相对容易但是可能利用可能相对吃力,在碰到企业后台或者是类似服务时,查看页面也引入的js文件,在文件中查找”.html”,”.do”,”.action”等关键词会帮助快速发觉此类问题,不过对于相对复杂的情况还是需要沉下心将每一个js耐心的看过去。认真,你就赢了。

    对于第二、三种泄露,在查看源代码时搜索页面内脚本是否存在泄露的同时,可能还需要检测ajax响应的内容,所以通过Fiddler这类抓包软件查看服务器响应的内容来查找,也绝对是手动查找该类型漏洞的最好方式。

    漏洞检测自动化绝对是我们的终极目标,对于该类问题的自动化检测,白帽子EtherDream的文章(http://drops.wooyun.org/tips/2834)给了我们不错的启发,通过编写Chrome插件我们可以添加检测规则,即上文提到的常见关键词,在正常浏览页面的同时挖掘漏洞,一举两得。

五、漏洞修复和防范

    此类漏洞修复相对容易,在明白了JavaScript的特性以后,不把此类敏感信息直接存储进页面内的js和ajax请求响应内容中就可以解决这类问题。不过根除此类问题之道还是需要程序员提高安全意识,从泄露用户隐私信息到威胁企业安全,再小的问题也会带来蝴蝶效应,毕竟安全无小事。

六、参考资料

《WEB之困》,Zalewski,机械工业出版社

《HttpOnly 隐私嗅探器》,EtherDream,乌云知识库

原文链接:https://wooyun.js.org/drops/JS%E6%95%8F%E6%84%9F%E4%BF%A1%E6%81%AF%E6%B3%84%E9%9C%B2%EF%BC%9A%E4%B8%8D%E5%AE%B9%E5%BF%BD%E8%A7%86%E7%9A%84WEB%E6%BC%8F%E6%B4%9E.html

信息泄露js
本作品采用《CC 协议》,转载必须注明作者和本文链接
此类问题主要存在于后台登陆页面以及类似网页内引入的JS文件中。根据此类漏洞,说不定登陆页面下引入的js文件暴露的后台路径会成为突破口。因为此类问题利用方式和造成的危害与即将谈论到的第三类问题不同,所以把这类问题单独拿出来讲一讲。部分厂商更是因此降低了对XSS的评级。
Cyber News的一项调查研究显示,全球多所顶尖高校的网站未能及时更新安全补丁,存在敏感信息泄露,甚至被攻击者全面接管的风险。
在经历了多年的攻防对抗之后,大量目标单位逐渐认识到安全防护的重要性。因此,他们已采取措施尽可能收敛资产暴露面,并加倍部署各种安全设备。但安全防护注重全面性,具有明显的短板效应,一处出现短板,整个防护体系就可能瞬间崩溃。而目标单位的供应链往往是这些薄弱点的集中体现。这些供应链不仅暴露在外,而且由于复杂的关系,使得对它们的监控和管理变得更为困难。因此,攻击团队通常会选择从供应链着手,以一种迂回的方式绕
为API测试进行设Postman是一个方便的应用程序,使API安全测试变得轻而易举。更糟糕的是,供内部使用的API往往没有必要实施复杂的认证流程,因此可能会实施静态令牌作为其认证。许多API会给出足够详细的错误,以列举未记录的端点和参数。
Api.xxxxx?+?'files/download';?//?下载路径(系统配置)
虽然对其防御日趋重视,但绕过方法也是层出不穷。戳“阅读原文”体验免费靶场!
KuCoin的秘密:揭示百万美元赏金背后的用户信息泄露近期,KuCoin加密货币交易平台在一个名为HackenProof的漏洞赏金平台上,宣布提供高达100万美元的赏金。黑客小黑在对KuCoin进行探索时,发现了一个重要的问题:KuCoin似乎在使用Zendesk API进行反向代理。
2022年4月20日,Apache发布安全公告,修复了一个 Apache APISIX中的信息泄露漏洞。漏洞编号: CVE-2022-29266,漏洞威胁等级:严重。
点击上方蓝字 关注安全知识引言技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器
VSole
网络安全专家