Nuclei - Công cụ tìm kiếm lỗ hổng App được cộng đồng xây dựng

Sugi_b3o

Moderator
Thành viên BQT
30/08/2016
319
448 bài viết
Nuclei - Công cụ tìm kiếm lỗ hổng App được cộng đồng xây dựng
Nuclei được sử dụng để rà quét các mục tiêu dựa trên một số mẫu temple được xây dựng sẵn cung cấp khả năng quét nhanh trên một số lượng lớn các máy chủ, cung cấp khả năng quét nhiều giao thức khác nhau bao gồm TCP, DNS, HTTP, File, v.v. Với tính năng tạo temple mạnh mẽ và linh hoạt, tất cả các loại kiểm tra bảo mật có thể được mô hình hóa với Nuclei.

Nuclei có một kho lưu trữ chuyên dụng chứa nhiều temple lỗ hổng bảo mật khác nhau do hơn 200 nhà nghiên cứu và kỹ sư bảo mật đóng góp.

a1.png

Cách hoạt động Nuclei
1 Tạo file yaml: bao gồm phương thức và cách thức khai thác lỗi, và điều kiện để tìm được kết quả
2 Thực hiện scan trên target

a2.jpg

Cách cài đặt
1 Cài trên go 1.17
Mã:
go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest
2 Chạy trên binary download về

Đối tượng sử dụng
1. Bug Bounty Hunter

  • Nuclei cho phép bạn tùy chỉnh phương pháp kiểm tra của mình với bộ kiểm tra của riêng bạn và dễ dàng chạy trên các chương trình tiền thưởng lỗi của bạn. Hơn nữa, Nuclei có thể dễ dàng tích hợp vào bất kỳ quy trình CI/CD
  • Được thiết kế để dễ dàng tích hợp vào quy trình làm việc của công cụ khác.
  • Có thể xử lý hàng nghìn máy chủ trong vài phút.
  • Dễ dàng tự động hóa phương pháp kiểm tra tùy chỉnh của bạn với YAML DSL đơn giản của chúng tôi.

2. Pentester
  • Nuclei cải thiện đáng kể cách bạn tiếp cận đánh giá bảo mật bằng cách tăng cường các quy trình thủ công, lặp đi lặp lại.
  • Pen-testers có được toàn bộ sức mạnh của các Temple mẫu công khai và khả năng tùy chỉnh của Nuclei để tăng tốc quá trình đánh giá của họ và đặc biệt với chu trình hồi quy, nơi bạn có thể dễ dàng xác minh bản sửa lỗi.
  • Dễ dàng tạo danh sách kiểm tra tuân thủ, bộ tiêu chuẩn của bạn (ví dụ: OWASP Top 10).
  • Với các khả năng như fuzz và quy trình làm việc, các bước thủ công phức tạp và đánh giá lặp đi lặp lại có thể được tự động hóa dễ dàng với Nuclei.
  • Dễ dàng kiểm tra lại lỗ hổng bảo mật-sửa chữa bằng cách chạy lại mẫu.
3. DevSecOps

Nuclei được xây dựng với mục đích đơn giản, với cộng đồng được hỗ trợ bởi hàng trăm nhà nghiên cứu bảo mật, nó cho phép bạn luôn cập nhật các mối đe dọa bảo mật mới nhất bằng cách sử dụng tính năng quét Nuclei liên tục trên các máy chủ. Nó được thiết kế để dễ dàng tích hợp vào chu trình kiểm tra CI/CD, để xác minh các bản sửa lỗi và loại bỏ các lỗ hổng bảo mật xảy ra trong tương lai.

CI / CD: Các kỹ sư đã sử dụng Nuclei trong workflow CI / CD của họ, nó cho phép họ liên tục theo dõi môi trường Product và Stagging với các mẫu tùy chỉnh.

Chu kỳ xây dựng sản phẩm: Với Nuclei, bạn có thể tạo mẫu tùy chỉnh của mình trên mọi lỗ hổng được xác định mới và đưa vào công cụ Nuclei để loại bỏ trong vòng đời sản phẩm.

Nuclei đã có một số chương trình tiền thưởng lỗi khuyến khích tin tặc viết các temple mới, sau mỗi lần gửi, giúp họ loại bỏ lỗ hổng bảo mật trên tất cả các tài sản của họ, cũng như loại bỏ rủi ro trong tương lai khi xuất hiện lại trên các sản phẩm.

a3.jpg

Hướng dẫn sử dụng
Mã:
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               Resume scan using resume.cfg (clustering will be disabled)

TEMPLATES:
   -t, -templates string[]      template or template directory paths to include in the scan
   -tu, -template-url string[]  URL containing list of templates to run
   -nt, -new-templates          run only new templates added in latest nuclei-templates release
   -w, -workflows string[]      workflow or workflow directory paths to include in the scan
   -wu, -workflow-url string[]  URL containing list of workflows to run
   -validate                    validate the passed templates to nuclei
   -tl                          list all available templates

FILTERING:
   -tags string[]                    execute a subset of templates that contain the provided tags
   -itags, -include-tags string[]    tags from the default deny list that permit executing more intrusive templates
   -etags, -exclude-tags string[]    exclude templates with the provided tags
   -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 paths to exclude
   -s, -severity value[]             Templates to run based on severity. Possible values: info, low, medium, high, critical
   -es, -exclude-severity value[]    Templates to exclude based on severity. Possible values: info, low, medium, high, critical
   -pt, -type value[]                protocol types to be executed. Possible values: dns, file, http, headless, network, workflow, ssl, websocket, whois
   -ept, -exclude-type value[]       protocol types to not be executed. Possible values: dns, file, http, headless, network, workflow, ssl, websocket, whois
   -a, -author string[]              execute templates that are (co-)created by the specified authors
   -id, -template-id string[]        List of template IDs to run (comma-separated, file)
   -eid, -exclude-id string[]        List of template IDs to exclude (comma-separated, file)

OUTPUT:
   -o, -output string            output file to write found issues/vulnerabilities
   -silent                       display findings only
   -nc, -no-color                disable output content coloring (ANSI escape codes)
   -json                         write output in JSONL(ines) format
   -irr, -include-rr             include request/response pairs in the JSONL output (for findings only)
   -nm, -no-meta                 don't display match metadata
   -nts, -no-timestamp           don't display timestamp metadata in CLI output
   -rdb, -report-db string       local nuclei reporting database (always use this to persist report data)
   -ms, -matcher-status          show optional 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

CONFIGURATIONS:
   -config string              path to the nuclei configuration file
   -rc, -report-config string  nuclei reporting module configuration file
   -H, -header string[]        custom headers in header:value format
   -V, -var value              custom vars in var=value format
   -r, -resolvers string       file containing resolver list for nuclei
   -sr, -system-resolvers      use system DNS resolving as error fallback
   -passive                    enable passive HTTP response processing mode
   -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

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

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)
   -hc, -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 5)
   -retries int               number of times to retry a failed request (default 1)
   -mhe, -max-host-error int  max errors for a host before skipping from scan (default 30)
   -project                   use a project folder to avoid sending same request multiple times
   -project-path string       set a specific project path
   -spm, -stop-at-first-path  stop processing HTTP requests after the first match (may break template/workflow logic)
   -stream                    Stream mode - start elaborating without sorting the input

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

DEBUG:
   -debug                    show all requests and responses
   -debug-req                show all sent requests
   -debug-resp               show all received responses
   -p, -proxy string[]       List of HTTP(s)/SOCKS5 proxy to use (comma separated or file input)
   -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
   -v, -verbose              show verbose output
   -vv                       display templates loaded for scan
   -tv, -templates-version   shows the version of the installed nuclei-templates

UPDATE:
   -update                        update nuclei engine to the latest released version
   -ut, -update-templates         update nuclei-templates to latest released version
   -ud, -update-directory string  overwrite the default directory to install nuclei-templates
   -duc, -disable-update-check    disable automatic nuclei/templates update check

STATISTICS:
   -stats                    display statistics about the running scan
   -sj, -stats-json          write statistics data to an output file 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)

Thử scan 1 loạt target trong url.txt với CVE-2021-44228 về lỗi log4j và cái kết :D

a4.jpg

Hoặc thử 1 case khác với Gafana lỗi định mệnh CVE-2021-43798

a5.jpg

Chúc các bạn thành công, cùng tìm tòi và khám phá nhé :D

Happy Hacking!

Tham khảo: Nuclei - Github
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  • Thích
Reactions: trung76cahg
Thẻ
app security ci/cd nuclei pentest
Bên trên