开源
nuclei:基于 YAML 语法模板的定制化快速漏洞扫描器
来源:元经纪     阅读:529
网站管理员
发布于 2023-06-13 05:38
查看主页

概述

nuclei是基于 YAML 语法模板的定制化快速漏洞扫描器,工程师可以轻松地使用它创建一套自定义的检查方式。

Nuclei 用于基于模板跨目标发送请求,从而实现零误报并提供对大量主机的快速扫描。Nuclei 提供对各种协议的扫描,包括 TCP、DNS、HTTP、SSL、File、Whois、Websocket、Headless 等。凭借强大而灵活的模板,Nuclei 可用于对各种安全检查进行建模。

Nuclei 有一个专门的存储库,其中包含由300 多名安全研究人员和工程师贡献的各种类型的漏洞模板。

运行

安装Nuclei

[hidecontent type="logged" desc="隐藏内容:登录后可查看"]

Nuclei需要go1.20才能安装成功。运行以下命令以安装最新版本 -

go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@lates

Brew

brew install nuclei

Docker

docker pull projectdiscovery/nuclei:latest

可以在此处找到更多安装方法。

Nuclei模板

Nuclei 自v2.5.2版本以来默认内置支持自动模板下载/更新。Nuclei-Templates项目提供了一个社区贡献的随时可用的模板列表,该列表会不断更新。

您仍然可以update-templates随时使用标志更新核模板;您可以按照 Nuclei 的模板指南为您的个人工作流程和需求编写自己的检查。

YAML DSL 参考语法可在此处获得。

用法

nuclei -h

这将显示该工具的帮助。这是它支持的所有开关。

Nuclei is a fast, template based vulnerability scanner focusing
on extensive configurability, massive extensibility and ease of use.

Usage:
  ./nuclei [flags]

Flags:
TARGET:
   -u, -target string[]       target URLs/hosts to scan
   -l, -list string           path to file containing a list of target URLs/hosts to scan (one per line)
   -resume string             resume scan using resume.cfg (clustering will be disabled)
   -sa, -scan-all-ips         scan all the IP's associated with dns record
   -iv, -ip-version string[]  IP version to scan of hostname (4,6) - (default 4)

TEMPLATES:
   -nt, -new-templates                    run only new templates added in latest nuclei-templates release
   -ntv, -new-templates-version string[]  run new templates added in specific version
   -as, -automatic-scan                   automatic web scan using wappalyzer technology detection to tags mapping
   -t, -templates string[]                list of template or template directory to run (comma-separated, file)
   -tu, -template-url string[]            list of template urls to run (comma-separated, file)
   -w, -workflows string[]                list of workflow or workflow directory to run (comma-separated, file)
   -wu, -workflow-url string[]            list of workflow urls to run (comma-separated, file)
   -validate                              validate the passed templates to nuclei
   -nss, -no-strict-syntax                disable strict syntax check on templates
   -td, -template-display                 displays the templates content
   -tl                                    list all available templates

FILTERING:
   -a, -author string[]               templates to run based on authors (comma-separated, file)
   -tags string[]                     templates to run based on tags (comma-separated, file)
   -etags, -exclude-tags string[]     templates to exclude based on tags (comma-separated, file)
   -itags, -include-tags string[]     tags to be executed even if they are excluded either by default or configuration
   -id, -template-id string[]         templates to run based on template ids (comma-separated, file)
   -eid, -exclude-id string[]         templates to exclude based on template ids (comma-separated, file)
   -it, -include-templates string[]   templates to be executed even if they are excluded either by default or configuration
   -et, -exclude-templates string[]   template or template directory to exclude (comma-separated, file)
   -em, -exclude-matchers string[]    template matchers to exclude in result
   -s, -severity value[]              templates to run based on severity. Possible values: info, low, medium, high, critical, unknown
   -es, -exclude-severity value[]     templates to exclude based on severity. Possible values: info, low, medium, high, critical, unknown
   -pt, -type value[]                 templates to run based on protocol type. Possible values: dns, file, http, headless, tcp, workflow, ssl, websocket, whois
   -ept, -exclude-type value[]        templates to exclude based on protocol type. Possible values: dns, file, http, headless, tcp, workflow, ssl, websocket, whois
   -tc, -template-condition string[]  templates to run based on expression condition

OUTPUT:
   -o, -output string            output file to write found issues/vulnerabilities
   -sresp, -store-resp           store all request/response passed through nuclei to output directory
   -srd, -store-resp-dir string  store all request/response passed through nuclei to custom directory (default "output")
   -silent                       display findings only
   -nc, -no-color                disable output content coloring (ANSI escape codes)
   -j, -jsonl                    write output in JSONL(ines) format
   -irr, -include-rr             include request/response pairs in the JSONL output (for findings only)
   -nm, -no-meta                 disable printing result metadata in cli output
   -ts, -timestamp               enables printing timestamp in cli output
   -rdb, -report-db string       nuclei reporting database (always use this to persist report data)
   -ms, -matcher-status          display match failure status
   -me, -markdown-export string  directory to export results in markdown format
   -se, -sarif-export string     file to export results in SARIF format
   -je, -json-export string      file to export results in JSON format
   -jle, -jsonl-export string    file to export results in JSONL(ine) format

CONFIGURATIONS:
   -config string                 path to the nuclei configuration file
   -fr, -follow-redirects         enable following redirects for http templates
   -fhr, -follow-host-redirects   follow redirects on the same host
   -mr, -max-redirects int        max number of redirects to follow for http templates (default 10)
   -dr, -disable-redirects        disable redirects for http templates
   -rc, -report-config string     nuclei reporting module configuration file
   -H, -header string[]           custom header/cookie to include in all http request in header:value format (cli, file)
   -V, -var value                 custom vars in key=value format
   -r, -resolvers string          file containing resolver list for nuclei
   -sr, -system-resolvers         use system DNS resolving as error fallback
   -dc, -disable-clustering       disable clustering of requests
   -passive                       enable passive HTTP response processing mode
   -fh2, -force-http2             force http2 connection on requests
   -ev, -env-vars                 enable environment variables to be used in template
   -cc, -client-cert string       client certificate file (PEM-encoded) used for authenticating against scanned hosts
   -ck, -client-key string        client key file (PEM-encoded) used for authenticating against scanned hosts
   -ca, -client-ca string         client certificate authority file (PEM-encoded) used for authenticating against scanned hosts
   -sml, -show-match-line         show match lines for file templates, works with extractors only
   -ztls                          use ztls library with autofallback to standard one for tls13
   -sni string                    tls sni hostname to use (default: input domain name)
   -sandbox                       sandbox nuclei for safe templates execution
   -i, -interface string          network interface to use for network scan
   -at, -attack-type string       type of payload combinations to perform (batteringram,pitchfork,clusterbomb)
   -sip, -source-ip string        source ip address to use for network scan
   -config-directory string       override the default config path ($home/.config)
   -rsr, -response-size-read int  max response size to read in bytes (default 10485760)
   -rss, -response-size-save int  max response size to read in bytes (default 1048576)
   -reset                         reset removes all nuclei configuration and data files (including nuclei-templates)

INTERACTSH:
   -iserver, -interactsh-server string  interactsh server url for self-hosted instance (default: oast.pro,oast.live,oast.site,oast.online,oast.fun,oast.me)
   -itoken, -interactsh-token string    authentication token for self-hosted interactsh server
   -interactions-cache-size int         number of requests to keep in the interactions cache (default 5000)
   -interactions-eviction int           number of seconds to wait before evicting requests from cache (default 60)
   -interactions-poll-duration int      number of seconds to wait before each interaction poll request (default 5)
   -interactions-cooldown-period int    extra time for interaction polling before exiting (default 5)
   -ni, -no-interactsh                  disable interactsh server for OAST testing, exclude OAST based templates

FUZZING:
   -ft, -fuzzing-type string  overrides fuzzing type set in template (replace, prefix, postfix, infix)
   -fm, -fuzzing-mode string  overrides fuzzing mode set in template (multiple, single)

UNCOVER:
   -uc, -uncover                  enable uncover engine
   -uq, -uncover-query string[]   uncover search query
   -ue, -uncover-engine string[]  uncover search engine (shodan,shodan-idb,fofa,censys,quake,hunter,zoomeye,netlas,criminalip) (default shodan)
   -uf, -uncover-field string     uncover fields to return (ip,port,host) (default "ip:port")
   -ul, -uncover-limit int        uncover results to return (default 100)
   -ucd, -uncover-delay int       delay between uncover query requests in seconds (0 to disable) (default 1)

RATE-LIMIT:
   -rl, -rate-limit int               maximum number of requests to send per second (default 150)
   -rlm, -rate-limit-minute int       maximum number of requests to send per minute
   -bs, -bulk-size int                maximum number of hosts to be analyzed in parallel per template (default 25)
   -c, -concurrency int               maximum number of templates to be executed in parallel (default 25)
   -hbs, -headless-bulk-size int      maximum number of headless hosts to be analyzed in parallel per template (default 10)
   -headc, -headless-concurrency int  maximum number of headless templates to be executed in parallel (default 10)

OPTIMIZATIONS:
   -timeout int                        time to wait in seconds before timeout (default 10)
   -retries int                        number of times to retry a failed request (default 1)
   -ldp, -leave-default-ports          leave default HTTP/HTTPS ports (eg. host:80,host:443)
   -mhe, -max-host-error int           max errors for a host before skipping from scan (default 30)
   -te, -track-error string[]          adds given error to max-host-error watchlist (standard, file)
   -nmhe, -no-mhe                      disable skipping host from scan based on errors
   -project                            use a project folder to avoid sending same request multiple times
   -project-path string                set a specific project path (default "/tmp")
   -spm, -stop-at-first-match          stop processing HTTP requests after the first match (may break template/workflow logic)
   -stream                             stream mode - start elaborating without sorting the input
   -ss, -scan-strategy value           strategy to use while scanning(auto/host-spray/template-spray) (default auto)
   -irt, -input-read-timeout duration  timeout on input read (default 3m0s)
   -nh, -no-httpx                      disable httpx probing for non-url input
   -no-stdin                           disable stdin processing

HEADLESS:
   -headless                    enable templates that require headless browser support (root user on Linux will disable sandbox)
   -page-timeout int            seconds to wait for each page in headless mode (default 20)
   -sb, -show-browser           show the browser on the screen when running templates with headless mode
   -sc, -system-chrome          use local installed Chrome browser instead of nuclei installed
   -lha, -list-headless-action  list available headless actions

DEBUG:
   -debug                    show all requests and responses
   -dreq, -debug-req         show all sent requests
   -dresp, -debug-resp       show all received responses
   -p, -proxy string[]       list of http/socks5 proxy to use (comma separated or file input)
   -pi, -proxy-internal      proxy all internal requests
   -ldf, -list-dsl-function  list all supported DSL function signatures
   -tlog, -trace-log string  file to write sent requests trace log
   -elog, -error-log string  file to write sent requests error log
   -version                  show nuclei version
   -hm, -hang-monitor        enable nuclei hang monitoring
   -v, -verbose              show verbose output
   -profile-mem string       optional nuclei memory profile dump file
   -vv                       display templates loaded for scan
   -svd, -show-var-dump      show variables dump for debugging
   -ep, -enable-pprof        enable pprof debugging server
   -tv, -templates-version   shows the version of the installed nuclei-templates
   -hc, -health-check        run diagnostic check up

UPDATE:
   -up, -update                      update nuclei engine to the latest released version
   -ut, -update-templates            update nuclei-templates to latest released version
   -ud, -update-template-dir string  custom directory to install / update nuclei-templates
   -duc, -disable-update-check       disable automatic nuclei/templates update check

STATISTICS:
   -stats                    display statistics about the running scan
   -sj, -stats-json          display statistics in JSONL(ines) format
   -si, -stats-interval int  number of seconds to wait between showing a statistics update (default 5)
   -m, -metrics              expose nuclei metrics on a port
   -mp, -metrics-port int    port to expose nuclei metrics on (default 9092)

CLOUD:
   -cloud                              run scan on nuclei cloud
   -ads, -add-datasource string        add specified data source (s3,github)
   -atr, -add-target string            add target(s) to cloud
   -atm, -add-template string          add template(s) to cloud
   -lsn, -list-scan                    list previous cloud scans
   -lso, -list-output string           list scan output by scan id
   -ltr, -list-target                  list cloud target by id
   -ltm, -list-template                list cloud template by id
   -lds, -list-datasource              list cloud datasource by id
   -lrs, -list-reportsource            list reporting sources
   -dsn, -delete-scan string           delete cloud scan by id
   -dtr, -delete-target string         delete target(s) from cloud
   -dtm, -delete-template string       delete template(s) from cloud
   -dds, -delete-datasource string     delete specified data source
   -drs, -disable-reportsource string  disable specified reporting source
   -ers, -enable-reportsource string   enable specified reporting source
   -gtr, -get-target string            get target content by id
   -gtm, -get-template string          get template content by id
   -nos, -no-store                     disable scan/output storage on cloud
   -no-tables                          do not display pretty-printed tables
   -limit int                          limit the number of output to display (default 100)

运行nuclei

使用社区策划的核心模板扫描目标域。

nuclei -u https://example.com

使用社区策划的核心模板扫描目标 URL。

nuclei -list urls.txt

例子urls.txt

http://example.com
http://app.example.com
http://test.example.com
http://uat.example.com

可以在此处找到运行Nuclei 的更多详细示例。

对于安全工程师

Nuclei 提供了大量有助于安全工程师在其组织中自定义工作流程的功能。借助各种扫描功能(如 DNS、HTTP、TCP),安全工程师可以使用 Nuclei 轻松创建他们的自定义检查套件。

  • 支持的协议种类:TCP、DNS、HTTP、File等
  • 通过工作流和动态请求实现复杂的漏洞步骤。
  • 易于集成到 CI/CD 中,旨在轻松集成到回归周期中,以主动检查漏洞的修复和重新出现。

对于漏洞赏金猎人:

Nuclei 允许您使用自己的检查套件自定义您的测试方法,并轻松运行您的漏洞赏金计划。此外,Nuclei 可以轻松集成到任何连续扫描工作流程中。

  • 旨在轻松集成到其他工具工作流程中。
  • 可以在几分钟内处理数千台主机。
  • 使用我们简单的 YAML DSL 轻松自动化您的自定义测试方法。

请查看我们其他可能适合您的漏洞赏金工作流程的开源项目:github.com/projectdiscovery,我们还在Chaos 上每日更新 DNS 数据

对于渗透测试人员:

Nuclei 通过增强手动、重复的过程极大地改进了您进行安全评估的方式。咨询公司已经在使用 Nuclei 转换他们的手动评估步骤,它允许他们以自动化的方式在数千台主机上运行他们的自定义评估方法集。

渗透测试人员可以充分利用我们的公共模板和自定义功能来加快他们的评估过程,特别是回归周期,您可以在其中轻松验证修复。

  • 轻松创建合规性标准套件(例如 OWASP Top 10)清单。
  • 借助模糊测试工作流等功能,复杂的手动步骤和重复评估可以通过 Nuclei 轻松实现自动化。
  • 只需重新运行模板即可轻松重新测试漏洞修复。

[/hidecontent]

 

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 开源
“微短剧造富神话”的背后是什么
领克06em-p“黑白配”上线,在京东开启2000元抢订
线上书博元宇宙数字馆“天空书城”上线!
通信能力大提升!iQOO Z9 Turbo+支持四频北斗、5.5G移动通信
Intel酷睿Ultra 300系列曝光!1.8nm最多16核CPU

首页

分类

定制方案

消息

我的