freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

GraphQL Cop:一款针对GraphQL API的安全审计工具
Alpha_h4ck 2024-11-21 23:05:24 93473
所属地 广西

关于GraphQL Cop

GraphQL Cop是一个小型 Python 实用程序,用于针对 GraphQL API 运行常见的安全测试。GraphQL Cop非常适合在 GraphQL 中运行 CI/CD 检查。

GraphQL Cop是一个轻量级工具,并且涵盖了GraphQL中有趣的安全问题。

值得一提的是,GraphQL Cop允许广大研究人员通过在任何已发现的漏洞上提供cURL命令来重现调查结果。

功能介绍

当前版本的GraphQL Cop支持执行下列检测:

1、别名过载(DoS);

2、批量查询(DoS);

3、基于 GET 的查询(CSRF);

4、使用 urlencoded 负载的 POST 查询(CSRF);

5、GraphQL 跟踪/调试模式(信息泄漏);

6、字段重复(DoS);

7、字段建议(信息泄露);

8、GraphiQL(信息泄露);

9、自省(信息泄露);

10、指令重载(DoS);

11、使用内省(DoS)的循环查询;

12、通过 GET 方法支持变异(CSRF);

工具要求

requests==2.25.1

simplejson==3.17.6

termcolor==2.2.0

PySocks==1.7.1

工具安装

由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3环境。

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

git clone https://github.com/dolevf/graphql-cop.git

然后切换到项目目录中,使用下列命令在指定的目录中创建一个虚拟环境,然后激活虚拟环境,并安装requirements.txt 中列出的所有 Python 包:

cd graphql-cop

python3 -m venv path/to/venv

source path/to/venv/bin/activate

python3 -m pip install -r requirements.txt

工具使用

$ python graphql-cop.py -h

 

Usage: graphql-cop.py -t http://example.com -o json

 

Options:

  -h, --help            显示此帮助消息并退出

  -t URL, --target=URL   目标URL地址,如果没有提供GraphQL路径,GraphQL Cop将迭代一系列常见GraphQL路径

  -H HEADER, --header=HEADER     将Header(s) 添加到请求中

  -o FORMAT, --output=FORMAT      输出json格式

  -f, --force             在无法检测到GraphQL时强制扫描

  -d, --debug          为调试添加一个带有测试名称的Header

  -x PROXY, --proxy=PROXY   HTTP(S)代理URL,格式为http://user:pass@host:port

  -v, --version         打印工具当前版本

  -T, --tor            启用Tor代理

工具运行演示

测试网站:

$ python3 graphql-cop.py -t https://mywebsite.com/graphql

 

                GraphQL Cop 1.1

           Security Auditor for GraphQL

            Dolev Farhi & Nick Aleks

 

Starting...

[HIGH] Introspection Query Enabled (Information Leakage)

[LOW] GraphQL Playground UI (Information Leakage)

[HIGH] Alias Overloading with 100+ aliases is allowed (Denial of Service)

[HIGH] Queries are allowed with 1000+ of the same repeated field (Denial of Service)

测试网站,转储为可解析的 JSON 输出,cURL 复现命令:

python3 graphql-cop.py -t https://mywebsite.com/graphql -o json

 

 {'curl_verify': 'curl -X POST -H "User-Agent: graphql-cop/1.2" -H '

                 '"Accept-Encoding: gzip, deflate" -H "Accept: */*" -H '

                 '"Connection: keep-alive" -H "Content-Length: 33" -H '

                 '"Content-Type: application/json" -d \'{"query": "query { '

                 '__typename }"}\' \'http://localhost:5013/graphql\'',

  'description': 'Tracing is Enabled',

  'impact': 'Information Leakage',

  'result': False,

  'severity': 'INFO',

  'color': 'green',

  'title': 'Trace Mode'},

 {'curl_verify': 'curl -X POST -H "User-Agent: graphql-cop/1.2" -H '

                 '"Accept-Encoding: gzip, deflate" -H "Accept: */*" -H '

                 '"Connection: keep-alive" -H "Content-Length: 64" -H '

                 '"Content-Type: application/json" -d \'{"query": "query { '

                 '__typename @aa@aa@aa@aa@aa@aa@aa@aa@aa@aa }"}\' '

                 "'http://localhost:5013/graphql'",

  'description': 'Multiple duplicated directives allowed in a query',

  'impact': 'Denial of Service',

  'result': True,

  'severity': 'HIGH',

  'color': 'red',

  'title': 'Directive Overloading'}]

graphql-cop通过代理(例如,监听 127.0.0.1:8080 的 Burp Suite)和自定义标头(例如,授权)测试网站:

$ python3 graphql-cop.py -t https://mywebsite.com/graphql --proxy=http://127.0.0.1:8080 --header '{"Authorization": "Bearer token_here"}'

 

                GraphQL Cop 1.2

           Security Auditor for GraphQL

            Dolev Farhi & Nick Aleks

 

Starting...

[HIGH] Introspection Query Enabled (Information Leakage)

[LOW] GraphQL Playground UI (Information Leakage)

[HIGH] Alias Overloading with 100+ aliases is allowed (Denial of Service)

[HIGH] Queries are allowed with 1000+ of the same repeated field (Denial of Service)

许可证协议

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

项目地址

GraphQL Cop:【GitHub传送门

# 安全审计 # 安全检测 # GraphQL # GraphQL安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Alpha_h4ck 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
Alpha_h4ck LV.10
好好学习,天天向上
  • 2359 文章数
  • 1020 关注者
Tetragon:一款基于eBPF的运行时环境安全监控工具
2025-01-21
DroneXtract:一款针对无人机的网络安全数字取证工具
2025-01-21
CNAPPgoat:一款针对云环境的安全实践靶场
2025-01-21
文章目录