- Project Discovery 도구 소개 및 실습하기 - Nuclei2024년 05월 06일 01시 37분 37초에 업로드 된 글입니다.작성자: IIIIIIIIIIIIIIIIIIIIl
주의사항
Nuclei 실행 시 공격 코드가 전송되어 허가 받지 않은 곳에 실행 금지함.
그리고 도구에 대한 이해 후 사용하길 권장함.
Nuclei 소개
Nuclei는 애플리케이션, 운영체제, 인프라, 클라우드 플랫폼 및 네트워크를 조사하여 취약점 식별 및 완화를 지원하도록 설계된 빠르게 악용 가능한 취약점 스캐너입니다.
핵심적으로 Nuclei는 특정 보안 결함을 탐지하고 순위를 매기고 해결하는 방법을 설명하는 간단한 YAML 파일로 표현되는 템플릿을 활용합니다.
각 템플릿은 가능한 공격 경로를 설명하고 취약성, 심각도, 우선순위 등급 및 때때로 관련된 공격을 자세히 설명합니다. 이 템플릿 중심 방법론은 Nuclei가 잠재적인 위협을 식별할 뿐만 아니라 실질적인 실제 영향을 통해 악용 가능한 취약점을 정확히 찾아내도록 보장합니다.
Nuclei 주요 사용처
사용 사례 설명 웹 애플리케이션 보안 커뮤니티 기반 템플릿을 사용하여 일반적인 웹 취약점을 식별합니다. 인프라 보안 보안 문제에 대해 서버 구성, 열린 포트 및 안전하지 않은 서비스를 감사합니다. API 보안 테스트alpha 알려진 취약점과 잘못된 구성에 대해 API를 테스트합니다. (CI/CD) 보안 CI/CD 파이프라인에 통합하여 프로덕션 환경에서 취약점이 다시 나타나는 것을 최소화합니다. 제3자 공급업체 평가 디지털 자산을 스캔하여 타사 공급업체의 보안을 평가합니다. 클라우드 보안alpha 클라우드 환경에서 잘못된 구성과 취약점을 검사합니다. 모바일 애플리케이션 보안 API 테스트 및 구성 확인을 포함하여 모바일 애플리케이션에서 보안 문제를 검사합니다. 네트워크 장치 보안alpha 라우터, 스위치, 방화벽과 같은 네트워크 장치의 취약점을 식별합니다. 웹 서버 평가 웹 서버의 일반적인 취약점과 잘못된 구성을 식별합니다. 콘텐츠 관리 시스템(CMS) 평가 WordPress, Joomla 또는 Drupal과 같은 CMS 플랫폼과 관련된 취약점을 식별합니다. 데이터베이스 보안 평가 데이터베이스에서 알려진 취약점, 기본 구성 및 액세스 제어 문제를 검색합니다. 주로 누가 Nuclei를 사용하나요?
- 보안 엔지니어/분석가
- 보안 평가를 수행하고, 취약점을 사전에 식별하고, 최신 공격 벡터를 분석하는데 활용합니다.
- 레드 팀
- 실제 공격 시나리오를 시뮬레이션하고 약점을 식별하며 전반적인 보안 강화를 위한 실행 가능한 권장 사항을 제공하기 위해 공격적인 보안 운영의 일부로 Nuclei를 활용합니다.
- DevOps 팀
- Nuclei를 CI/CD 파이프라인에 통합하여 지속적인 보안과 맞춤형 취약점 점검을 진행하고 보완합니다.
- 버그 바운티 헌터(Bug Bounty Hunters)
- Nuclei를 활용하여 HackerOne, Bugcrowd, Intigriti 등과 같은 플랫폼에 나열된 프로그램 전반에서 취약점을 찾습니다.
- 보안 컨설턴트/침투 테스터
- Nuclei를 활용하여 평가 방법론을 클라이언트 시스템의 템플릿으로 자동화합니다.
Nuclei 특징
특징 설명 광범위한 템플릿 라이브러리 Nuclei는 다양한 취약점과 공격 벡터에 대한 표적 검사를 위한 광범위한 커뮤니티 기반 템플릿 컬렉션을 제공합니다. 다양한 타겟 사양 URL, IP 범위, ASN 범위, 파일 입력 등 다양한 대상 사양 옵션을 지원하므로 검사 범위를 유연하게 정의할 수 있습니다. 대량 스캐닝 한 번에 여러 대상을 지정하여 대량 검사를 수행하면 많은 수의 자산이나 웹사이트를 효율적으로 검사할 수 있습니다. 유연한 맞춤화 특정 요구 사항에 맞게 스캐닝 템플릿을 사용자 정의하여 맞춤형 스캐닝을 허용하고 관련 보안 검사에 집중할 수 있습니다. 병렬 스캐닝 특히 대규모 대상의 경우 병렬 스캐닝을 지원하여 스캐닝 시간을 줄이고 효율성을 향상시킵니다. 종합적인 보고cloud 취약성 세부 정보, 심각도 수준, 영향을 받은 엔드포인트, 제안된 수정 단계를 포함하여 실행 가능한 통찰력이 포함된 자세한 보고서를 생성합니다. CI/CD 파이프라인과 통합 개발 및 배포 프로세스의 일부로 자동화된 보안 테스트를 위해 Nuclei를 CI/CD 파이프라인에 원활하게 통합합니다. CI/CD 통합cloud ProjectDiscovery 팀에서 적극적으로 유지 관리하고 개발하여 최신 검색 프레임워크를 제공하기 위한 새로운 기능, 버그 수정 및 개선 사항을 도입합니다. 티켓팅 통합cloud Jira, Splunk 및 기타 여러 기능과 양방향 티켓팅을 통합하여 취약점을 쉽게 해결하고 재테스트할 수 있습니다. 사용자 정의 가능한 출력 형식 JSON, YAML 등에 대한 옵션을 포함하여 필요에 맞게 Nuclei 스캔 결과의 출력 형식을 구성하십시오. 동적 변수 템플릿의 동적 변수를 활용하여 매개변수화된 스캐닝을 수행하고 다양하고 유연한 스캐닝 구성을 가능하게 합니다. 포함 및 제외 필터 포함 및 제외 필터를 적용하여 대상을 지정하고 검색 범위를 줄이고 특정 관심 영역에 집중합니다. 인증 지원 Nuclei는 HTTP 기본 인증, JWT 토큰 인증 등을 포함한 다양한 인증 메커니즘을 지원합니다. 템플릿에 사용자 정의 코드 삽입 Nuclei 템플릿 내에서 사용자 정의 코드를 실행하여 사용자 정의 논리를 통합하고 고급 스캐닝 작업 등을 수행합니다. Nuclei 빌드 하기
git clone <https://github.com/projectdiscovery/nuclei> cd nuclei/cmd/nuclei/ go build
Nuclei 사용해보기
Nuclei 기본 사용법
# 템플릿 설정 (-t/templates) # 타겟 설정 (-u) # URL 리스트 파일 설정 (-list) # 모든 템플릿 실행하기 nuclei -u https://hackerone.com # 사용자 정의 템플릿 디렉터리 또는 여러 템플릿 디렉터리를 설정하여 실행하기 nuclei -u <https://hackerone.com> -t cves/ -t exposures/ # 타겟 리스트 점검하기 nuclei -list http_urls.txt
Nuclei 템플릿 필터
Nuclei 엔진은 템플릿 실행을 사용자 정의하기 위해 세 가지 기본 필터를 지원합니다.
- 태그( tags)
- 템플릿에서 사용할 수 있는 태그 필드를 기준으로 필터링합니다.
- 심각성 ( severity)
- 템플릿에서 사용할 수 있는 심각도 필드를 기준으로 필터링합니다.
- 작성자 ( author)
- 템플릿에서 사용할 수 있는 작성자 필드를 기준으로 필터링합니다.
필터는 기본적으로 템플릿이 설치된 경로에 적용되며, 템플릿 경로를 수동으로 입력하여 사용자 정의할 수 있습니다. 예를 들어 아래 명령은 cve태그가 있는 모든 템플릿을 실행합니다.
nuclei -u https://example.com -tags cve
아래 명령은 exposures 디렉터리에 있는 템플릿 중에서 config태그가 있는 템플릿을 설정하여 실행합니다.
nuclei -u <https://example.com> -tags config -t exposures/
여러 필터는 AND 조건을 사용하여 실행할 수 있습니다. 아래 예에서는 cve태그가 있는 모든 템플릿을 설정하고 심각도가 high, critical이고 템플릿 개발자가 gy741인 템플릿만을 실행합니다.
nuclei -u <https://example.com> -tags cve -severity critical,high -author gy741
고급 필터
- tc
- 다음과 같은 복잡한 표현식을 허용하는 템플릿 조건 플래그( )를 사용하여 여러 필터를 결합할 수있습니다 .
nuclei -tc "contains(id,'xss') || contains(tags,'xss')" nuclei -tc "contains(tags,'cve') && contains(tags,'ssrf')" nuclei -tc "contains(name, 'Local File Inclusion')"
- 지원필터
- id string
- name string
- description string
- tags slice of strings
- authors slice of strings
- severity string
- protocol string
- http_method slice of strings
- body string (containing all request bodies if any)
- matcher_type slice of string
- extractor_type slice of string
- description string
속도 제한
Nuclei에는 병렬로 실행할 템플릿 수, 각 템플릿에 대해 병렬로 스캔 할 호스트 수, Nuclei를 사용하여 생성/제한하려는 초당 요청을 포함하여 여러 요소에 대한 여러 속도 제한 제어 기능이 있습니다. 다음은 설명과 함께 각 플래그의 예입니다.
Flag Description
rate-limit 초당 전송할 총 요청 수 bulk-size 각 템플릿에 대해 병렬로 처리할 호스트 수 c 병렬로 처리할 템플릿 수 헤더 지정
BugBounty 프로그램 또는 방화벽 우회를 진행하기 위해서는 생성하는 HTTP 트래픽 헤더를 설정해야 합니다. 이는 구성 파일 $HOME/.config/nuclei/config.yaml 또는 CLI에서 -H / header 옵션을 설정하여 사용자 정의 헤더를 설정할 수 있습니다.
# $HOME/.config/nuclei/config.yaml 파일 header: - 'X-BugBounty-Hacker: h1/karas' - 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64)'
nuclei -header 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64)' -list urls.txt -tags cves
템플릿 제외하기
Nuclei는 실행에서 템플릿을 제외/차단하는 다양한 방법을 지원합니다. 기본적으로 nuclei는 예상치 못한 fuzz 기반 스캔과 대량 스캔을 위해 실행되지 않아야 하는 일부를 피하기 위해 아래 나열된 태그/템플릿을 실행에서 제외하고 있습니다.
Nuclei 엔진은 스캔에서 템플릿을 수동으로 제외하는 두 가지 방법을 지원합니다.
- 템플릿 제외( exclude-templates/exclude)
- 제외 템플릿 플래그는 단일 또는 여러 템플릿과 디렉터리를 제외하는 데 사용되며, 여러 -exclude-templates 플래그를 사용하여 여러 값을 제공할 수 있습니다.
- 태그 제외( exclude-tags/etags)
- 템플릿 제외( exclude-templates/exclude)
- 제외 템플릿 플래그는 단일 또는 여러 템플릿과 디렉터리를 제외하는 데 사용되며, 여러 -exclude-templates 플래그를 사용하여 여러 값을 제공할 수 있습니다.
- 태그 제외( exclude-tags/etags)
- 제외 태그 플래그는 정의된 태그를 기반으로 템플릿을 제외하는 데 사용되며, 단일 또는 다중을 사용하여 템플릿을 제외할 수 있습니다.
- 사용 예시
- 단일 템플릿 제외
- nuclei -list urls.txt -t cves/ -exclude-templates cves/2020/CVE-2020-XXXX.yaml
- 여러 템플릿 제외
- nuclei -list urls.txt -exclude-templates exposed-panels/ -exclude-templates technologies/
- 단일 태그가 포함된 템플릿을 제외
- nuclei -l urls.txt -t cves/ -etags xss
- 태그가 여러 개인 템플릿을 제외
- nuclei -l urls.txt -t cves/ -etags sqli,rce
- 제외 태그 플래그는 정의된 태그를 기반으로 템플릿을 제외하는 데 사용되며, 단일 또는 다중을 사용하여 템플릿을 제외할 수 있습니다.
템플릿 리스트 확인하기
-tl 옵션을 설정하고 템플릿 필터들을 설정하여 템플릿을 확인할 수 있습니다. 템플릿 필터를 통해 점검 대상 환경을 고려하여 스캔에 어떤 템플릿이 사용될지 검사하는 데 활용할 수 있습니다.
nuclei -tags cve -severity critical,high -author gy741 -tl
Dashboard 활용하기
Nuclei는 ProjectDiscovery Cloud Platform과 통합되어 Nuclei 결과의 시각화를 단순화하고 신속한 보고서를 생성할 수 있습니다.
ProjectDiscovery Cloud Platform 결과 Dashboard를 설정하려면 아래 단계를 따르세요
- https://cloud.projectdiscovery.io 접속하여 API key를 선택하여 키를 발급 받습니다.
- nuclei -auth 명령어를 실행하고 위에서 발급받은 API 키를 입력합니다.
- 스캔을 수행하고 결과를 클라우드에 직접 업로드하려면 -cloud-upload 옵션을 설정합니다.
- Ex) nuclei -target <http://honey.scanme.sh> -cloud-upload
__ _ ____ __ _______/ /__ (_) / __ \/ / / / ___/ / _ \/ / / / / / /_/ / /__/ / __/ / /_/ /_/\__,_/\___/_/\___/_/ v3.1.0 projectdiscovery.io [INF] Current nuclei version: v3.1.0 (latest) [INF] Current nuclei-templates version: v9.6.9 (latest) [INF] To view results on cloud dashboard, visit https://cloud.projectdiscovery.io/scans upon scan completion. [INF] New templates added in latest release: 73 [INF] Templates loaded for current scan: 71 [INF] Executing 71 signed templates from projectdiscovery/nuclei-templates [INF] Targets loaded for current scan: 1 [INF] Using Interactsh Server: oast.live [CVE-2017-9506] [http] [medium] http://honey.scanme.sh/plugins/servlet/oauth/users/icon-uri?consumerUri=http://clk37fcdiuf176s376hgjzo3xsoq5bdad.oast.live [CVE-2019-9978] [http] [medium] http://honey.scanme.sh/wp-admin/admin-post.php?swp_debug=load_options&swp_url=http://clk37fcdiuf176s376hgyk9ppdqe9a83z.oast.live [CVE-2019-8451] [http] [medium] http://honey.scanme.sh/plugins/servlet/gadgets/makeRequest [CVE-2015-8813] [http] [high] http://honey.scanme.sh/Umbraco/feedproxy.aspx?url=http://clk37fcdiuf176s376hgj885caqoc713k.oast.live [CVE-2020-24148] [http] [critical] http://honey.scanme.sh/wp-admin/admin-ajax.php?action=moove_read_xml [CVE-2020-5775] [http] [medium] http://honey.scanme.sh/external_content/retrieve/oembed?endpoint=http://clk37fcdiuf176s376hgyyxa48ih7jep5.oast.live&url=foo [CVE-2020-7796] [http] [critical] http://honey.scanme.sh/zimlet/com_zimbra_webex/httpPost.jsp?companyId=http://clk37fcdiuf176s376hgi9b8sd33se5sr.oast.live%23 [CVE-2017-18638] [http] [high] http://honey.scanme.sh/composer/send_email?to=hVsp@XOvw&url=http://clk37fcdiuf176s376hgyf8y81i9oju3e.oast.live [CVE-2018-15517] [http] [high] http://honey.scanme.sh/index.php/System/MailConnect/host/clk37fcdiuf176s376hgi5j3fsht3dchj.oast.live/port/80/secure/ [CVE-2021-45967] [http] [critical] http://honey.scanme.sh/services/pluginscript/..;/..;/..;/getFavicon?host=clk37fcdiuf176s376hgh1y3xjzb3yjpy.oast.live [CVE-2021-26855] [http] [critical] http://honey.scanme.sh/owa/auth/x.js [INF] Scan results uploaded! View them at https://cloud.projectdiscovery.io/scans/clk37krsr14s73afc3ag
스캔 후 명령줄 인터페이스에 URL이 표시됩니다. 클라우드 대시보드에서 결과를 확인하려면 URL 접속하면 됩니다.
(고급 기능) v3 확장성
Nuclei는 최근 v3 버전을 출시하면서 많은 기능적 확장을 이루어냈습니다.
- 주요 변화
자세한 내용은 아래 URL을 확인하세요.
'오픈소스 컨트리뷰션 양성 과정 > Project Discovery' 카테고리의 다른 글
Nuclei Templates 구조 이해하기 (0) 2024.05.07 Project Discovery 도구 소개 및 실습하기 - Katana (0) 2024.05.07 Project Discovery 도구 소개 및 실습하기 - httpx (0) 2024.05.06 Project Discovery 도구 소개 및 실습하기 - Naabu (0) 2024.05.05 Project Discovery 소개 (0) 2024.05.05 다음글이 없습니다.이전글이 없습니다.댓글