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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ftw — WAF 테스트를 위한 프레임워크 (FTW!) | Kitploit
도구/GitHubGitHub/fastly/ftw
Vulnerability ScannersWAF BypassWeb SecurityPenetration TestingDevSecOpsArchived
GitHubfastly/ftw

ftw

WAF 테스트를 위한 프레임워크 (FTW!)

저장소 보기
263583년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

WAF 테스트를 위한 프레임워크 (FTW)

Build Status

목적

이 프로젝트는 ModSecurity와 Fastly의 연구자들이 WAF 규칙에 대한 엄격한 테스트를 제공하기 위해 만들어졌습니다. OWASP Core Ruleset V3를 기준으로 사용하여 WAF에서 규칙을 테스트합니다. 규칙 세트의 각 규칙은 YAML 파일에 로드되어 이러한 규칙을 트리거하는 HTTP 요청을 발행합니다.

목표 / 사용 사례는 다음과 같습니다:

  • 지속적인 통합을 사용하고 반복 가능한 공격을 WAF에 발행하여 WAF 배포의 회귀를 찾습니다.
  • ModSecurity에 새로운 규칙을 위한 테스트 프레임워크를 제공합니다. 규칙이 제출되면 이에 상응하는 긍정 및 부정 테스트가 있어야 합니다.
  • 공통적이고 합의된 기준 규칙 세트(OWASP)에 대해 WAF를 평가합니다.
  • 핵심 규칙 세트에 속하지 않는 WAF에 대한 사용자 정의 규칙을 테스트하고 검증합니다.

설치

  • git clone [email protected]:fastly/ftw.git
  • cd ftw
  • Make sure that pip is installed apt-get install python-pip
  • pip install -r requirements.txt

HTML 포함 및 상태 코드 확인만으로 테스트 실행

  • 웹 서버를 가리키는 YAML 파일을 WAF 앞에 생성합니다.
  • py.test test/test_default.py --ruledir test/yaml

Apache+Modsecurity+OWASP CRS 프로비저닝

WAF 규칙 테스트를 위한 환경이 필요한 경우, Apache, Modsecurity 및 OWASP 핵심 규칙 세트 버전 3.0.0으로 생성된 환경이 있습니다. 다음을 통해 배포할 수 있습니다:

  • 저장소 체크아웃: git clone https://github.com/fastly/waf_testbed.git
  • vagrant up 입력

YAML 파일의 대상 주소를 사용자 정의 도메인으로 재정의하여 테스트 실행

  • 테스트 웹 서버를 시작합니다
  • py.test test/test_default.py --ruledir=test/yaml --destaddr=domain.com --port 443 --protocol https

통합 테스트 실행, 로컬 웹 서버, sudo 사용 필요할 수 있음

  • py.test test/integration/test_logcontains.py -s --ruledir=test/integration/

로그 통합 방법

  1. 필요한 임포트가 포함된 *.py 파일을 생성합니다. 예시는 test/integration/test_logcontains.py에 나와 있습니다.
  2. test*로 시작하는 모든 함수는 py.test에 의해 실행되므로, def test_somewaf 함수를 만듭니다.
  3. LogChecker를 상속하는 클래스를 구현합니다.
    1. get_logs() 함수를 구현합니다. FTW는 테스트를 실행한 후 이 함수를 호출하며, self.start와 self.end의 datetime을 설정합니다.
    2. datetime 변수의 정보를 사용하여 WAF에서 파일(파일 또는 API 호출)을 검색합니다.
    3. 로그를 가져와 문자열 배열에 저장하고 get_logs()에서 반환합니다.
  4. py.test fixtures를 활용합니다. 함수 데코레이터 @pytest.fixture를 사용하고, 새 LogChecker 객체를 반환합니다. 테스트에서 해당 이름과 일치하는 함수 인수를 사용할 때마다 객체가 인스턴스화되어 테스트 실행이 쉬워집니다. 예시는 1단계의 Python 파일에 있습니다.

프로그래밍 방식으로 HTTP 요청 만들기

YAML 형식을 사용하여 요청을 만드는 것이 선호되지만, 자주 자동화된 테스트에서는 많은 동적 요청이 필요합니다. 이러한 경우 전체의 일부로 실행할 수 있는 테스트 케이스를 생성하기 위해 py.test 프레임워크를 활용하는 것이 좋습니다. 일반적으로 HTTP 요청을 만드는 것은 간단합니다:

  1. HttpUA() 클래스의 인스턴스를 생성합니다.
  2. 기본값으로 두고 싶지 않은 매개변수를 제공하여 Input() 클래스의 인스턴스를 생성합니다.
  3. Input 클래스의 인스턴스를 HttpUA.send_request()에 제공합니다.

예시는 http 통합 테스트를 참조하세요

도구 다운로드
@pytest.fixture
  • test/integration/LOGCONTAINSFIXTURE.yaml에 표시된 대로 *.yaml 형식으로 테스트 구성을 작성합니다. log_contains 행에는 정규식인 문자열이 필요합니다. FTW는 YAML 파일의 각 단계에서 log_contains 문자열을 정규식으로 컴파일합니다. 이 정규식은 get_logs()에서 전달된 로그 줄과 함께 사용되어 일치 항목을 찾습니다. 따라서 log_contains 문자열은 고유한 규칙 ID여야 합니다. FTW는 탐욕적이며 첫 번째 일치 항목을 통과시키기 때문입니다. LogChecker 객체에 전달된 시작/종료 시간으로 인해 오탐이 완화되지만, 안전을 위해 고유한 정규식을 사용하는 것이 좋습니다.
  • 각 단계마다 get_logs() 함수가 호출되므로, 로그를 검색하는 방식이 API 호출인 경우 이를 처리해야 합니다.