前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAW:一款针对客户端JavaScript的图形化安全分析框架

JAW:一款针对客户端JavaScript的图形化安全分析框架

作者头像
FB客服
发布2024-07-31 18:22:24
1040
发布2024-07-31 18:22:24
举报
文章被收录于专栏:FreeBuf
关于JAW

JAW是一款针对客户端JavaScript的图形化安全分析框架,该工具基于esprima解析器和EsTree SpiderMonkey Spec实现其功能,广大研究人员可以使用该工具分析Web应用程序和基于JavaScript的客户端程序的安全性。

工具特性

1、动态可扩展的框架,支持分析JavaScript程序以检测客户端漏洞; 2、使用基于Chromium的爬虫程序,利用DevTools协议和浏览器扩展API增强其功能; 3、支持收集网页、脚本、事件、DOM 快照、网络消息、Web存储和Cookie数据; 4、实现了JavaScript 混合代码属性图 (HPG) ; 5、支持交互式检测或自动检测不安全的程序行为; 6、独立的内置查询用于检测客户端 CSRF、请求劫持和DOM Clobbering漏洞; 7、设计并执行定制的安全相关程序分析,包括预定义 JavaScript 源和接收器之间的数据流分析、控制流和可达性分析、利用 DOM 快照解析 DOM 查询选择器、通过抽象语法树 (AST) 进行模式匹配等;

工具架构

工具要求

1、最新版本的NPM包管理器(Node.JS); 2、最新稳定版Python 3.x; 3、pip包管理器;

工具安装

广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/SoheilKhodayari/JAW.git

然后切换到项目目录中,执行工具安装脚本完成依赖组件的安装:

代码语言:javascript
复制
cd JAW

$ ./install.sh

运行管道

我们可以通过以下方式在命令行终端中运行管道实例:

代码语言:javascript
复制
$ python3 -m run_pipeline --conf=config.yaml

命令行参数

代码语言:javascript
复制
$ python3 -m run_pipeline -h



usage: run_pipeline.py [-h] [--conf FILE] [--site SITE] [--list LIST] [--from FROM] [--to TO]



This script runs the tool pipeline.



optional arguments:

  -h, --help                 显示工具帮助信息和退出

--conf FILE, -C FILE       管道配置文件 (默认: config.yaml)

--site SITE, -S SITE        目标待测站点 (默认: None)

--list LIST, -L LIST         目标待测站点列表 (默认: None)

--from FROM, -F FROM    设置待测站点列表的第一个入口点 (默认: -1)

--to TO, -T TO            设置待测站点列表的最后一个入口点 (默认: -1)

工具使用

下列命令可以构建一个JavaScript客户端属性图并执行Cypher查询:

代码语言:javascript
复制
$ python3 -m analyses.example.example_analysis --input=$(pwd)/data/test_program/test.js

下列命令可以执行Web爬虫:

代码语言:javascript
复制
$ cd crawler

$ node crawler.js --seedurl=https://google.com --maxurls=100 --browser=chrome --headless=true
代码语言:javascript
复制

下列命令可以启动Web爬虫并执行动态污点分析:

代码语言:javascript
复制
$ cd crawler

$ node crawler-taint.js --seedurl=https://google.com --maxurls=100 --headless=true --foxhoundpath=<optional-foxhound-executable-path>

下列命令可以将一个HPG导入到一个Neo4j图形化数据库中:

代码语言:javascript
复制
$ python3 -m hpg_neo4j.hpg_import --rpath=<path-to-the-folder-of-the-csv-files> --id=<xyz> --nodes=<nodes.csv> --edges=<rels.csv>
代码语言:javascript
复制

下列命令可以针对输出数据(hpg_crawler)创建一个混合属性图,并导入至本地Neo4j实例:

代码语言:javascript
复制
$ python3 -m engine.api <path> --js=<program.js> --import=<bool> --hybrid=<bool> --reqs=<requests.out> --evts=<events.out> --cookies=<cookies.pkl> --html=<html_snapshot.html>

使用Cypher查询执行安全分析:

代码语言:javascript
复制
$ python3 -m analyses.example.example_query_cypher

漏洞检测

首先,我们需要在config.yaml文件中针对漏洞类型启用分析组件:

代码语言:javascript
复制
request_hijacking:

enabled: true

  # [...]

  #

domclobbering:

enabled: false

  # [...]



cs_csrf:

enabled: false

  # [...]

然后使用配置文件运行管道:

代码语言:javascript
复制
$ python3 -m run_pipeline --conf=config.yaml

我们还可以在管道中运行多个实例:

代码语言:javascript
复制
$ screen -dmS s1 bash -c 'python3 -m run_pipeline --conf=conf1.yaml; exec sh'

$ screen -dmS s2 bash -c 'python3 -m run_pipeline --conf=conf2.yaml; exec sh'

$ # [...]

分析输出结果如下:

代码语言:javascript
复制
[*] Tags: ['WIN.LOC']

[*] NodeId: {'TopExpression': '86', 'CallExpression': '87', 'Argument': '94'}

[*] Location: 29

[*] Function: ajax

[*] Template: ajaxloc + "/bearer1234/"

[*] Top Expression: $.ajax({ xhrFields: { withCredentials: "true" }, url: ajaxloc + "/bearer1234/" })



1:['WIN.LOC'] variable=ajaxloc

0 (loc:6)- var ajaxloc = window.location.href

许可证协议

本项目的开发与发布遵循AGPL-3.0开源许可协议。

项目地址

JAW:

https://github.com/SoheilKhodayari/JAW

https://chromedevtools.github.io/devtools-protocol/ https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions https://neo4j.com/developer/cypher/ https://www.facebook.com/notes/facebook-bug-bounty/client-side-csrf/2056804174333798/ https://domclob.xyz/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 命令行参数
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档