0x01 漏洞简介

webpack是一个JavaScript应用程序的静态资源打包器(module bundler)。它会递归构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle。大部分Vue等项目应用会使用webpack进行打包,如果没有正确配置,就会导致项目源码泄露,可能泄露的各种信息如API、加密算法、管理员邮箱、内部功能等等。

0x02 漏洞检测

webpack项目源码在泄漏的情况下,可以在浏览器控制台中的Sources——> Page—> webpack://中查看源代码

使用webpack打包应用程序会在网站js同目录下生成 js.map文件

.map文件的作用:项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。 有了map就可以像未加密的代码一样,准确的输出是哪一行哪一列有错。

直接查看网站的js文件,可以在末尾处有js.map文件名

直接在当前访问的js后面拼接.map即可访问下载

通过以上两种方式可以判断目标网站存在webpack源码泄露问题。

0x03 漏洞利用

在某些情况下,不能直接在浏览器控制台中的Sources—> Page—> webpack://中查看到webpack项目源码,但是网站上存在js.map文件,我们可以通过一些工具将js.map中的内容进行还原webpack项目源码。

1. reverse-sourcemap

使用npm安装reverse-sourcemap

npm install --global reverse-sourcemap

检查是否安装

~/ reverse-sourcemap -h
reverse-sourcemap - Reverse engineering JavaScript and CSS sources from sourcemaps
Usage: reverse-sourcemap [options] <file|directory>-h, --help               Help and usage instructions-V, --version            Version number-v, --verbose            Verbose output, will print which file is currently being processed-o, --output-dir String  Output directory - default: .-M, --match String       Regular expression for matching and filtering files - default: \.map$-r, --recursive          Recursively search matching files

将js.map文件下载到本地,使用reverse-sourcemap进行js.map文件还原操作

reverse-sourcemap --output-dir ./  main-7692d0319da0ace0bfc4.js.map

执行成功后生成的源码会放在当前目录下的webpack中

接着就可以对项目源代码进行分析审计了

2. SourceDetector

SourceDetector是一个谷歌浏览器插件,此插件可以自动的判断网站是否存在js.map文件,并且能够利用该插件直接下载到js.map的webpack项目源码

下载插件项目到本地

git clone https://github.com/LuckyZmj/SourceDetector-dist

打开谷歌浏览器扩展程序的开发者模式,加载已解压的扩展程序,选中插件项目中的dist目录即可安装插件。

安装好插件以后,每次浏览网站时,该插件就会自动获取js.map文件

点击插件中的链接地址即可直接下载到js.map还原后的项目源码

0x04 漏洞修复

  • 在项目路径下修改config/index.js中build对象productionSourceMap: false;
  • 建议删除或禁止访问正式环境中的js.map文件;

webpack 源码泄露相关推荐

  1. Webpack源码泄露

    目录 描述 危害 修复 描述 webpack是一个 JavaScript 应用程序的静态资源打包器(module bundler).它会递归构建一个依赖关系图(dependency graph),其中 ...

  2. webpack源码阅读——npm脚本运行webpack与命令行输入webpack的区别

    原文地址:webpack源码阅读--npm脚本执行webpack与命令行输入webpack执行的区别 如有错误,欢迎指正! webpack是目前被大家广为使用的模块打包器.从命令行输入webpack或 ...

  3. .17-浅析webpack源码之compile流程-入口函数run

    本节流程如图: 现在正式进入打包流程,起步方法为run: Compiler.prototype.run = (callback) => {const startTime = Date.now() ...

  4. CTF中常见Web源码泄露总结

    目录00x1 .ng源码泄露 00x2  git源码泄露 00x3 .DS_Store文件泄漏 00x4 网站备份压缩文件 00x5 SVN导致文件泄露 00x6 WEB-INF/web.xml泄露  ...

  5. 京东app html源码_哔哩哔哩源码泄露,看不懂怎么办?

    最近B站源码泄露,又让go语言火了一把,大家拿到40+mb的源码无从下手,今天我就把这套路线图送给大家,让大家水到渠成,一马平川. 2019新版Go语言+区块链学习路线图---学习大纲及各阶段知识点 ...

  6. 程序员深爱的bilibili后台源码泄露,看哔哩哔哩官方回应才放心了

    小编推荐:Fundebug提供JS错误监控.微信小程序错误监控.微信小游戏错误监控,Node.j错误监控和Java错误监控.真的是一个很好用的错误监控费服务,众多大佬公司都在使用. 北京时间4月22日 ...

  7. python防止源码泄露_ctf常见源码泄露 - Lmg66 - 博客园

    前言 在ctf中发现很多源码泄露的题,总结一下,对于网站的搭建要注意删除备份文件,和一些工具的使用如git,svn等等的规范使用,避免备份文件出现在公网 SVN源码泄露 原理 SVN(subversi ...

  8. webpack源码解析七(optimization)

    前言 前面我们写了几篇文章用来介绍webpack源码,跟着官网结合demo把整个webpack配置撸了一遍: webpack源码解析一 webpack源码解析二(html-webpack-plugin ...

  9. xjar加密后运行错误_XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译。...

    XJar Spring Boot JAR 安全加密运行工具,同时支持的原生JAR. 基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动,动态解密运行的方案,避免源码泄露或 ...

最新文章

  1. Getting Installation aborted (Status 7) ApplyParsePerms: lsetfilecon of /syst...【转】
  2. python怎么和sql一起用_自己写的Python数据库连接类和sql语句拼接方法
  3. uva 10716——Evil Straw Warts Live
  4. canvas 判断哪个元素被点击_监听 Canvas 内部元素点击事件的三种方法
  5. 信息学奥赛一本通 1844:【06NOIP提高组】金明的预算方案 | 洛谷 P1064 [NOIP2006 提高组] 金明的预算方案
  6. 计算机三级信息管理技术考试大纲
  7. 寻找先序遍历中第k个节点
  8. Leetcode刷题记录[java]——561 Array Partition I
  9. ajax实现环境,基于jQuery实现的Ajax(Django环境)
  10. SAP License:SAP中的报表查询
  11. 程序员面试金典——4.5检查是否为BST
  12. CentOS 6.9之LVM创建,扩容
  13. eclipse 版本 发行版本
  14. 回答一个关于产品经理的入门门槛高不高的问题
  15. Photoshop通过抠图法给照片换背景-PS换背景教程
  16. 【某deed网测题】D - Yakiniku
  17. java中String优化之intern()方法
  18. 区块链与新零售的结合
  19. 详解RS232、RS485、RS485、串口握手
  20. 十六进制转换成八进制

热门文章

  1. Comcast将与EA联手推出机顶盒在线游戏效劳
  2. 每日遥感论文(森林退化)
  3. for···in··· 和 for···of··· 的区别
  4. 解决Dev-C++ 中to_string()报错问题
  5. 北漂这些年(四)-地下室
  6. 如何制作网站的入门教程
  7. 银行开卡却要证明“我是我”?银行客户体验何时才能真正“线上走”?
  8. POJ 3190 Stall Reservations(贪心算法)
  9. JAX-WS方式开发和部署webservice应用
  10. 好口才是练出来的:练胆量、练技巧、练修养