关于Noir
Noir是一款功能强大的代码安全检测工具,在该工具的帮助下,广大研究人员能够轻松从源代码层面检测目标应用程序的潜在攻击面。
功能介绍
1、从源代码自动识别编程语言和框架; 2、通过代码分析查找API终端节点和网站页面; 3、通过与ZAP、Burpsuite、Caido和More proxy工具等代理工具的交互,快速加载分析结果; 4、支持为已成功识别的攻击面提供结构化结果数据,例如JSON和HAR等,以实现与其他工具的无缝交互; 5、提供了命令行使用样例,以便轻松地与其他工具(如curls或httpie)集成和协作;
工具支持的可用范围
终端节点实体
1、路径Path 2、方法Method 3、参数Param 4、网站头Header 5、协议Protocol(例如ws)
语言和框架
语言 | 框架 | URL | Method | Param | Header | WS |
---|---|---|---|---|---|---|
Go | Echo | ✅ | ✅ | ✅ | ✅ | X |
Go | Gin | ✅ | ✅ | ✅ | ✅ | X |
Python | Django | ✅ | X | X | X | X |
Python | Flask | ✅ | X | X | X | X |
Ruby | Rails | ✅ | ✅ | ✅ | ✅ | X |
Ruby | Sinatra | ✅ | ✅ | ✅ | ✅ | X |
Php | ✅ | ✅ | ✅ | ✅ | X | |
Java | Spring | ✅ | ✅ | X | X | X |
Java | Jsp | ✅ | ✅ | ✅ | X | X |
Crystal | Kemal | ✅ | ✅ | ✅ | ✅ | ✅ |
JS | Express | ✅ | ✅ | X | X | X |
JS | Next | X | X | X | X | X |
规范标准
规范 | 格式 | URL | Method | Param | Header | WS |
---|---|---|---|---|---|---|
OAS 2.0 (Swagger 2.0) | JSON | ✅ | ✅ | ✅ | ✅ | X |
OAS 2.0 (Swagger 2.0) | YAML | ✅ | ✅ | ✅ | ✅ | X |
OAS 3.0 | JSON | ✅ | ✅ | ✅ | ✅ | X |
OAS 3.0 | YAML | ✅ | ✅ | ✅ | ✅ | X |
RAML | YAML | ✅ | ✅ | ✅ | ✅ | X |
工具安装
由于该工具基于Crystal开发,因此我们首先需要在本地设备上装并配置好Crystal开发环境。
源码安装
首先,我们需要访问下列地址安装Crystal-lang:
代码语言:javascript复制https://crystal-lang.org/install/
接下来,广大研究人员可以使用下列命令将该项目源码克隆至本地:
代码语言:javascript复制git clone https://github.com/hahwul/noir
(向右滑动,查看更多)
然后切换到项目目录中,并安装工具所需其他依赖组件:
代码语言:javascript复制cd noir
shards install
依赖组件安装完成后,我们需要对代码进行构建:
代码语言:javascript复制shards build --release --no-debug
最后,将构建生成后的代码拷贝到指定路径即可:
代码语言:javascript复制cp ./bin/noir /usr/bin/
Docker安装(GHCR)
代码语言:javascript复制docker pull ghcr.io/hahwul/noir:main
Homebrew安装(macOS)
代码语言:javascript复制brew tap hahwul/noir
brew install noir
工具使用帮助
代码语言:javascript复制Usage: noir <flags>
Basic:
-b PATH, --base-path ./app 设置基路径(必须)
-u URL, --url http://.. 设置终端节点基地址URL
-s SCOPE, --scope url,param 设置检测范围
Output:
-f FORMAT, --format json 设置输出格式,包括[plain/json/markdown-table/curl/httpie]
-o PATH, --output out.txt 将结果写入到文件中
--set-pvalue VALUE 给已识别参数指定值
--no-color 禁用颜色高亮输出
--no-log 仅显示结果
Deliver:
--send-req 将结果发送至Web请求
--send-proxy http://proxy.. 通过HTTP代理将结果发送至Web请求
Technologies:
-t TECHS, --techs rails,php 设置要使用的技术
--exclude-techs rails,php 指定需要排除的技术
--list-techs 显示所有技术(列表)
Others:
-d, --debug 显示调试信息
-v, --version 显示工具版本
-h, --help 显示工具帮助信息
(向右滑动,查看更多)
工具使用样例
代码语言:javascript复制
noir -b . -u https://testapp.internal.domains
(向右滑动,查看更多)
JSON结果
代码语言:javascript复制
代码语言:javascript复制noir -b . -u https://testapp.internal.domains -f json
[
...
{
"headers": [],
"method": "POST",
"params": [
{
"name": "article_slug",
"param_type": "json",
"value": ""
},
{
"name": "title",
"param_type": "json",
"value": ""
},
{
"name": "id",
"param_type": "json",
"value": ""
}
],
"protocol": "http",
"url": "https://testapp.internal.domains/comments"
}
]
代码语言:javascript复制(向右滑动,查看更多)
许可证协议
本项目的开发与发布遵循MIT开源许可证协议。
项目地址
Noir:https://github.com/hahwul/noir