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

2023-11-17

0x00 前言


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

0x01 漏洞成因


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

0x02 漏洞分类及利用


根据泄露的内容、利用方式以及带来的危害不同,大致可以将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: 百度某站一处设计缺陷导致部分用户手机号与邮箱等信息泄漏

0x03 漏洞挖掘和检测


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

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

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

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

0x04 漏洞修复和防范


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

0x05 参考资料


(1] 《WEB之困》,Zalewski,机械工业出版社 (2] 《HttpOnly 隐私嗅探器》,EtherDream,乌云知识库

本文章来源于乌云知识库,此镜像为了方便大家学习研究,文章版权归乌云知识库!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS敏感信息泄露:不容忽视的WEB漏洞 的相关文章

  • SpiderFlow爬虫平台 前台RCE漏洞复现(CVE-2024-0195)

    0x01 产品简介 SpiderFlow是新一代爬虫平台 以图形化方式定义爬虫流程 以流程图的方式定义爬虫 不写代码即可完成爬虫 是一个高度灵活可配置的爬虫平台 0x02 漏洞概述 SpiderFlow爬虫平台src main java o
  • 信号浪涌保护器的原理和行业应用方案

    信号浪涌保护器 Surge Protective Device 简称SPD 是一种用于限制信号线路中瞬态过电压和分泄浪涌电流的防雷装置 主要用于保护各类信号线路及设备的防雷安全 信号浪涌保护器的原理是利用气体放电管 压敏电阻 齐纳二极管等非
  • Web 安全漏洞之 OS 命令注入

    什么是 OS 命令注入 上周我们分享了一篇 Web 安全漏洞之 SQL 注入 其原理简单来说就是因为 SQL 是一种结构化字符串语言 攻击者利用可以随意构造语句的漏洞构造了开发者意料之外的语句 而今天要讲的 OS 命令注入其实原理和 SQL
  • 5个步骤,教你瞬间明白线程和线程安全

    记得今年3月份刚来杭州面试的时候 有一家公司的技术总监问了我这样一个问题 你来说说有哪些线程安全的类 我心里一想 这我早都背好了 稀里哗啦说了一大堆 他又接着问 那你再来说说什么是线程安全 然后我就GG了 说真的 我们整天说线程安全 但是对
  • SRC漏洞挖掘经验+技巧篇

    一 漏洞挖掘的前期 信息收集 虽然是前期 但是却是我认为最重要的一部分 很多人挖洞的时候说不知道如何入手 其实挖洞就是信息收集 常规owasp top 10 逻辑漏洞 重要的可能就是思路猥琐一点 这些漏洞的测试方法本身不是特别复杂 一般混迹
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • Android开发中常见安全问题和解决方案

    前言 开发APP时经常有问到 APP的安全怎么保障 应用程序被PJ了怎么办 手机被人捡去了怎么办 特别在号称 安全第一 风控牛逼 的银行系统内 移动产品安全性仍被持有怀疑态度 那我们来总结下APP安全的方向和具体知识 1 应用程序安全 2
  • 「网络安全渗透」如果你还不懂CSRF?这一篇让你彻底掌握

    1 什么是 CSRF 面试的时候的著名问题 谈一谈你对 CSRF 与 SSRF 区别的看法 这个问题 如果我们用非常通俗的语言讲的话 CSRF 更像是钓鱼的举动 是用户攻击用户的 而对于 SSRF 来说 是由服务器发出请求 用户 日 服务器
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 渗透测试常用工具汇总_渗透测试实战

    1 Wireshark Wireshark 前称Ethereal 是一个网络分包分析软件 是世界上使用最多的网络协议分析器 Wireshark 兼容所有主要的操作系统 如 Windows Linux macOS 和 Solaris kali
  • 数据加密保障数据安全

    一 目标 1 1 预研需求 数据加密是安全领域中常用的安全措施 它们的主要作用是保护数据的机密性和完整性 以防止未经授权的访问 窃取 篡改或泄漏敏感信息 数据传输加密 保护敏感数据在传输过程中的安全 当数据通过网络传输时 它们可能会经过多个
  • 内网安全:隧道技术详解

    目录 隧道技术 反向连接技术 反向连接实验所用网络拓扑图及说明 网络说明 防火墙限制说明 实验前提说明 实战一 CS反向连接上线 拿下Win2008 一 使用转发代理上线创建监听器 二 上传后门执行上线 隧道技术 SMB协议 SMB协议介绍
  • 全网最全(黑客)网络安全自学路线!熬夜两周整理(巨详细)

    学网络安全有什么好处 1 可以学习计算机方面的知识 在正式学习网络安全之前是一定要学习计算机基础知识的 只要把网络安全认真的学透了 那么计算机基础知识是没有任何问题的 操作系统 网络架构 网站容器 数据库 前端后端等等 可以说不想成为计算机
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 为什么我强烈推荐大学生打CTF!

    前言 写这个文章是因为我很多粉丝都是学生 经常有人问 感觉大一第一个学期忙忙碌碌的过去了 啥都会一点 但是自己很难系统的学习到整个知识体系 很迷茫 想知道要如何高效学习 这篇文章我主要就围绕两点 减少那些罗里吧嗦的废话 直接上干货 CTF如
  • 【无标题】

    大家都知道该赛项的规程和样题向来都是模棱两可 从来不说具体的内容 导致选手在备赛时没有头绪 不知道该怎么训练 到了赛时发现题目和备赛的时候完全不一样 那么本文将以往年信息安全管理与评估赛项经验来解读今年2023年国赛的规程 帮助选手们指明方
  • 【安全】原型链污染 - Hackit2018

    目录 准备工作 解题 代码审计 Payload 准备工作 将这道题所需依赖模块都安装好后 运行一下 然后可以试着访问一下 报错是因为里面没内容而已 不影响 准备工作就做好了 解题 代码审计 const express require exp
  • 【安全】mybatis中#{}和${}导致sql注入问题及解决办法

    0 问题 使用mybatis的时候遇到了 和 可能导致sql注入的问题 1 预先了解 1 底层通过prepareStatement对当前传入的sql进行了预编译 一个 被解析为一个参数占位符 解析之后会将String类型的数据自动加上引号
  • 【安全】使用docker安装Nessus

    目录 一 准备docker环境服务器 略 二 安装 2 1 搜索镜像 2 2 拉取镜像 2 3 启动镜像 三 离线更新插件 3 1 获取challenge 3 2 官方注册获取激活码 3 3 使用challenge码和激活码获取插件下载地址
  • 网络安全行业热门认证证书合集

    网络安全认证证书 就和学历一样是敲门砖 拿到了可以用不到 但不能没有 技术大牛可以没有证书 但普通人不能没有 1 初级入门 就像学历在职场上展示一个人的基本素养一样 网络安全认证证书可以展示一个人在网络安全领域具备的基本知识和技能 它为初学

随机推荐

  • Android SDK Android NDK 官方下载地址

    Android SDK Android NDK 官方下载地址 Android NDK r6b Windows http dl google com android ndk android ndk r6b windows zip Mac OS
  • VisualStudio(2022)- 打包项目文件为.exe安装包

    目录 前言 一 安装扩展 二 制作安装包 setup文件 2 1 添加setup项目 2 2 配置setup项目 2 3 添加项目文件到setup项目中 扩展知识 三个文件夹说明 2 4 设置项目主输出 2 5 设置快捷方式 2 6 生成安
  • 数据结构--单链表的c语言实现(超详细注释/实验报告)

    数据结构 单链表的c语言实现 超详细注释 实验报告 知识小回顾 在顺序表中 用一组地址连续的存储单元来一次存放线性表的结点 因此结点的逻辑顺序和物理顺序是一致的 而链表则不然 链表是用一组任意的存储单元来存放线性表的结点 这组储存单元可以是
  • 面向对象之魔法方法

    目录 概念 魔法方法分类 构造与初始化 new new 的使用场景 init del 类的表示 str repr bool 访问控制 比较操作 eq ne lt gt 容器类操作 重要 可调用对象 序列化 getstate setstate
  • linux initcall机制

    Linux系统启动过程很复杂 因为它既需要支持模块静态加载机制也要支持动态加载机制 模块动态加载机制给系统提供了极大的灵活性 驱动程序既可支持静态编译进内核 也可以支持动态加载机制 Linux系统中对设备和子系统的初始化在最后进行 主要过程
  • 网关、路由、DNS详细解释

    网关 Gateway 又称网间连接器 协议转换器 网关在网络层以上实现网络互连 是最复杂的网络互连设备 仅用于两个高层协议不同的网络互连 网关既可以用于广域网互连 也可以用于局域网互连 针对普通客户来说 网关就是运营商的交换机端口地址 也就
  • AI 代码辅助工具-codeium(免费)---Android studio

    Codeium官网说明 JetBrains IDEs Tutorial Codeium Free AI Code Completion ChatCodeium offers best in class AI code completion
  • Linux 系统中的 SNMP Trap及常用OID

    浅谈 Linux 系统中的 SNMP Trap 转载 http www ibm com developerworks cn linux l cn snmp 本文讲解 SNMP Trap 在介绍 Trap 概念之前 首先认识一下 SNMP 吧
  • Windows 查看端口占用并关闭

    Windows 查看端口占用并关闭 在启动服务的时候 可能会遇到端口被占用的情况 这时就要知道哪个服务占用了这个端口 并将其关闭 然后再启动服务就不会存在端口占用了 这里以 Tomcat 的默认端口 7080 为例 一 打开命令窗口 Win
  • 概率图模型笔记(9-10)——Inference-Belief Propagation

    9 Inference Belief Propagation part1 9 1 Belief Propagation 9 1 1 聚类图 Cluster Graphs 聚类图即这样的一个无向图 节点是团 Ci X1 Xn C i sube
  • element-plus 组件解析 - Collapse 折叠面板

    element plus 组件解析 Collapse 折叠面板 1 组件介绍 2 组件组成 3 组件实现 3 1 el collapse 1 v model activeNames 2 手风琴效果 3 el collapse 关键逻辑 3
  • Vue 源码之Vue 响应式原理【完整版】

    写在前面 由于昨天写的文章 Vue 源码之Vue视图更新原理 一 与今天的内容代码有些相关联 所以开头先进行简单的回顾阐述 也方便对内容进行完整的阅读 Vue 视图更新原理 Vue 的视图更新原理主要涉及的是响应式相关API Object
  • 深入理解PHP内存管理之谁动了我的内存

    作者 Laruence 本文地址 http www laruence com 2011 03 04 1894 html 转载请注明出处 首先让我们看一个问题 如下代码的输出 var dump memory get usage a larue
  • Ubuntu18.04——正确安装英伟达(NVIDIA)显卡驱动的一种简便方法

    Ubuntu18 04 正确安装英伟达 NVIDIA 显卡驱动的一种简便方法 前提说明 1 打开软件和更新 附加驱动 选中下图所示项并点击应用更改 已经是的话 就不用更改 2 连上网络 打开终端 依次输入以下命令 3 退出终端 重新启动电脑
  • php后台接收blob文件流,如何从php中的BLOB播放流音频?

    我有这个smartReadFile php函数 它允许从文件播放音频流 你将如何修改此函数 以便查询mysql数据库BLOB而不是读取特定文件 function smartReadFile location filename mimeTyp
  • 百川AI大模型开放内测,你的AI工具箱里又多了一个选择

    日前国内大模型开源市场又多了一个猛将 百川智能 厂商卷 消费者就受益 这块模型由原搜狗创始人带队研发 背后融合有一些搜索的思路 日前公开了其53B的大模型 未来的企业应用上又多了一份选择 https www baichuan ai com
  • Java常用实用类总结

    常用实用类总结 这应该算是我写的第一篇比较正式的文章了 主要介绍一下我门经常用到的一些常用实用类 主要包括 String类 StringBuffer类 StringTokenizer类 Date类 Calender类 Math类 BigIn
  • Qt—事件处理

    Qt中 事件作为一个对象 继承自QEvent类 常见的有键盘事件QKeyEvent 鼠标事件QMouseEvent和定时器事件QTimerEvent等 Qt中 任何QObject子类示例都可以接收和处理事件 实际编程中通常实现部件的pain
  • Rancher 全球化部署最佳实践

    作者 万绍远 CNCF 基金会官方认证 Kubernetes CKA CKS 工程师 云原生解决方案架构师 对 ceph Openstack Kubernetes prometheus 技术和其他云原生相关技术有较深入的研究 参与设计并实施
  • JS敏感信息泄露:不容忽视的WEB漏洞

    0x00 前言 这段时间jsonp漏洞再一次证明了一个微小的漏洞 经过攻击者的巧妙而持久的利用 也会对企业和用户造成巨大的危害 而本文将要介绍的JS泄露敏感信息问题也是如此 攻击者不仅可以轻松收集用户手机号 姓名等隐私信息 更可以借此攻入企