diff --git a/README_CN.md b/README_CN.md index 04138acd2..b52263563 100644 --- a/README_CN.md +++ b/README_CN.md @@ -1,253 +1,303 @@

- nuclei
+ Nuclei

-[![License](https://img.shields.io/badge/license-MIT-_red.svg)](https://opensource.org/licenses/MIT) -[![Go Report Card](https://goreportcard.com/badge/github.com/projectdiscovery/nuclei)](https://goreportcard.com/report/github.com/projectdiscovery/nuclei) -[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/projectdiscovery/nuclei/issues) -[![GitHub Release](https://img.shields.io/github/release/projectdiscovery/nuclei)](https://github.com/projectdiscovery/nuclei/releases) -[![Follow on Twitter](https://img.shields.io/twitter/follow/pdnuclei.svg?logo=twitter)](https://twitter.com/pdnuclei) -[![Docker Images](https://img.shields.io/docker/pulls/projectdiscovery/nuclei.svg)](https://hub.docker.com/r/projectdiscovery/nuclei) -[![Chat on Discord](https://img.shields.io/discord/695645237418131507.svg?logo=discord)](https://discord.gg/KECAGdH) +

基于YAML语法模板的定制化快速漏洞扫描器

+

- + + + + + + +

+ +

+ 工作流程 • + 安装 • + 对于安全工程师 • + 对于开发者 • + 文档 • + 致谢 • + 常见问题 • + 加入Discord

+

+ English • + 中文 +

-Nuclei是一个基于模板的、可配置攻击目标的扫描快速工具,同时还提供了强大的可扩展性和易用性。 +--- -基于模板的nuclei被用来发送请求给目标,有着实现零误报的优点,并且可以对已知的路径进行有效的扫描。nuclei的主要用于在初期的探测阶段快速地对已知的且易于检测的漏洞或者CVE进行扫描。如果存在WAF的话,nuclei使用[retryablehttp-go库](https://github.com/projectdiscovery/retryablehttp-go)来处理各种错误,并且重新尝试攻击,这也是我们自定义功能的核心模块之一。 +Nuclei使用零误报的定制模板向目标发送请求,同时可以对大量主机进行快速扫描。Nuclei提供TCP、DNS、HTTP、FILE等各类协议的扫描,通过强大且灵活的模板,可以使用Nuclei模拟各种安全检查。 -我们也维护一个具有各个类型的模板的[开源库](https://github.com/projectdiscovery/nuclei-templates),我们希望你也能贡献一些模板,贡献的这些模板最好是有效的,并且能允许每个人基于你的模板重新构建。查看[**nuclei.projectdiscovery.io**](https://nuclei.projectdiscovery.io/templating-guide/)这个网站去学习制作模板的入门知识。 +我们的[模板仓库](https://github.com/projectdiscovery/nuclei-templates)包含**超过200**安全研究员和工程师提供的模板。 -## 目录 -- [目录](#目录) -- [功能](#功能) -- [安装](#安装) -- [Nuclei模板](#nuclei模板) -- [用法](#用法) -- [运行Nuclei](#运行nuclei) -- [排除模板](#排除模板) -- [致谢](#致谢) -## 功能 +## 工作流程 -

- nuclei -
-

-- 有着易于开发的、简单的、模块化的代码库 -- 使用了基于模板的引擎,运行速度极快,可以修改所以配置 -- 可以对特殊情况处理、重试、绕过等,可以绕过WAF -- 智能匹配,零误报 +

+ nuclei-flow +

-## 安装 -### 二进制文件安装 +# 安装Nuclei -二进制文件安装很简单,你可以从[Releases](https://github.com/projectdiscovery/nuclei/releases/)页面下载已经构建好的二进制文件压缩包,使用解压工具提取下载的压缩包,并将解压的文件夹移动到$PATH目录,就可以直接使用了。 +Nuclei需要**go1.17**才能安装成功。执行下列命令安装最新版本的Nuclei ```sh -Download latest binary from https://github.com/projectdiscovery/nuclei/releases - -▶ tar -xzvf nuclei-linux-amd64.tar.gz -▶ mv nuclei /usr/local/bin/ -▶ nuclei -version +go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest ``` -### 源码安装 +**更多的安装方式 [请点击此处](https://nuclei.projectdiscovery.io/nuclei/get-started/).** -nuclei需要**go1.14+**才能成功安装,运行以下命令获取repo + + + + +
-```sh -▶ GO111MODULE=on go get -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei -``` +### Nuclei模板 -### GitHub安装 +自从[v2.5.2]((https://github.com/projectdiscovery/nuclei/releases/tag/v2.5.2))起,Nuclei就内置了自动下载和更新模板的功能。[**Nuclei模板**](https://github.com/projectdiscovery/nuclei-templates)仓库随时更新社区中可用的模板列表。 -```sh -▶ git clone https://github.com/projectdiscovery/nuclei.git; cd nuclei/v2/cmd/nuclei/; go build; mv nuclei /usr/local/bin/; nuclei -version -``` +您仍然可以随时使用`update-templates`命令更新模板,您可以根据[模板指南](https://nuclei.projectdiscovery.io/templating-guide/)编写您自己的模板。 -## Nuclei模板 +YAML的语法规范在[这里](SYNTAX-REFERENCE.md)。 -你可以使用`update-templates`来下载和更新nuclei模板,该命令会从unclei的[模板库]()中下载最新版本,这个由社区来维护的库是可以随时使用的。 +
-```sh -▶ nuclei -update-templates -``` - -此外您可以根据自己的工作情况或者需求编写模板,请参阅**nuclei[模板向导](https://nuclei.projectdiscovery.io/templating-guide/)去编写自定义模板** - -## 用法 +### 用法 ```sh nuclei -h ``` -这条命令会显示帮助,以下是nuclei支持的所有命令 +这将显示Nuclei的帮助,以下是所有支持的命令 -|命令|描述|例子| -|-----|-----|-----| -|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 -target hxxps://example2.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| -|random-agent|使用随机的UA|nuclei -random-agent| -|H|自定义请求头|nuclei -H “x-bug-bounty:hacker”| -## 运行Nuclei +```yaml +Nuclei是一款注重于可配置性、可扩展性和易用性的基于模板的快速漏洞扫描器。 -### 运行单个模板 +用法: + nuclei [命令] -这将对`urls.txt`中所有的主机运行`git-core.yaml`并返回结果到`results.txt` +命令: +目标: + -u, -target string[] 指定扫描的URL/主机 + -l, -list string 指定需要扫描的URL/主机文件(一行一个) + +模板: + -t, -templates string[] 指定需要扫描的模板或者模板的路径 + -nt, -new-templates 只扫描最新版本中添加的模板 + -w, -workflows string[] 指定扫描中的工作流或者工作流目录 + -validate 验证通过的模板 + -tl 列出所有可用的模板 + +过滤: + -tags string[] 执行有标记的模板子集 + -etags, -exclude-tags string[] 执行标记为排除的模板 + -itags, -include-tags string[] 不执行具有攻击性的模板 + -et, -exclude-templates string[] 要排除的模板或者模板目录 + -it, -include-templates string[] 执行默认或配置中排除的模板 + -s, -severity value[] 根据严重性运行模板,允许的值有:info,low,medium,high,critical + -es, -exclude-severity value[] 根据严重性排除模板,允许的值有:info,low,medium,high,critical + -a, -author string[] 执行指定作者的模板 + +输出: + -o, -output string 输出发现的问题到文件 + -silent 只显示结果 + -nc, -no-color 禁用输出内容着色(ANSI转义码) + -json 输出为jsonL(ines) + -irr, -include-rr 在JSONL中输出对应的请求和相应(仅结果) + -nm, -no-meta 不显示匹配的元数据 + -nts, -no-timestamp 不在输出中显示时间戳 + -rdb, -report-db string 本地的Nuclei结果数据库(始终使用该数据库保存结果) + -me, -markdown-export string 以markdown导出结果 + -se, -sarif-export string 以SARIF导出结果 + +配置: + -config string 指定Nuclei的配置文件 + -rc, -report-config string 指定Nuclei报告模板文件 + -H, -header string[] 指定报告中的标题:value格式 + -V, -var value 通过var=value指定var值 + -r, -resolvers string 指定Nuclei的解析文件 + -sr, -system-resolvers 当DNS错误时使用系统DNS + -passive 启用被动扫描处理HTTP响应 + -ev, env-vars 在模板中使用环境变量 + +交互: + -inserver, -ineractsh-server string 使用interactsh反连检测平台(默认为"https://interactsh.com") + -itoken, -interactsh-token string 指定反连检测平台的身份凭证 + -interactions-cache-size int 指定保存在交互缓存中的请求数(默认:5000) + -interactions-eviction int 聪缓存中删除请求前等待的时间(默认为60秒) + -interactions-poll-duration int 每个轮询前等待时间(默认为5秒) + -interactions-cooldown-period int 退出轮询前的等待时间(默认为5秒) + -ni, -no-interactsh 禁用反连检测平台,同时排除基于反连检测的模板 + +限速: + -r1, -rate-limit int 每秒最大请求量(默认:150) + -rlm, -rate-limit-minute int 每分钟最大请求量 + -bs, -bulk-size int 每个模板最大并行检测数(默认:25) + -c, -concurrency int 并行执行的最大模板数量(默认:25) + + +优化: + -timeout int 超时时间(默认为5秒) + -retries int 重试次数(默认:1) + -mhe, -max-host-error int 某主机扫描失败次数,跳过该主机(默认:30) + -project 使用项目文件夹避免多次发送同一请求 + -project-path string 设置特定的项目文件夹 + -spm, -stop-at-first-path 得到一个结果后停止(或许会中断模板和工作流的逻辑) + -stream 流模式 - 在不整理输入的情况下详细描述 + +无界面浏览器: + -headless 启用需要无界面浏览器的模板 + -page-timeout int 在无界面下超时秒数(默认:20) + -sb, -show-brower 在无界面浏览器运行模板时,显示浏览器 + -sc, -system-chrome 不使用Nuclei自带的浏览器,使用本地浏览器 + +调试: + -debug 显示所有请求和响应 + -debug-req 显示所有请求 + -debug-resp 显示所有响应 + -proxy, -proxy-url string 使用HTTP代理 + -proxy-socks-url string 使用SOCK5代理 + -tlog, -trace-log string 写入请求日志到文件 + -version 显示版本信息 + -v, -verbose 显示详细信息 + -vv 显示额外的详细信息 + -tv, -templates-version 显示已安装的模板版本 + +升级: + -update 更新Nuclei到最新版本 + -ut, -update-templates 更新Nuclei模板到最新版 + -ud, -update-directory string 覆盖安装模板 + -duc, -disable-update-check 禁用更新 + +统计: + -stats 显示正在扫描的统计信息 + -sj, -stats-json 将统计信息以JSONL格式输出到文件 + -si, -stats-inerval int 显示统计信息更新的间隔秒数(默认:5) + -m, -metrics 显示Nuclei端口信息 + -mp, -metrics-port int 更改Nuclei默认端口(默认:9092) +``` + +### 运行Nuclei + +使用[社区提供的模板](https://github.com/projectdiscovery/nuclei-templates)扫描单个目标 ```sh -▶ nuclei -l urls.txt -t files/git-core.yaml -o results.txt +nuclei -u https://example.com ``` -你可以轻松的通过管道使用标准的输入(STDIN)传递URL列表。 +使用[社区提供的模板](https://github.com/projectdiscovery/nuclei-templates)扫描多个目标 ```sh -▶ cat urls.txt | nuclei -t files/git-core.yaml -o results.txt +nuclei -list urls.txt ``` -💡 Nuclei可以接受如下列表的URL作为输入,例如以下URL: +Example of `urls.txt`: -``` -https://test.some-site.com -http://vuls-testing.com -https://test.com -``` -### 运行多个模板 - -这将会对`urls.txt`中所有的URL运行`cves`和`files`模板检查,并返回输出到`results.txt` - -```sh -▶ nuclei -l urls.txt -t cves/ -t files/ -o results.txt +```yaml +http://example.com +http://app.example.com +http://test.example.com +http://uat.example.com ``` -### 使用subfinder运行 +**更多关于Nuclei的详细实例可以在[这里](https://nuclei.projectdiscovery.io/nuclei/get-started/#running-nuclei)找到** -```sh -▶ subfinder -d hackerone.com -silent | httpx -silent | nuclei -t cves/ -o results.txt -``` +# 对于安全工程师 -### 在docker中运行 +Nuclei提供了大量有助于安全工程师在工作流定制相关的功能。通过各种扫描功能(如DNS、HTTP、TCP),安全工程师可以更轻松的使用Nuclei创建一套自定义的检查方式。 -你需要使用[nuclei的docker镜像](https://hub.docker.com/r/projectdiscovery/nuclei)来运行 +- 支持多种协议:TCP、DNS、HTTP、FILE等 +- 通过工作流和动态请求实现复杂的漏洞扫描 +- 易于集成到CI/CD,旨在可以轻松的集成到周期扫描中,以主动检测漏洞的修复和重新出现 -```sh -▶ docker pull projectdiscovery/nuclei -``` +

+ Learn More +

-下载并构建完成后,运行以下命令: + + + + +
-```sh -▶ docker run -it projectdiscovery/nuclei -``` +**对于赏金猎人:** -这将会对`urls.txt`中的URL通过docker中的nuclei进行检测,并将结果输出到本机的`results.txt`文件的: +Nuclei允许您定制自己的测试方法,可以轻松的运行您的程序。此外Nuclei可以更容易的集成到您的漏扫设备中。 -```sh -▶ 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 -``` -记住更改的模板路径到本机 +- 可以集成到其他工作流中 +- 可以在几分钟处理上千台主机 +- 使用YAML语法定制自动化测试 -### 速率限制 +欢迎查看我们其他的开源项目,可能有适合您的赏金猎人工作流:[github.com/projectdiscovery](http://github.com/projectdiscovery),我们还使用[Chaos绘制了每日的DNS数据](http://chaos.projectdiscovery.io)。 -Nuclei有多种控制速率的方法,包括并行执行多个模板、并行检查多个主机,以及使nuclei限制全局的请求速率,下面就是示例。 +
-- `-c`参数 => 限制并行的模板数 -- `-bulk-size`参数 => 限制并行的主机数 -- `-rate-limit`参数 => 全局速率限制 + + + + +
-如果你想快速扫描或者控制扫描,请使用这些标志并输入限制数,`速率限制`只保证控制传出的请求,与其他参数无关。 +**对于渗透测试:** -### 排除模板 +Nuclei通过增加手动、自动的过程,极大地改变了安全评估的方式。一些公司已经在用Nuclei升级他们的手动测试步骤,可以使用Nulcei对数千台主机使用同样的流程自动化测试。 -[Nuclei模板](https://github.com/projectdiscovery/nuclei-templates)包含多种检查,其中有许多对攻击有用的检查,但并不是都有用的。如果您只希望扫描少数特定的模板或目录,则可以使用如下的参数筛选模板,或将某些模板排除。 +渗透测试员可以使用公共模板或者自定义模板来更快的完成渗透测试,特别是漏洞验证时,可以轻松的验证漏洞是否修复。 -#### 排除模板运行 +- 轻松根据您的要求创建标准清单(例如:OWASP TOP 10) +- 通过[FUZZ](https://nuclei.projectdiscovery.io/templating-guide/#advance-fuzzing)和[工作流](https://nuclei.projectdiscovery.io/templating-guide/#workflows)等功能,可以使用Nuclei完成复杂的手动步骤和重复性渗透测试 +- 只需要重新运行Nuclei即可验证漏洞修复情况 -我们不建议同时运行所有的nuclei模板,如果要排除模板,可以使用`exclude`参数来排除特定的目录或模板。 +
-```sh -nuclei -l urls.txt -t nuclei-templates -exclude panels/ -exclude technologies -exclude files/wp-xmlrpc.yaml -``` +# 对于开发和组织 -注意:如上述示例中显示的那样,目录和特定模板都将不会扫描 +Nuclei构建很简单,通过数百名安全研究员的社区模板,Nuclei可以随时扫描来了解安全威胁。Nuclei通常用来用于复测,以确定漏洞是否被修复。 -#### 基于严重性运行模板 +- **CI/CD:**工程师已经支持了CI/CD,可以使用Nuclei来监控生产环境 +- **周期性扫描:**使用Nuclei创建新发现的漏洞模板,通过Nuclei可以周期性扫描消除漏洞 -您可以根据模板的严重性运行模板,扫描时可以选择单个严重性或多个严重性。 +我们有个[讨论组](https://github.com/projectdiscovery/nuclei-templates/discussions/693),黑客提交自己的模板后可以获得赏金,这可以减少资产的漏洞,并且减少重复。如果你想实行该计划,可以[联系我](mailto:contact@projectdiscovery.io)。我们非常乐意提供帮助,或者在[讨论组](https://github.com/projectdiscovery/nuclei-templates/discussions/693)中发布相关信息。 -```sh -nuclei -l urls.txt -t cves/ -severity critical,medium -``` +

+ regression-cycle-with-nuclei +

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

+ Learn More +

-```sh -nuclei -l urls.txt -t panels/ -t technologies -severity info -``` +### 资源 +- [使用Nuclei扫描](https://blog.projectdiscovery.io/community-powered-scanning-with-nuclei/) +- [Nuclei Unleashed - 快速编写复杂漏洞](https://blog.projectdiscovery.io/nuclei-unleashed-quickly-write-complex-exploits/) +- [Nuclei - FUZZ一切](https://blog.projectdiscovery.io/nuclei-fuzz-all-the-things/) +- [Nuclei + Interactsh Integration,用于自动化OOB测试](https://blog.projectdiscovery.io/nuclei-interactsh-integration/) +- [武器化Nuclei](https://medium.com/@dwisiswant0/weaponizes-nuclei-workflows-to-pwn-all-the-things-cd01223feb77) 作者:[@dwisiswant0](https://github.com/dwisiswant0) +- [如何使用Nuclei连续扫描?](https://medium.com/@dwisiswant0/how-to-scan-continuously-with-nuclei-fcb7e9d8b8b9) 作者:[@dwisiswant0](https://github.com/dwisiswant0) +- [自动化攻击](https://dhiyaneshgeek.github.io/web/security/2021/07/19/hack-with-automation/) 作者:[@DhiyaneshGeek](https://github.com/DhiyaneshGeek) -上面的例子将运行`panels`和`technologies`目录下严重性标记为`info`的模板 +### 致谢 -#### 使用`.nuclei-ignore`文件排除模板 +感谢所有[社区贡献者提供的PR](https://github.com/projectdiscovery/nuclei/graphs/contributors),另外您可以其他类似的开源项目: -自从nuclei的[v2.1.1版本](https://github.com/projectdiscovery/nuclei/releases/tag/v2.1.1)以来,我们添加了对`.nuclei-ignore`文件的支持,该文件与`update-templates`参数一起使用,在 **.nuclei-ignore** 文件中,您可以定义要从nuclei扫描中排除的所有模板目录或者模板路径,要开始使用此功能,请确保使用`nuclei-update-templates`参数安装nuclei模板,现在可以根据`.nuclei-ignore`的文件来添加、更新、删除模板文件。 +[FFuF](https://github.com/ffuf/ffuf), [Qsfuzz](https://github.com/ameenmaali/qsfuzz), [Inception](https://github.com/proabiral/inception), [Snallygaster](https://github.com/hannob/snallygaster), [Gofingerprint](https://github.com/Static-Flow/gofingerprint), [Sn1per](https://github.com/1N3/Sn1per/tree/master/templates), [Google tsunami](https://github.com/google/tsunami-security-scanner), [Jaeles](https://github.com/jaeles-project/jaeles), [ChopChop](https://github.com/michelin/ChopChop) -``` -nano ~/nuclei-templates/.nuclei-ignore -``` +### 许可证 -默认的**nuclei忽略**列表可以访问[这里]((https://github.com/projectdiscovery/nuclei-templates/blob/master/.nuclei-ignore),如果不想排除任何内容,只需要删除`.nuclei-ignore`文件。 +Nuclei使用[MIT许可证](https://github.com/projectdiscovery/nuclei/blob/master/LICENSE.md) -* * * - -### 📋 笔记 - -- 进度条是实验性功能,在某些情况下可能无法使用。 -- 进度条不适用于工作流,因为是条件执行,所以不准确。 - - -## 致谢 - -也要看看这些类似的好项目,或许它们也适合你: - -[Burp Suite](https://portswigger.net/burp), [FFuF](https://github.com/ffuf/ffuf), [Jaeles](https://github.com/jaeles-project/jaeles), [Qsfuzz](https://github.com/ameenmaali/qsfuzz), [Inception](https://github.com/proabiral/inception), [Snallygaster](https://github.com/hannob/snallygaster), [Gofingerprint](https://github.com/Static-Flow/gofingerprint), [Sn1per](https://github.com/1N3/Sn1per/tree/master/templates), [Google tsunami](https://github.com/google/tsunami-security-scanner), [ChopChop](https://github.com/michelin/ChopChop) - --------- - -Nuclei是由[projectdiscovery](https://projectdiscovery.io)团队用🖤制作的,当然社区也贡献了很多,通过 **[Thanks.md](https://github.com/projectdiscovery/nuclei/blob/master/THANKS.md)**文件以获取更多详细信息。 +

+ Join Discord Check Nuclei Documentation +