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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
gotestwaf — 다양한 API 보안 도구와 WAF의 탐지 로직 및 우회 방법을 평가하기 위한 Golang 기반 오픈소스 프로젝트 | Kitploit
도구/GitHubGitHub/wallarm/gotestwaf
Vulnerability ScannersWeb Vulnerability ScannersAPI Security TestingWAF BypassWeb SecurityPenetration TestingAPI SecurityAPI Security #11위API Security Testing #11위WAF Bypass #3위
1.8k260375일 전Kitploit 검토 완료
GitHubwallarm/gotestwaf

gotestwaf

다양한 API 보안 도구와 WAF의 탐지 로직 및 우회 방법을 평가하기 위한 Golang 기반 오픈소스 프로젝트

저장소 보기웹사이트

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

GoTestWAF Black Hat Arsenal USA 2022

GoTestWAF는 REST, GraphQL, gRPC, SOAP, XMLRPC 등 다양한 API 프로토콜을 지원하는 API 및 OWASP 공격 시뮬레이션 도구입니다.

이 도구는 API 보안 프록시, 웹 애플리케이션 방화벽(WAF), IPS, API 게이트웨이 등과 같은 웹 애플리케이션 보안 솔루션을 평가하기 위해 설계되었습니다.


  • 작동 방식
  • 요구 사항
  • Docker로 빠르게 시작하기
  • 평가 결과 확인
  • 데모
  • GoTestWAF를 실행하는 다른 방법
  • 구성 옵션
  • OWASP Core Rule Set 회귀 테스트 스위트와 함께 실행하기

작동 방식

GoTestWAF는 HTTP 요청의 다양한 부분(본문, 헤더, URL 파라미터 등)에 인코딩된 페이로드를 배치하여 악성 요청을 생성합니다. 생성된 요청은 GoTestWAF 실행 시 지정된 애플리케이션 보안 솔루션 URL로 전송됩니다. 보안 솔루션 평가 결과는 사용자 머신에 생성된 보고서 파일에 기록됩니다.

요청 생성의 기본 조건은 testcases 폴더의 다음 형식 YAML 파일에 정의되어 있습니다:```yaml payload:

  • '"union select -7431.1, name, @aaa from u_base--w-'
  • "'or 123.22=123.22"
  • "' waitfor delay '00:00:10'--"
  • "')) or pg_sleep(5)--" encoder:
  • Base64Flat
  • URL
  • JSUnicode placeholder:
  • URLPath
  • URLParam
  • Header type: SQL Injection
* `payload`는 악성 공격 샘플입니다 (예: ```<script>alert(111)</script>``` 와 같은 XSS 페이로드 또는 더 정교한 것).

페이로드에는 YAML 문자열 형식이 필요하므로, 페이로드는 [바이너리 데이터로 인코딩](https://yaml.org/type/binary.html)되어야 합니다.

* `encoder`는 페이로드를 HTTP 요청에 넣기 전에 적용할 인코더입니다. 가능한 인코더는 다음과 같습니다:

    * Base64
    * Base64Flat
    * JSUnicode
    * URL
    * Plain (페이로드 문자열을 그대로 유지)
    * XML Entity

* `placeholder`는 인코딩된 페이로드가 위치할 HTTP 요청 내의 장소입니다. 가능한 플레이스홀더는 다음과 같습니다:

    * gRPC
    * Header
    * UserAgent
    * RequestBody
    * JSONRequest
    * JSONBody
    * HTMLForm
    * HTMLMultipartForm
    * SOAPBody
    * XMLBody
    * URLParam
    * URLPath
    * RawRequest

    `RawRequest` 플레이스홀더를 사용하면 임의의 HTTP 요청을 수행할 수 있습니다. 페이로드는 URL 경로, 헤더 또는 본문에서 `{{payload}}` 문자열을 대체하여 치환됩니다. `RawRequest` 플레이스홀더의 필드는 다음과 같습니다:

    * `method`
    * `path`
    * `headers`
    * `body`

    `RawRequest` 플레이스홀더의 필수 필드:
    
    * `method` 필드

    예시:
    
    ```yaml
    payload:
      - test
    encoder:
      - Plain
    placeholder:
      - RawRequest:
          method: "POST"
          path: "/"
          headers:
            Content-Type: "multipart/form-data; boundary=boundary"
          body: |
            --boundary
            Content-disposition: form-data; name="field1"
            
            Test
            --boundary
            Content-disposition: form-data; name="field2"
            Content-Type: text/plain; charset=utf-7
            
            Knock knock.
            {{payload}}
            --boundary--
    type: RawRequest test
    ```

* `type`은 파일 내 페이로드 전체 그룹의 이름입니다. 임의로 지정할 수 있지만, 파일 내 공격 유형을 반영해야 합니다.

요청 생성은 페이로드 수에 인코더 및 플레이스홀더 수를 곱하는 3단계 프로세스입니다.
예를 들어 2개의 **페이로드**, 3개의 **인코더**(Base64, JSUnicode, URL), 1개의 **플레이스홀더**(URLParameter - HTTP GET 파라미터)를 정의했다고 가정해 보겠습니다.
이 경우 GoTestWAF는 테스트 케이스에서 2x3x1 = 6개의 요청을 전송합니다.

GoTestWAF 실행 중에는 내장된 두 가지 테스트 케이스(OWASP Top-10, OWASP-API) 중에서 선택하거나, [구성 옵션](#configuration-options) `testCasePath`를 사용하여 자신만의 테스트 케이스를 선택할 수 있습니다.

## 요구 사항

* GoTestwaf는 모든 주요 운영 체제(Linux, Windows, macOS)를 지원하며, 시스템에 [Go](https://golang.org/doc/install)가 설치되어 있으면 네이티브로 빌드할 수 있습니다. GoTestWaf를 네이티브로 실행하려면 PDF 보고서를 생성할 수 있도록 Chrome 웹 브라우저가 있는지 확인하세요. Chrome이 없는 경우 HTML 형식으로 보고서를 생성할 수 있습니다.
* GoTestWAF를 Docker 컨테이너로 실행하는 경우, [Docker가 설치 및 구성](https://docs.docker.com/get-docker/)되어 있고 GoTestWAF와 평가 대상 애플리케이션 보안 솔루션이 동일한 [Docker 네트워크](https://docs.docker.com/network/)에 연결되어 있는지 확인하세요.
* GoTestWAF가 성공적으로 시작되려면, GoTestWAF를 실행하는 머신의 IP 주소가 애플리케이션 보안 솔루션을 실행하는 머신에서 화이트리스트에 등록되어 있는지 확인하세요.

## Docker로 빠르게 시작하기

아래 단계는 Docker에서 최소 구성으로 GoTestWAF를 다운로드하고 시작하는 과정을 안내합니다.

1.  Docker Hub에서 [GoTestWAF 이미지](https://hub.docker.com/r/wallarm/gotestwaf)를 가져옵니다:

    ```
    docker pull wallarm/gotestwaf
    ```

2.  GoTestWAF 이미지를 시작합니다:

    ```sh
    docker run --rm --network="host" -it -v ${PWD}/reports:/app/reports \
        wallarm/gotestwaf --url=<EVALUATED_SECURITY_SOLUTION_URL>
    ```

    필요한 경우 `${PWD}/reports`를 평가 보고서를 저장할 다른 폴더 경로로 바꿀 수 있습니다.

    선택적으로 이메일로 보고서를 받지 않으려면, 이메일 요청 메시지가 나타난 후 Enter를 누르거나 --noEmailReport를 사용하여 메시지를 건너뛸 수 있습니다:

    ```sh
    docker run --rm --network="host" -v ${PWD}/reports:/app/reports \
        wallarm/gotestwaf --url=<EVALUATED_SECURITY_SOLUTION_URL> --noEmailReport
    ```

    평가 대상 보안 도구가 외부에서 접근 가능한 경우 `--network="host"` 옵션을 생략할 수 있습니다. 이 옵션은 127.0.0.1에서 실행되는 Docker 컨테이너 간의 상호 작용을 가능하게 합니다.

    gRPC 테스트를 수행하려면 작동하는 엔드포인트가 있어야 하며 --grpcPort <port> CLI 옵션을 사용해야 합니다.

    ```sh
    docker run --rm --network="host" -it -v ${PWD}/reports:/app/reports \
        wallarm/gotestwaf --grpcPort 9000 --url=http://my.grpc.endpoint
    ```

3.  이메일에서 보고서를 확인합니다.

최소 구성으로 GoTestWAF를 사용하여 애플리케이션 보안 솔루션을 성공적으로 평가했습니다.
고급 구성 옵션을 알아보려면 이 [링크](#configuration-options)를 사용하세요.

## 평가 결과 확인
도구 다운로드