nuclei

笔记目录:


项目地址

模板库

文章


安装及维护

安装

  • 二进制文件安装

    1. 从 Releases 页面下载已经构建好的二进制文件压缩包
    tar -xzvf nuclei-linux-amd64.tar.gz
    mv nuclei /usr/local/bin/
    nuclei -version
    
  • 源码安装

    GO111MODULE=on go get -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei
    
  • 编译安装

    git clone https://github.com/projectdiscovery/nuclei.git; cd nuclei/v2/cmd/nuclei/; go build; mv nuclei /usr/local/bin/; nuclei -version
    
  • 基于 docker

    docker pull projectdiscovery/nuclei
    docker run -it projectdiscovery/nuclei
    

模板库更新

该命令会从 https://github.com/projectdiscovery/nuclei-templates 模板库中下载最新版本

nuclei -update-templates

命令参数

命令 描述 例子
bulk-size 每个模板最大并行的主机数(默认25) nuclei -bulk-size 25
burp-collaborator-biid 使用burp-collaborator插件 nuclei -burp-collaborator-biid XXXX
c 并行的最大模板数量(默认10) nuclei -c 10
l 对URL列表进行测试 nuclei -l urls.txt
target 对目标进行测试 nuclei -target hxxps://example.com
t 要检测的模板种类 nuclei -t git-core.yaml -t cves/
no-color 输出不显示颜色 nuclei -no-color
no-meta 不显示匹配的元数据 nuclei -no-meta
json 输出为json格式 nuclei -json
include-rr json输出格式中包含请求和响应数据 nuclei -json -include-rr
o 输出为文件 nuclei -o output.txt
project 避免发送相同的请求 nuclei -project
stats 使用进度条 nuclei -stats
silent 只输出测试成功的结果 nuclei -silent
retries 失败后的重试次数 nuclei -retries 1
timeout 超时时间(默认为5秒) nuclei -timeout 5
trace-log 输出日志到log文件 nuclei -trace-log logs
rate-limit 每秒最大请求数(默认150) nuclei -rate-limit 150
severity 根据严重性选择模板 nuclei -severity critical,high
stop-at-first-match 第一次匹配不要处理HTTP请求 nuclei -stop-at-frst-match
exclude 排除的模板或文件夹 nuclei -exclude panels -exclude tokens
debug 调试请求或者响应 nuclei -debug
update-templates 下载或者升级模板 nuclei -update-templates
update-directory 选择储存模板的目录(可选) nuclei -update-directory templates
tl 列出可用的模板 nuclei -tl
templates-version 显示已安装的模板版本 nuclei -templates-version
v 显示发送请求的详细信息 nuclei -v
version 显示nuclei的版本号 nuclei -version
proxy-url 输入代理地址 nuclei -proxy-url hxxp://127.0.0.1:8080
proxy-socks-url 输入socks代理地址 nuclei -proxy-socks-url socks5://127.0.0.1:8080
H 自定义请求头 nuclei -H “x-bug-bounty:hacker”

使用

运行单个模板

对 urls.txt 中所有的主机运行 git-core.yaml 并返回结果到 results.txt

这将对 urls.txt 中所有的主机运行 git-core.yaml 并返回结果到 results.txt

nuclei -l urls.txt -t files/git-core.yaml -o results.txt

你可以轻松的通过管道使用标准的输入 (STDIN) 传递 URL 列表。

cat urls.txt | nuclei -t files/git-core.yaml -o results.txt

Nuclei 可以接受如下列表的 URL 作为输入,例如以下 URL:

https://test.some-site.com
http://vuls-testing.com
https://test.com

运行多个模板

这将会对 urls.txt 中所有的 URL 运行 cvesfiles 模板检查,并返回输出到 results.txt

nuclei -l urls.txt -t cves/ -t files/ -o results.txt

组合运行

subfinder -d hackerone.com -silent | httpx -silent | nuclei -t cves/ -o results.txt

docker 调用

urls.txt 中的 URL 通过 docker 中的 nuclei 进行检测,并将结果输出到本机的 results.txt 文件:

cat urls.txt | docker run -v /path/to/nuclei-templates:/app/nuclei-templates -v /path/to/nuclei/config:/app/.nuclei-config.json -i projectdiscovery/nuclei -t /app/nuclei-templates/files/git-config.yaml > results.txt

记得更改本机的模板路径


使用优化

速率限制

Nuclei 有多种控制速率的方法,包括并行执行多个模板、并行检查多个主机,以及使 nuclei 限制全局的请求速率,下面就是示例。

  • -c 参数 - 限制并行的模板数
  • -bulk-size 参数 - 限制并行的主机数
  • -rate-limit 参数 - 全局速率限制

如果你想快速扫描或者控制扫描,请使用这些标志并输入限制数,速率限制 只保证控制传出的请求,与其他参数无关。

排除模板

Nuclei模板 包含多种检查,其中有许多对攻击有用的检查,但并不是都有用的。如果您只希望扫描少数特定的模板或目录,则可以使用如下的参数筛选模板,或将某些模板排除。

  • 排除模板运行

    我们不建议同时运行所有的 nuclei 模板,如果要排除模板,可以使用 exclude 参数来排除特定的目录或模板。

    nuclei -l urls.txt -t nuclei-templates -exclude panels/ -exclude technologies -exclude files/wp-xmlrpc.yaml
    

    注意:如上述示例中显示的那样,目录和特定模板都将不会扫描

  • 基于严重性运行模板

    您可以根据模板的严重性运行模板,扫描时可以选择单个严重性或多个严重性。

    nuclei -l urls.txt -t cves/ -severity critical,medium
    

    上面的例子将运行 cves 目录下所有 严重中等 的模板。

    nuclei -l urls.txt -t panels/ -t technologies -severity info
    

    上面的例子将运行 panelstechnologies 目录下严重性标记为 info 的模板

  • 使用 .nuclei-ignore 文件排除模板

    自从 nuclei 的 v2.1.1 版本 以来,我们添加了对 .nuclei-ignore 文件的支持,该文件与 update-templates 参数一起使用,在 .nuclei-ignore 文件中,您可以定义要从 nuclei 扫描中排除的所有模板目录或者模板路径,要开始使用此功能,请确保使用 nuclei-update-templates 参数安装 nuclei 模板,现在可以根据 .nuclei-ignore 的文件来添加、更新、删除模板文件。

    nano ~/nuclei-templates/.nuclei-ignore
    

    默认的 nuclei 忽略列表可以访问 [这里]((https://github.com/projectdiscovery/nuclei-templates/blob/master/.nuclei-ignore),如果不想排除任何内容,只需要删除 .nuclei-ignore 文件。