Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
skipfish — lcamtuf가 Google을 위해 만든 웹 애플리케이션 보안 스캐너 - 비공식 미러 | Kitploit
도구/GitHubGitHub/spinkham/skipfish
ReconnaissanceVulnerability ScannersWeb Vulnerability ScannersDynamic Analysis (Sandboxing)Web Application ExploitationInformation GatheringWeb SecurityFuzzingPenetration TestingCrawler
GitHubspinkham/skipfish
8721663년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

skipfish

lcamtuf가 Google을 위해 만든 웹 애플리케이션 보안 스캐너 - 비공식 미러

저장소 보기웹사이트

=========================================== skipfish - 웹 애플리케이션 보안 스캐너

http://code.google.com/p/skipfish/

  • 작성 및 유지 관리:

    Michal Zalewski [email protected] Niels Heinen [email protected] Sebastian Roschke [email protected]

  • 저작권 2009 - 2012 Google Inc, 모든 권리 보유.

  • Apache License, 버전 2.0의 조건에 따라 배포됨.


  1. skipfish란 무엇인가?

Skipfish는 능동적인 웹 애플리케이션 보안 정찰 도구입니다. 재귀적 크롤링과 사전 기반 프로브를 수행하여 대상 사이트의 대화형 사이트맵을 준비합니다. 그 결과 맵은 여러 능동적(되도록 비파괴적) 보안 점검의 출력으로 주석이 추가됩니다. 도구가 생성한 최종 보고서는 전문적인 웹 애플리케이션 보안 평가의 기초로 사용됩니다.


  1. 이 특정 도구에 왜 신경을 써야 할까?

유사한 기능을 가진 여러 상용 및 오픈 소스 도구를 쉽게 사용할 수 있습니다(예: Nikto, Nessus). 자신에게 가장 적합한 도구를 사용하세요. 그래도 skipfish는 웹 보안 스캐너와 관련된 일반적인 문제 중 일부를 해결하려고 합니다. 구체적인 장점은 다음과 같습니다.

  • 높은 성능: 반응이 빠른 인터넷 대상에 대해 초당 500+ 요청, LAN/MAN 네트워크에서 초당 2000+ 요청, 로컬 인스턴스에 대해 7000+ 요청이 관찰되었으며, CPU, 네트워크 및 메모리 사용량이 매우 적습니다. 이는 다음과 같은 점에 기인합니다.

    • 단일 스레드, 완전 비동기 네트워크 I/O 및 데이터 처리 모델을 멀티플렉싱하여 일부 멀티스레드 클라이언트에 존재하는 메모리 관리, 스케줄링 및 IPC 비효율성을 제거합니다.

    • 고급 HTTP/1.1 기능(범위 요청, 콘텐츠 압축, keep-alive 연결 등)과 강제 응답 크기 제한을 사용하여 네트워크 수준 오버헤드를 제어합니다.

    • 스마트 응답 캐싱과 고급 서버 동작 휴리스틱을 사용하여 불필요한 트래픽을 최소화합니다.

    • 성능 지향적인 순수 C 구현으로 사용자 정의 HTTP 스택을 포함합니다.

  • 사용 편의성: skipfish는 적응력이 뛰어나고 신뢰할 수 있습니다. 스캐너의 특징:

    • 모호한 경로 및 쿼리 기반 매개변수 처리 방식을 휴리스틱하게 인식합니다.

    • 특정 경로가 완전히 다른 의미 체계를 따르거나 다른 필터링 규칙의 적용을 받는 다중 프레임워크 사이트를 우아하게 처리합니다.

    • 사이트 콘텐츠 분석을 기반으로 자동 단어 목록을 구축합니다.

    • 확률적 스캔 기능을 통해 임의로 복잡한 사이트에 대해 주기적이고 시간 제한적인 평가를 할 수 있습니다.

    • 잘 설계된 보안 점검: 도구는 정확하고 의미 있는 결과를 제공합니다:

      • 수작업으로 제작된 사전은 우수한 커버리지를 제공하고 합리적인 시간 내에 철저한 $keyword.$extension 테스트를 허용합니다.

      • 취약점 탐지에는 서명 점검보다 3단계 차등 프로브가 선호됩니다.

      • Ratproxy 스타일 로직을 사용하여 미묘한 보안 문제를 발견합니다: 사이트 간 요청 위조, 사이트 간 스크립트 포함, 혼합 콘텐츠, MIME 및 문자 집합 불일치, 잘못된 캐싱 지시문 등.

      • 번들된 보안 점검은 까다로운 시나리오를 처리하도록 설계되었습니다: 저장된 XSS(경로, 매개변수, 헤더), 블라인드 SQL 또는 XML 인젝션, 블라인드 셸 인젝션.

      • Snort 스타일 콘텐츠 서명으로 서버 오류, 정보 유출 또는 잠재적으로 위험한 웹 애플리케이션을 강조합니다.

      • 보고서 후처리는 반복 패턴을 식별하여 남은 오탐지 또는 서버 속임수로 인한 잡음을 크게 줄입니다.

그러나 skipfish는 만능 도구가 아니며 특정 목적에 부적합할 수 있습니다. 예를 들어, WASC 웹 애플리케이션 보안 스캐너 평가 기준에 명시된 대부분의 요구 사항을 충족하지 않습니다(일부는 의도적으로, 일부는 필요에 따라). 또한 이 유형의 다른 대부분의 프로젝트와 달리 배너 유형 점검을 위한 알려진 취약점의 광범위한 데이터베이스가 함께 제공되지 않습니다.


  1. 아주 흥미롭군! 구체적으로 어떤 테스트가 구현되어 있나?

도구가 제공하는 보안 점검의 대략적인 목록은 아래에 설명되어 있습니다.

  • 높은 위험 결함(잠재적으로 시스템 손상으로 이어짐):

    • 서버 측 쿼리 인젝션(블라인드 벡터, 숫자 매개변수 포함).
    • GET 또는 POST 매개변수에서 명시적인 SQL 유사 구문.
    • 서버 측 셸 명령 인젝션(블라인드 벡터 포함).
    • 서버 측 XML / XPath 인젝션(블라인드 벡터 포함).
    • 포맷 문자열 취약점.
    • 정수 오버플로우 취약점.
    • HTTP PUT을 허용하는 위치.
  • 중간 위험 결함(잠재적으로 데이터 손상으로 이어짐):

    • 문서 본문에 저장 및 반영된 XSS 벡터(최소 JS XSS 지원).
    • HTTP 리디렉션을 통한 저장 및 반영된 XSS 벡터.
    • HTTP 헤더 분할을 통한 저장 및 반영된 XSS 벡터.
    • 디렉터리 트래버설 / LFI / RFI(제한된 벡터 포함).
    • 다양한 파일 POI(서버 측 소스, 구성 등).
    • 공격자가 제공한 스크립트 및 CSS 포함 벡터(저장 및 반영).
    • 외부 신뢰할 수 없는 스크립트 및 CSS 포함 벡터.
    • 스크립트 및 CSS 리소스의 혼합 콘텐츠 문제(선택 사항).
    • 비 SSL 페이지에서 제출하거나 비 SSL 페이지로 제출하는 암호 양식(선택 사항).
    • 렌더링 가능 항목에 대한 MIME 유형이 잘못되었거나 누락됨.
    • 렌더링 가능 항목에 대한 일반 MIME 유형.
    • 렌더링 가능 항목에 대한 문자 집합이 잘못되었거나 누락됨.
    • 렌더링 가능 항목에 대한 충돌하는 MIME/문자 집합 정보.
    • 쿠키 설정 응답에 대한 잘못된 캐싱 지시문.
  • 낮은 위험 문제(제한된 영향 또는 낮은 특이성):

    • 디렉터리 목록 우회 벡터.
    • 공격자가 제공한 URL로의 리디렉션(저장 및 반영).
    • 공격자가 제공한 포함된 콘텐츠(저장 및 반영).
    • 외부 신뢰할 수 없는 포함된 콘텐츠.
    • 스크립트 불가능 하위 리소스의 혼합 콘텐츠(선택 사항).
    • HTML 양식의 HTTPS -> HTTP 제출(선택 사항).
    • URL의 HTTP 자격 증명.
    • 만료되었거나 아직 유효하지 않은 SSL 인증서.
    • XSRF 보호가 없는 HTML 양식.
    • 자체 서명된 SSL 인증서.
    • SSL 인증서 호스트 이름 불일치.
    • 덜 민감한 콘텐츠에 대한 잘못된 캐싱 지시문.
  • 내부 경고:

    • 리소스 가져오기 실패 시도.
    • 크롤링 제한 초과.
    • 404 동작 확인 실패.
    • IPS 필터링 감지됨.
    • 예기치 않은 응답 변형.
    • 잘못 분류된 것으로 보이는 크롤링 노드.
  • 비특이 정보 항목:

    • 일반 SSL 인증서 정보.
    • 크게 변경되는 HTTP 쿠키.
    • 변경되는 Server, Via 또는 X-... 헤더.
    • 새로운 404 서명.
    • 액세스할 수 없는 리소스.
    • HTTP 인증이 필요한 리소스.
    • 끊어진 링크.
    • 서버 오류.
    • 그렇지 않으면 분류되지 않은 모든 외부 링크(선택 사항).
    • 모든 외부 이메일(선택 사항).
    • 모든 외부 URL 리디렉터(선택 사항).
    • 알 수 없는 프로토콜에 대한 링크.
    • 자동 완성할 수 없는 양식 필드.
    • 암호 입력 양식(외부 무차별 대입용).
    • 파일 업로드 양식.
    • 기타 HTML 양식(그렇지 않으면 분류되지 않음).
    • 숫자 파일 이름(외부 무차별 대입용).
    • 페이지에 렌더링된 사용자 제공 링크.
    • 덜 중요한 콘텐츠에 대한 MIME 유형이 잘못되었거나 누락됨.
    • 덜 중요한 콘텐츠에 대한 일반 MIME 유형.
    • 덜 중요한 콘텐츠에 대한 문자 집합이 잘못되었거나 누락됨.
    • 덜 중요한 콘텐츠에 대한 충돌하는 MIME/문자 집합 정보.

식별된 문제 목록과 함께 skipfish는 발견된 문서 유형 및 문제 유형의 요약 개요를 제공합니다. 또한 무차별 대입을 통해 발견된 노드가 독특한 방식으로 표시된 대화형 사이트맵도 제공합니다.

참고: 의식적인 설계 결정으로 skipfish는 다음을 포함하되 이에 국한되지 않는 고도로 비특이적인 문제에 대해 중복해서 불평하지 않습니다.

  • non-httponly 또는 non-secure 쿠키,
  • 비HTTPS 또는 자동 완성 활성화된 양식,
  • 페이지에서 감지된 HTML 주석,
  • 오류 메시지의 파일 시스템 경로 공개,
  • 서버 또는 프레임워크 버전 공개,
  • TRACE 또는 OPTIONS 요청을 지원하는 서버,
  • WebDAV와 같은 특정 기술의 존재.

이러한 측면 중 대부분은 원하는 경우 보고서에서 쉽게 검사할 수 있습니다. 예를 들어 모든 HTML 양식이 별도로 나열되고 새 쿠키나 흥미로운 HTTP 헤더도 마찬가지입니다. 감사자는 적절한 경우 이 데이터를 기반으로 특정 설계 권장 사항을 내리기로 선택할 수 있습니다. 그렇지만 이러한 발생은 특정 보안 결함으로 강조 표시되지 않습니다.


  1. 좋아, 사용해보고 싶다. 무엇을 알아야 할까?

무엇보다 먼저, 악의적으로 사용하지 마십시오. skipfish는 소유한 서비스나 테스트 허가를 받은 서비스에만 사용하세요.

모든 유형의 보안 테스트는 파괴적일 수 있음을 명심하십시오. 스캐너는 악의적인 공격을 수행하지 않도록 설계되었지만 실수로 사이트 운영을 방해할 수 있습니다. 위험을 수용하고 그에 따라 계획해야 합니다. 가능하면 테스트 인스턴스에 대해 스캐너를 실행하고 문제가 발생할 경우 결과를 처리할 준비를 하십시오.

또한 이 도구는 보안 전문가가 사용하기 위한 것이며 실험적인 성격을 띱니다. 오탐지를 반환하거나 명백한 보안 문제를 놓칠 수 있습니다. 완벽하게 작동하더라도 포인트 앤 클릭 애플리케이션이 아닙니다. 결과를 액면 그대로 받아들이지 마십시오.

공급업체에서 제공한 데모 사이트에 대해 도구를 실행하는 것은 평가에 좋은 방법이 아닙니다. 일반적으로 취약점을 매우 불완전하게 근사하기 때문입니다. 이러한 경우를 수용하기 위해 어떤 노력도 하지 않았습니다.

마지막으로, 스캐너는 불량하거나 오작동하는 HTTP 서버를 처리하도록 설계되지 않았으며 안전한(또는 정상적인) 동작을 보장하지 않습니다.


  1. 스캐너를 어떻게 실행하나?

컴파일하려면 압축을 풀고 make를 시도하십시오. 먼저 libidn을 설치해야 할 가능성이 큽니다.

다음으로 doc/dictionaries.txt에 제공된 지침을 읽고 올바른 사전 파일을 선택하고 올바르게 구성해야 합니다. 이 단계는 이후 스캔 결과의 품질에 큰 영향을 미치므로 건너뛰지 마십시오.

사전을 선택했으면 -S를 사용하여 해당 사전을 로드하고, -W를 사용하여 새로 학습된 사이트별 키워드(향후 평가에 유용함)를 위한 초기 빈 파일을 지정할 수 있습니다.

$ touch new_dict.wl $ ./skipfish -o output_dir -S existing_dictionary.wl -W new_dict.wl
http://www.example.com/some/starting/path.txt

자동 학습된 키워드를 저장하지 않으려면 -W-를 사용할 수 있습니다.

원하는 경우 둘 이상의 시작 URL을 제공할 수 있습니다. 모두 크롤링됩니다. 또한 다음 구문을 사용하여 파일에서 URL을 읽을 수 있습니다.

$ ./skipfish [...다른 옵션...] @../path/to/url_list.txt

도구는 스캔 진행 중에 유용한 통계를 표시합니다. Enter 키를 눌러 진행 중인 HTTP 요청 목록으로 전환할 수도 있습니다.

위 예제에서 skipfish는 전체 www.example.com(메인 페이지에서 링크된 경우 다른 포트의 서비스 포함)을 스캔하고 output_dir/index.html에 보고서를 작성합니다. 그런 다음 즐겨찾는 브라우저로 이 보고서를 볼 수 있습니다(JavaScript가 활성화되어 있어야 함). 최근 브라우저의 file:/// 보안 개선으로 인해 결과를 HTTP로 액세스해야 할 수도 있습니다. index.html 파일은 정적입니다. 실제 결과는 JSON 파일 계층 구조로 저장되며 필요한 경우 기계 처리 또는 다른 프리젠테이션 프론트엔드에 적합합니다. 또한 발견된 모든 URL 목록은 pivots.txt라는 단일 파일에 저장되어 쉽게 후처리할 수 있습니다.

간단한 동반 스크립트 sfscandiff를 사용하여 동일한 대상에 대해 동일한 플래그로 실행된 두 스캔의 델타를 계산할 수 있습니다. 새 보고서는 모든 새 노드나 변경된 노드에 빨간색 배경을 추가하고 발견된 모든 새 문제나 변경된 문제에 파란색 배경을 추가하여 비파괴적으로 주석이 추가됩니다.

일부 사이트는 인증이 필요할 수 있으며 이에 대한 지원은 doc/authentication.txt에 설명되어 있습니다. 대부분의 경우 끊어진 세션을 감지하여 재인증할 수 있는 폼 인증 방법을 사용하게 됩니다.

인증되면 사이트의 특정 URL이 세션을 로그아웃시킬 수 있습니다. 이를 방지하려면 -N 옵션(쿠키 설정 또는 삭제 시도를 거부)을 사용하거나 -X 매개변수(일치하는 URL을 가져오지 못하도록 방지)를 사용할 수 있습니다.

$ ./skipfish -X /logout/logout.aspx ...다른 매개변수...

-X 옵션은 /icons/, /doc/, /manuals/ 및 이와 유사한 표준적이고 평범한 위치를 제외하여 스캔 속도를 높이는 데도 유용합니다. 일반적으로 -X와 -I(하위 문자열과 일치하는 URL만 크롤링)를 사용하여 원하는 방식으로 스캔 범위를 제한할 수 있습니다. 특정 프로토콜과 포트로만 제한하는 경우도 포함됩니다.

$ ./skipfish -I http://example.com:1234/ ...다른 매개변수...

관련 기능인 -K를 사용하면 퍼징하지 않을 매개변수 이름을 지정할 수 있습니다(애플리케이션에서 URL에 세션 ID를 넣어 잡음을 최소화하는 경우 유용).

또 다른 유용한 범위 지정 옵션은 -D로, 테스트에 포함할 추가 호스트나 도메인을 지정할 수 있습니다. 기본적으로 명령줄 URL에 나타난 모든 호스트가 목록에 추가되지만 -D를 사용하여 이 규칙을 확장할 수 있습니다. 예:

$ ./skipfish -D test2.example.com -o output-dir http://test1.example.com/

...또는 도메인 와일드카드 일치의 경우:

$ ./skipfish -D .example.com -o output-dir http://test1.example.com/

어떤 경우에는 실제로 타사 도메인을 크롤링하고 싶지 않지만 해당 위치에서의 크로스도메인 콘텐츠 포함에 대해 걱정하지 않을 만큼 해당 도메인의 소유자를 신뢰합니다. 경고를 억제하려면 -B 옵션을 사용할 수 있습니다. 예:

$ ./skipfish -B .google-analytics.com -B .googleapis.com ...다른 매개변수...

기본적으로 skipfish는 유선으로 교환되는 데이터 양을 줄이기 위해 최소한의 HTTP 헤더를 보냅니다. 그러나 일부 사이트는 지원되지 않는 클라이언트를 거부하기 위해 User-Agent 문자열이나 헤더 순서를 검사합니다. 이러한 경우 -b ie, -b ffox 또는 -b phone을 사용하여 널리 사용되는 두 브라우저(또는 iPhone) 중 하나를 모방할 수 있습니다.

HTTP 요청을 사용자 정의할 때 -H 옵션을 사용하여 추가 비표준 헤더를 삽입하거나 -F를 사용하여 호스트와 IP 간의 사용자 지정 매핑을 정의할 수 있습니다(리졸버를 우회). 후자의 기능은 아직 출시되지 않았거나 레거시 서비스에 특히 유용합니다.

일부 사이트는 합리적인 시간 내에 스캔하기에 너무 클 수 있습니다. 사이트에 잘 정의된 타르핏(예: 소셜 네트워크의 100,000개의 거의 동일한 사용자 프로필)이 있는 경우 -X 또는 -S로 이러한 특정 위치를 제외할 수 있습니다. 다른 경우에는 다른 설정을 사용해야 할 수 있습니다. -d는 크롤링 깊이를 지정된 하위 디렉터리 수로 제한합니다. -c는 디렉터리당 하위 항목 수를 제한합니다. -x는 크롤 트리 분기당 총 하위 항목 수를 제한합니다. -r은 스캔에서 보낼 총 요청 수를 제한합니다.

반복 평가에 유용한 옵션은 -p입니다. 1%에서 100% 사이의 백분율을 지정하면 크롤러가 모든 링크의 100% 미만을 따르고 모든 사전 항목의 100% 미만을 시도하도록 지시할 수 있습니다. 이는 당연히 스캔의 완전성을 제한하지만 다른 대부분의 설정과 달리 균형 잡히고 비결정적인 방식으로 수행합니다. 인프라에 대한 시간 제한적이지만 정기적인 평가를 설정할 때 매우 유용합니다. 또 다른 관련 옵션은 -q로, 크롤러의 초기 랜덤 시드를 지정된 값으로 설정합니다. 이를 사용하여 이전 스캔을 정확히 재현하여 결과를 비교할 수 있습니다. 랜덤성은 -p 모드에서 가장 많이 의존되지만 다른 곳에서도 몇 가지 스캔 관리 결정을 내리는 데 사용됩니다.

특히 복잡하거나(또는 깨진) 서비스는 매우 많은 수의 동일하거나 거의 동일한 페이지를 포함할 수 있습니다. 이러한 발생은 기본적으로 보고서에서 회색으로 표시되지만 여전히 화면 공간을 차지하고 JavaScript 수준에서 처리하는 데 시간이 걸립니다. 이러한 극단적인 경우 -Q 옵션을 사용하여 보고서가 작성되기 전에 중복 노드 보고를 완전히 억제할 수 있습니다. 이로 인해 사이트 구성에 대한 포괄적인 이해가 줄어들 수 있지만 테스트 범위에는 영향을 미치지 않습니다.

특정 빠른 평가에서는 사이트의 원하는 기능에 특별한 주의를 기울이지 않고 연결되지 않은 비밀만 탐색하려는 경우가 있습니다. 이러한 경우 -P를 지정하여 모든 HTML 구문 분석을 억제할 수 있습니다. 이는 범위를 제한하고 스캐너가 HTML을 보고 새 키워드를 학습하는 기능을 빼앗지만 테스트를 극적으로 가속화합니다. 스캔의 지속적인 효과 위험을 줄이는 또 다른 유사하게 불리한 옵션은 -O로, 모든 양식 구문 분석 및 제출 단계를 억제합니다.

민감한 사용자 데이터를 처리하는 일부 사이트는 SSL과 이를 올바르게 처리하는 것에 관심이 있습니다. Skipfish는 문제가 있는 혼합 콘텐츠 또는 암호 제출 시나리오를 찾는 데 선택적으로 도움을 줄 수 있습니다. -M 옵션을 사용하여 이를 활성화하십시오. 스캐너는 https:// 페이지에서 http:// 스크립트가 로드되는 상황에 대해 불평하지만 이미지와 같은 위험이 없는 시나리오는 무시합니다.

마찬가지로, 특정 까다로운 사이트는 HTTP/1.1 수준에서 캐싱이 제한되지만 명시적인 HTTP/1.0 캐싱 지시문이 제공되지 않은 경우에 신경을 쓸 수 있습니다. 명령줄에 -E를 지정하면 skipfish가 이러한 모든 경우를 신중하게 기록합니다.

경우에 따라 대상 서버의 부하를 제한하거나(또는 DoS 보호를 우회하기 위해) 초당 요청 수를 제한하려고 할 수 있습니다. -l 플래그를 사용하여 이 제한을 설정할 수 있으며 주어진 값은 skipfish가 수행하기를 원하는 초당 최대 요청 수입니다.

스캔은 일반적으로 몇 주가 걸리지 않아야 합니다. 많은 경우 특정 시간 창에 맞도록 스캔 지속 시간을 제한하고 싶을 것입니다. 이는 -k 플래그로 수행할 수 있으며 시간, 분, 초를 H:M:S 형식으로 지정할 수 있습니다. 이 플래그를 사용하면 모든 페이지를 테스트하기 전에 스캔 시간 초과가 발생하면 스캔 범위에 영향을 줄 수 있습니다.

마지막으로, 광범위한 사용자 콘텐츠가 없는 자체 포함 사이트와 관련된 평가에서 감사자는 즉각적인 보안 영향이 없더라도 표시된 외부 이메일이나 HTTP 링크에 신경을 쓸 수 있습니다. -U 옵션을 사용하여 이를 기록하십시오.

사전 관리는 특별한 주제이며 언급했듯이 doc/dictionaries.txt에서 더 자세히 다룹니다. 진행하기 전에 해당 파일을 읽으십시오. 관련 옵션으로는 -S 및 -W(앞서 다룸), 자동 학습을 억제하는 -L, 키워드 추측 저장소 크기를 제한하는 -G, 오래된 사전 항목을 삭제하는 -R, 비용이 많이 드는 $keyword.$extension 퍼징을 억제하는 -Y가 있습니다.

Skipfish는 또한 스캔 범위를 최대화하기 위해 양식 자동 완성 메커니즘을 제공합니다. 값은 악의적이지 않아야 하며, 보안 점검을 구현하기 위한 것이 아니라 입력 유효성 검사 로직을 통과하기 위한 것입니다. -T 옵션을 사용하여 추가 규칙을 정의하거나 기존 규칙을 재정의할 수 있습니다(-T form_field_name=field_value, 예: -T login=test123 -T password=test321 - 단, -C 및 -A가 로그인에 훨씬 더 나은 방법입니다).성능 관련 옵션도 몇 가지 있습니다. -g를 사용하여 전체 대상에 대해 유지할 최대 연결 수를 설정할 수 있습니다(시스템 또는 주변 NAT/방화벽 장치의 TCP/IP 스택에 과부하가 걸리지 않도록 50개 미만으로 유지하는 것이 좋습니다). -m은 IP당 제한을 설정합니다(약간 실험해 보세요: 로컬 호스트의 경우 2-4, 로컬 네트워크의 경우 4-8, 외부 대상의 경우 10-20, 지연이 심하거나 keep-alive를 지원하지 않는 호스트의 경우 30+가 일반적으로 적절합니다). -w를 사용하여 I/O 타임아웃(즉, skipfish가 개별 읽기 또는 쓰기에 대해 대기하는 시간)을 설정할 수 있고, -t를 사용하여 총 요청 타임아웃을 설정하여 매우 느리거나 매우 빠른 사이트에 대응할 수 있습니다.

마지막으로, -f는 스캔을 중단하기 전에 허용할 연속 HTTP 오류의 최대 개수를 제어하고, -s는 가져와서 구문 분석할 응답의 최대 길이를 설정합니다(더 긴 응답은 잘립니다).

대규모의 멀티미디어가 많은 사이트를 스캔할 때는 -e를 지정할 수도 있습니다. 이렇게 하면 이진 문서가 보고 목적으로 메모리에 유지되지 않아 많은 RAM을 확보할 수 있습니다.

추가 속도 제한은 trickle과 같은 타사 사용자 모드 도구 또는 커널 수준 트래픽 셰이핑을 통해 사용할 수 있습니다.

아, 그리고 실시간 스캔 통계는 -u로 숨길 수 있습니다.


  1. 그런데 진짜로 어떻게 실행하나요?

잘 설계되고 자체적으로 완결된 사이트(모든 외부 링크, 이메일, 혼합 콘텐츠 및 캐싱 헤더 문제에 대해 경고)에 대한 표준 인증 스캔으로, 무난한 무차별 대입을 포함합니다:

$ touch new_dict.wl $ ./skipfish -MEU -S dictionaries/minimal.wl -W new_dict.wl
-C "AuthCookie=value" -X /logout.aspx -o output_dir
http://www.example.com/

5개의 연결로 크롤링하지만 무차별 대입은 하지 않습니다. MSIE인 척 하고 example.com 콘텐츠를 신뢰합니다:

$ ./skipfish -m 5 -L -W- -o output_dir -b ie -B example.com
http://www.example.com/

무거운 무차별 대입만 수행합니다(HTML 링크 추출 없음). 단일 디렉토리로 제한하고 5초 후 타임아웃:

$ touch new_dict.wl $ ./skipfish -S dictionaries/complete.wl -W new_dict.wl
-P -I http://www.example.com/dir1/ -o output_dir -t 5 -I
http://www.example.com/dir1/

모든 명령줄 옵션의 간략한 목록을 보려면 ./skipfish -h를 시도하세요.


  1. 보고된 문제를 해석하고 해결하는 방법은?

skipfish가 보고하는 대부분의 문제는 웹 보안의 기본을 잘 이해하고 있다면 설명이 필요 없을 것입니다. MIME 스니핑과 같은 더 복잡한 주제에 대한 빠른 복습이 필요하다면, 포괄적인 Browser Security Handbook을 출발점으로 삼을 수 있습니다:

http://code.google.com/p/browsersec/

여전히 도움이 필요하다면, 일반적인 웹 보안 위협을 문서화하고 설명하며 해결 방법을 조언하는 데 상당한 노력을 기울이는 여러 조직이 있습니다. OWASP와 Web Application Security Consortium 등의 자료를 참조하는 것을 권장합니다:

  • http://www.owasp.org/index.php/Category:Principle
  • http://www.owasp.org/index.php/Category:OWASP_Guide_Project
  • http://www.webappsec.org/projects/articles/

스캐너 자체의 문제 진단을 기꺼이 도와드리지만, 타사 웹 애플리케이션의 내부 작동에 대해서는 안타깝게도 도움을 드릴 수 없습니다.


  1. 알려진 제한 사항 / 기능 요청 목록

다음은 skipfish에 현재 없는 기능 목록입니다. 이 영역 중 하나에 코드를 기여하여 도구를 개선하고 싶다면 알려주시기 바랍니다:

  • 버퍼 오버플로 검사: 신중한 고려 끝에, 원격으로 버퍼 오버플로를 테스트할 수 있는 신뢰할 수 있는 방법은 없다고 생각합니다. 우리가 찾고 있는 실제 오류 조건과 마찬가지로 적절한 버퍼 크기 검사도 잡히지 않은 예외, 500 메시지 등을 초래할 수 있습니다. 하지만 틀렸다는 것을 증명해 주신다면 기꺼이 받아들이겠습니다.

  • 완전한 JavaScript XSS 탐지: 코드에 몇 가지 기본적인 검사가 포함되어 있지만, 표현식을 평가하고 DOM에 접근할 수 있는 적절한 스크립트 엔진은 내장되어 있지 않습니다.

  • 가변 길이 인코딩 문자 소비/인젝션 버그: 이러한 문제는 현재 브라우저 수준에서 대부분 해결된 것으로 보이므로, 작성 시점에서는 우선 순위가 훨씬 낮았습니다.

  • 타사 플러그인 기반 콘텐츠(Flash, Java, PDF 등)에 대한 보안 검사 및 링크 추출.

  • 비밀번호 무차별 대입 및 숫자 파일명 무차별 대입 프로브.

  • 검색 엔진 통합(vhosts, 시작 경로).

  • VIEWSTATE 디코딩.

  • NTLM 및 다이제스트 인증.

  • 더 구체적인 PHP 테스트(eval 인젝션, RFI).

  • 프록시 지원: config.h의 #define 지시문을 통해 실험적인 HTTP 프록시 지원이 제공됩니다. HTTPS 프록시 지원을 추가하는 것은 더 복잡하며 아직 진행 중입니다.

  • 스캔 재개 옵션, 더 나은 런타임 정보.

  • 독립형 설치(make install) 지원.

  • 스케줄링 및 관리 웹 UI.


  1. 이런! 뭔가 매우 잘못되었습니다!

언젠가는 불을 지르지 않을 정도로 좋은 웹 크롤러는 없습니다. 비정상적인 동작(예: 영원히 걸리고 너무 많은 요청을 생성하는 스캔, 스캔 출력의 완전히 가짜 노드, 또는 완전한 충돌)이 발생하면 먼저 알려진 문제 페이지를 확인하십시오:

http://code.google.com/p/skipfish/wiki/KnownIssues

거기서 만족스러운 답을 찾지 못하면 다음 명령으로 스캐너를 다시 컴파일하십시오:

$ make clean debug

...그리고 다음과 같이 다시 실행하십시오:

$ ./skipfish [...이전 옵션...] 2>logfile.txt

그런 다음 logfile.txt를 검사하여 무엇이 잘못되었는지 파악할 수 있습니다. 스캐너 문제처럼 보이면 로그 파일에서 민감한 정보를 모두 제거하고 작성자에게 보내주십시오.

스캐너가 충돌한 경우, 위에 표시된 대로 다시 컴파일한 다음 다음을 입력하십시오:

$ ulimit -c unlimited $ ./skipfish [...이전 옵션...] 2>logfile.txt $ gdb --batch -ex back ./skipfish core

...그리고 마지막 명령의 출력도 작성자에게 보내주십시오.


  1. 크레딧 및 피드백

Skipfish는 Google의 정보 보안 엔지니어링 팀의 기여와 귀중한 피드백 덕분에 가능했습니다.

버그 신고, 질문, 제안 또는 애플리케이션 관련 우려 사항이 있으면 [email protected]으로 기본 작성자에게 연락하실 수 있습니다.

도구 다운로드
  • OGNL 유사 매개변수 전달 규칙.