如何使用Noir从源代码检测攻击面

2023-09-24 09:14:25 浏览数 (1)

关于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

0 人点赞