本文发布于656天前,本文最后更新于595 天前,其中的信息可能已经过时,如有错误请留言或评论。
知识点
- JS前端架构-识别&分析
- JS前端架构-开发框架分析
- JS前端架构-打包器分析
- JS前端架构-提取&FUZZ
解决:
- 如何从表现中的JS提取价值信息
- 如何从地址中FUZZ提取未知的JS文件
- 如何从JS开放框架WebPack进行测试
补充
- CMS——Discuz、WordPress、Ecshop、蝉知等
- 前端技术——HTML5、jquery、bootstrap、Vue等
前提
什么是JS渗透测试?
- 在Javascript中也存在变量和函数,当存在可控变量及函数调用即可参数漏洞
JS开发的WEB应用和PHP,JAVA,NET等区别在于即没有源代码,也可以通过浏览器的查看源代码获取真实的点。获取URL,获取JS敏感信息,获取代码传参等,所以相当于JS开发的WEB应用属于白盒测试(默认有源码参考),一般会在JS中寻找更多的URL地址,在JS代码逻辑(加密算法,APIkey配置,验证逻辑等)进行后期安全测试。 - 前提:Web应用可以采用后端或前端语言开发
- 后端语言:php java python .NET 浏览器端看不到真实的源代码
- 前端语言:JavaScript(JS)和JS框架 浏览器端看到真实的源代码
- 例子:
- zblog:核心功能采用PHP语言去传输接受
- vue.js:核心功能采用框架语法(JS)传输接受
JS安全问题
- 源码泄漏
- 未授权访问=JS里面分析更多的URL访问确定接口路径
- 敏感key泄漏=JS文件中可能配置了接口信息(云应用,短信,邮件,数据库等)
- API接口安全=(代码中加密提交参数传递,更多的URL路径)
流行的Js框架
- Vue NodeJS jQuery Angular等
如何判定JS开发应用?
- 插件wappalyzer
- 源程序代码简短
- 引入多个js文件
- 一般有/static/js/app.js等顺序的js文件
- 一般cookie中有connect.sid
如何获取更多的JS文件?
- 手工-浏览器搜索
- 半自动-Burpsuite插件
- 工具化-各类提取&FUZZ项目
演示案例
JS前端架构-手工搜索分析
浏览器全局搜索分析
快速获取价值信息——搜索关键字如下:
- src=
- path=
- method:"get"
- http.get("
- method:"post"
- http.post("
- $.ajax
- http://service.httppost
- http://service.httpget
- ......
优缺:时间长,分析麻烦但是比较精准
JS前端架构-半自动Burp分析
- 自带功能:Target->sitemap->Engagement tools->Find scripts
- 官方插件:JS Link Finder & JS Miner
- 第三方插件:HaE & Unexpected_information
- 插件加载器:jython-standalone-2.7.2
Unexpected_information
- 获取地址:https://github.com/ScriptKid-Beta/Unexpected_information
- 用来标记请求包中的一些敏感信息、JS接口和一些特殊字段,
- 防止我们疏忽了一些数据包,使用它可能会有意外的收获信息。
HaE
- 获取地址:https://github.com/gh0stkey/HaE
- 规则获取地址:https://raw.githubusercontent.com/gh0stkey/HaE/gh-pages/Config.yml
- 基于BurpSuite插件JavaAPI开发的请求高亮标记与信息提取的辅助型插件。该插件可以通过自定义正则的方式匹配响应报文或请求报文,可以自行决定符合该自定义正则匹配的相应请求是否需要高亮标记、信息提取。
JS前端架构-自动化项目分析
优缺:精准度有所下降,但全自动
FindSomething(推荐)
- 从表现中JS中提取URL或者敏感数据
- github地址:https://github.com/momosecurity/FindSomething
- 该工具是用于快速在网页的html源码或js代码中提取一些有趣的信息的浏览器插件,包括请求的资源、接口的url,请求的ip和域名,泄漏的证件号、手机号、邮箱等信息。
Jsfinder
- 从表现中JS中提取URL或者敏感数据
- github地址:https://github.com/Threezh1/JSFinder
- 一款用作快速在网站的js文件中提取URL子域名的工具,但是时间太久,老版本了很久没更新,不推荐使用。建议使用下方的
URLFinder(推荐)
- 从表现中JS中提取URL或者敏感数据
- github地址:https://github.com/pingc0y/URLFinder
- 一款用于快速提取检测页面中JS与URL的工具。功能类似于JSFinder,但JSFinder好久没更新了。
- 常用使用方法:
- 单url
- 显示全部状态码
URLFinder.exe -u http://www.baidu.com -s all -m 3
- 显示200和403状态码
URLFinder.exe -u http://www.baidu.com -s 200,403 -m 3
- 显示全部状态码
- 批量url
- 结果分开保存
URLFinder.exe -s all -m 3 -f url.txt -o d:/
- 结果统一保存
URLFinder.exe -s all -m 3 -ff url.txt -o d:/
- 结果分开保存
- 单url
JSINFO-SCAN
- 从表现中JS中提取URL或者敏感数据
- github地址:https://github.com/p1g3/JSINFO-SCAN
- 递归爬取域名(netloc/domain),以及递归从JS中获取信息的工具,和urlfinder差不多。
ffuf-FUZZ(推荐)
- 爆破找到更多的js文件分析更多的信息
- github地址:https://github.com/ffuf/ffuf
- 功能强大的模糊化工具,用它来FUZZ模糊化js文件。
- 使用时需要js字典
- 常用使用方法:
ffuf -w /path/to/wordlist -u https://target/FUZZ
Packer-Fuzzer(推荐)
- 针对JS框架开发打包器Webpack检测
- github地址:https://github.com/rtcatc/Packer-Fuzzer
- 一款针对Webpack等前端打包工具所构造的网站进行快速、高效安全检测的扫描工具,网站使用了webpack才可使用该工具。
网站是否使用了webpack可使用findsomething浏览器插件查看。、 - 常用使用方法:
- -u(--url)要扫描的网站网址路径,为必填选项,例如:-u https://demo.poc-sir.com;
python PackerFuzzer.py -u https://demo.poc-sir.com
- -f(--flag)SSL连接安全选项,当为空时默认关闭状态,在此状态下将会阻止一切不安全的连接。若您希望忽略SSL安全状态,您可使用1命令开启,将会忽略一切证书错误,例如:-f 1;
- -u(--url)要扫描的网站网址路径,为必填选项,例如:-u https://demo.poc-sir.com;
参考
各种字典下载地址:https://wordlists.assetnote.io
学习内容均来自小迪安全系列课程:http://xiaodi8.com/