欢迎关注公众号:进击的HACK
Vue源码泄露
前言
vue泄露不是什么重要的问题,但也是一个问题。寻找Vue泄露很简单,也有现成的工具。混个低危简简单单。
漏洞介绍
Vue使用webpack(静态资源打包器)的时候,如果未进行正确配置,会产生一个js.map文件,而这个js.map可以通过工具来反编译还原Vue源代码,产生代码泄露。
Sourcemap初衷是方便开发排错,但是不应该用在生产环境,如果用在生产环境,就可以通过sourcemap文件中的映射,还原出前端完整代码。
背景
目前前端部署的代码一般都是经过webpack压缩的,压缩的目的一般如下:
移除无用代码
混淆代码中变量名称、函数名称等
对结构进行扁平化处理
SourceMap的作用
SourceMap在其中扮演了一个十分重要的角色,用来作为源代码和编译代码之间的映射,方便开发定位问题。
一般在压缩 js 的过程中,会生成相应的 sourcemap 文件,并且在压缩的 js 文件末尾追加 sourcemap 文件的链接 ,如://# sourceMappingURL=xxxx.js.map。这样,浏览器在加载这个压缩 过的js 时,就知道还有一个相应的 sourcemap 文件,也会一起加载下来,运行的过程中如果 js 报错,也会给出相应源代码的行号与列号,而非压缩文件的。
漏洞发现
burpsuite插件HAE
(.js.map)
手动发现
访问网站的js文件,在其后面添加.map,如有泄露即可下载该js.map文件
如上图,也有一些js文件最后会有js.map的注释,可以尝试手动访问一下。
漏洞利用
reverse-sourcemap
reverse-sourcemap需要nodejs环境
github地址:https://github.com/davidkevork/reverse-sourcemap
配置好nodejs环境后,npm install --global reverse-sourcemap
将js.map文件下载到本地后,执行反编译命令
reverse-sourcemap --output-dir output app.956ae232.js.map
--output-dir . 结果输出到当前目录的webpack文件夹
shuji
利用shuji 工具(安装nodejs 在安装shuji)https://www.npmjs.com/package/shuji
shuji app.js.map -o desfile
修复建议
1.在项目路径下修改config/index.js中build对象productionSourceMap: false;
2.建议删除或禁止访问正式环境中的js.map文件;
参考链接
https://mp.weixin.qq.com/s/RnjEpXQTBx4XHqYum4uzMw
https://xz.aliyun.com/t/8976
https://www.cnblogs.com/jiaojiaow/p/15702279.html
https://blog.csdn.net/qq_36950158/article/details/124385730
欢迎关注公众号:进击的HACK
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)