- Project Discovery 도구 소개 및 실습하기 - Katana2024년 05월 07일 14시 02분 30초에 업로드 된 글입니다.작성자: IIIIIIIIIIIIIIIIIIIIl
Katana 소개
Katana는 웹 크롤링 도구로, 빠르고 효율적이며 간단한 출력을 제공하도록 설계되었습니다. 정보와 엔드포인트를 수집하기 위해 웹사이트를 크롤링하도록 설계되었습니다. 정의 기능 중 하나는 헤드리스 브라우징을 사용하여 애플리케이션을 크롤링하는 기능입니다. 이는 JavaScript, Angular 또는 React와 같은 기술을 사용하여 구축된 단일 페이지 애플리케이션(SPA)을 크롤링하여 이러한 유형의 애플리케이션에서 정보에 효과적으로 액세스하고 수집할 수 있음을 의미합니다.
특징 및 성능
- 빠르고 완벽하게 구성 가능한 웹 크롤링
- 표준 및 헤드리스 모드 지원
- JavaScript 구문 분석 및 크롤링 지원
- 사용자 정의 가능한 자동 양식 작성
- 사전 구성된 필드를 통한 사용자 정의 가능한 출력
- 사전 구성된 필드 및 Regex를 통한 사용자 정의 가능한 범위 제어
- STDIN, URL, LIST를 통한 입력 지원
- STDOUT, FILE 및 JSON의 지원되는 출력
Katana 빌드 하기
wget -q -O - <https://dl-ssl.google.com/linux/linux_signing_key.pub> | sudo apt-key add - sudo sh -c 'echo "deb <http://dl.google.com/linux/chrome/deb/> stable main" >> /etc/apt/sources.list.d/google.list' sudo apt update sudo apt install google-chrome-stable -y git clone <https://github.com/projectdiscovery/katana> cd katana/cmd/katana/ go build
Katana 사용해보기
Katana 기본 사용법
# tesla 사이트 크롤링 katana -u https://hackerone.com # 멀티 URL 크롤링 $ cat url_list.txt https://hackerone.com https://exchange.xrex.io katana -list url_list.txt # 해드리스 모드 katana -u <https://hackerone.com> -headless -system-chrome --no-sandbox # 자바스크립트 파일 엔드포인트 구문 분석 및 크롤링 katana -jc -u https://hackerone.com
Katana 크롤링 모드
Standard Mode
Standard Mode는 내부적으로 표준 go http 라이브러리를 사용하여 HTTP 요청/응답을 처리합니다. 이 방식은 브라우저 오버헤드가 없기 때문에 훨씬 빠릅니다. 그러나 Javascript나 DOM 렌더링 없이 HTTP 응답 본문을 있는 그대로 분석합니다. DOM 렌더링 후 엔드포인트가 누락되거나 브라우저별 이벤트 등에 따라 복잡한 웹 애플리케이션에서 발생할 수 있는 비동기 엔드포인트 호출이 누락될 수 있습니다.
Headless Mode
Headless Mode는 내부 헤드리스 브라우저 호출하여 브라우저 컨텍스트 내에서 직접 HTTP 요청/응답을 처리합니다. 이는 두 가지 이점을 제공합니다.
- HTTP 지문(TLS 및 사용자 에이전트)은 클라이언트를 합법적인 브라우저로 완전히 식별합니다.
- 표준 원시 응답을 분석하고 자바스크립트가 활성화된 브라우저 렌더링 응답을 분석하여 엔드포인트가 검색되므로 적용 범위 넓어집니다.
Field 추출
Field 추출은 구조화되지 않은 데이터에서 특정 데이터 Field를 추출하여 추가 처리 및 활용에 더 유용하게 만드는 프로세스입니다. 특정 관심 분야에 집중하여 처리해야 하는 데이터의 양을 줄이는 데 도움이 됩니다. 이는 엔드포인트나 자격 증명과 같은 주요 데이터 부분을 식별하는 것이 잠재적인 위협을 식별하는 작업에 유용할 수 있습니다.
예를 들어 XSS(Cross-Site Scripting) 취약점에 대해 자동화된 fuzzing을 수행한다고 할 때 출력에서 다양한 고유 매개변수를 추출하고 XSS 페이로드가 포함된 매개변수로 고유하게 식별된 엔드포인트를 fuzzing하여 잠재적인 반영을 확인할 수 있습니다. 아래 흐름도는 이 사용 사례를 설명합니다.
기본 Field 기능
Katana는 사용자 정의 정규 표현식을 사용할 필요 없이 직접 추출할 수 있는 아래와 같은 기본 Field 추출 기능을 지원하고 있습니다.
FIELD DESCRIPTION EXAMPLE url URL Endpoint https://admin.projectdiscovery.io/admin/login?user=admin&password=admin qurl URL including query param https://admin.projectdiscovery.io/admin/login.php?user=admin&password=admin qpath Path including query param /login?user=admin&password=admin path URL Path https://admin.projectdiscovery.io/admin/login fqdn Fully Qualified Domain name admin.projectdiscovery.io rdn Root Domain name projectdiscovery.io rurl Root URL https://admin.projectdiscovery.io ufile URL with File https://admin.projectdiscovery.io/login.js file Filename in URL login.php key Parameter keys in URL user,password value Parameter values in URL admin,admin kv Keys=Values in URL user=admin&password=admin dir URL Directory name /admin/ udir URL with Directory https://admin.projectdiscovery.io/admin/ 다음은 쿼리 매개변수가 포함된 모든 URL만 표시하기 위해 Field 옵션을 사용하는 예입니다.
katana -u <https://hackerone.com> -f qurl -silent <https://www.hackerone.com/sites/default/files/google_tag/google_tag/google_tag.script.js?s6yjoz> <https://hackerone.com/security?type=team> <https://www.hackerone.com/contact?utm_source=internal&utm_medium=referral&utm_content=FedLink-1> <https://www.hackerone.com/contact?utm_source=internal&utm_medium=referral&utm_content=FedLink-2> <https://www.hackerone.com/from-the-ceo?page=3> <https://www.hackerone.com/from-the-ceo?page=2> <https://www.hackerone.com/from-the-ceo?page=1> <https://www.hackerone.com/from-the-ceo?page=0> <https://www.hackerone.com/company-news?page=10> <https://www.hackerone.com/company-news?page=8> <https://www.hackerone.com/company-news?page=7> <https://www.hackerone.com/company-news?page=6> <https://www.hackerone.com/company-news?page=5>
사용자 정의 Field 기능
Katana는 정규 표현식을 사용하여 사용자 정의 필드가 페이지 응답에서 특정 정보를 추출하고 저장할 수 있습니다. 이러한 사용자 정의 Field는 YAML 구성 파일($HOME/.config/katana/field-config.yaml)을 사용하거나 -flc옵션을 사용하여
정의합니다. 다음은 사용자 정의 필드의 예입니다.
- name: email type: regex regex: - '([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9_-]+)' - '([a-zA-Z0-9+._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9_-]+)' - name: phone type: regex regex: - '\\d{3}-\\d{8}|\\d{4}-\\d{7}'
사용자 정의 필드를 정의할 때 다음 속성이 지원됩니다.
- name (필수)
name 속성 의 값은 cli 옵션 값으로 사용됩니다.
- type (필수)
사용자 정의 속성 유형, 현재 지원되는 옵션
- part (선택사항)
정보를 추출할 응답 부분입니다. 기본값은 response헤더와 본문을 모두 포함하는 입니다. 다른 가능한 값은 header, body입니다 .
- group (선택사항)
이 속성을 사용하여 정규식에서 특정 일치 그룹을 선택할 수 있습니다.
사용자 정규표현식 사용 예 :
cat $HOME/.config/katana/field-config.yaml - name: email type: regex part: response regex: - ([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9_-]+) katana -u <https://hackerone.com> -f email -silent privacy@hackerone.com privacy@hackerone.com privacy@hackerone.com privacy@hackerone.com h1-codeofconduct@hackerone.com h1-codeofconduct@hackerone.com
'오픈소스 컨트리뷰션 양성 과정 > Project Discovery' 카테고리의 다른 글
Nuclei Templates 연습문제 - level 1 (0) 2024.05.08 Nuclei Templates 구조 이해하기 (0) 2024.05.07 Project Discovery 도구 소개 및 실습하기 - Nuclei (0) 2024.05.06 Project Discovery 도구 소개 및 실습하기 - httpx (0) 2024.05.06 Project Discovery 도구 소개 및 실습하기 - Naabu (0) 2024.05.05 다음글이 없습니다.이전글이 없습니다.댓글