JS敏感信息泄露

一.漏洞描述

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

二.漏洞分类及利用

0x01 JS文件泄露后台管理敏感路径及API

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

0x02 页面内JS泄露http-only保护的cookie

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

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

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

三.漏洞利用

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

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

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

漏洞检测自动化绝对是我们的终极目标,对于该类问题的自动化检测,通过编写Chrome插件我们可以添加检测规则,即上文提到的常见关键词,在正常浏览页面的同时挖掘漏洞,一举两得。

四.漏洞防御

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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180121G044NT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券