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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/ivan-sincek/forbidden
Vulnerability ScannersIDS/IPS EvasionWeb Application ExploitationInformation GatheringWAF BypassWeb SecurityFuzzingPenetration Testing
GitHubivan-sincek/forbidden

forbidden

4xx HTTP 응답 상태 코드 및 그 이상을 우회합니다. 이 도구는 Python Requests, PycURL 및 HTTP Client를 기반으로 합니다.

저장소 보기
257481511개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Forbidden

4xx HTTP 응답 상태 코드 등을 우회합니다.

이 도구는 Python Requests, PycURL, HTTP Client를 기반으로 합니다.

Kali Linux v2024.2 (64-bit)에서 테스트되었습니다.

교육 목적으로 제작되었습니다. 도움이 되길 바랍니다!

향후 계획:

  • silent 옵션 추가 (콘솔 출력 숨김).
  • no color 옵션 추가 (컬러 콘솔 출력 비활성화).
  • hop-by-hop HTTP 요청 헤더 테스트 추가.
  • User-Agent HTTP 요청 헤더 테스트 추가.
  • HTTP 쿠키 테스트 추가.
  • HTTP 스머글링 테스트 추가.
  • CRLF 테스트 추가.
  • Log4j 테스트 추가.
  • AWS 메타데이터 SSRF 테스트 추가.

목차

  • 설치 방법
    • PycURL 설치
    • 표준 설치
    • 소스에서 빌드 및 설치
  • 사용 방법
  • 테스트
    • HTTP 메서드
    • HTTP 요청 헤더
  • 결과
  • 사용법
  • 이미지
  • 설치 방법

    PycURL 설치

    Kali Linux에서는 문제없이 작동해야 합니다. 그렇지 않으면 다음을 실행하세요:

    root@kitploit:~
    apt-get -y install libcurl4-gnutls-dev librtmp-dev
    
    pip3 install --upgrade pycurl
    

    Windows OS에서 PycURL은 지원되지 않습니다.


    macOS에서는 다음을 실행하세요:

    root@kitploit:~
    brew uninstall curl
    brew uninstall openssl
    
    brew install curl
    brew install openssl
    
    echo 'export PATH="/opt/homebrew/opt/curl/bin:$PATH"' >> ~/.zshrc
    echo 'export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"' >> ~/.zshrc
    source ~/.zshrc
    
    export LDFLAGS="-L/opt/homebrew/opt/curl/lib"
    export CPPFLAGS="-I/opt/homebrew/opt/curl/include"
    export PYCURL_SSL_LIBRARY=openssl
    
    pip3 install --no-cache-dir --compile --ignore-installed --config-setting="--with-openssl=" --config-setting="--openssl-dir=/opt/homebrew/opt/openssl@3" pycurl
    

    또는 Homebrew를 사용하여 설치 (본인이 관리하지 않음):

    root@kitploit:~
    brew install forbidden
    

    표준 설치

    root@kitploit:~
    pip3 install --upgrade forbidden
    

    소스에서 빌드 및 설치

    root@kitploit:~
    git clone https://github.com/ivan-sincek/forbidden && cd forbidden
    
    python3 -m pip install --upgrade build
    
    python3 -m build
    
    python3 -m pip install dist/forbidden-13.4-py3-none-any.whl
    

    사용 방법

    403 Forbidden HTTP 응답 상태 코드 우회:

    root@kitploit:~
    forbidden -u https://example.com/admin -t protocols,methods,uploads,overrides,headers,paths-ram,encodings -f GET -l initial,path -o forbidden_403_results.json
    

    403 Forbidden HTTP 응답 상태 코드 스트레스 테스트와 함께 우회:

    root@kitploit:~
    mkdir stresser_403_results
    
    stresser -u https://example.com/admin -r 1000 -th 200 -f GET -l initial -dir stresser_403_results -o stresser_403_results.json
    

    401 Unauthorized HTTP 응답 상태 코드 우회:

    root@kitploit:~
    forbidden -u https://example.com/admin -t auths -f GET -l initial -o forbidden_401_results.json
    

    오픈 리디렉션 및 깨진 URL 파서 테스트, 즉 대역외(OOB) 상호작용 테스트:

    root@kitploit:~
    forbidden -u https://example.com/admin -t redirects,parsers -f GET -l initial -e xyz.interact.sh -o forbidden_oob_results.json
    

    테스트

    protocols

    • IP 주소와 도메인 이름을 사용하여 HTTP 및 HTTPS 프로토콜을 테스트합니다.
    • IP 주소와 도메인 이름을 사용하여 Host HTTP 요청 헤더 없이 HTTP/1.0 프로토콜 다운그레이드를 테스트합니다.

    methods

    • 허용된 HTTP 메서드를 테스트하며, Content-Length: 0 HTTP 요청 헤더도 함께 사용합니다.
    • HTTP TRACE 및 TRACK 메서드를 사용하여 Cross-Site Tracing (XST)을 테스트합니다.

    uploads

    • HTTP PUT 메서드를 사용하여 URL 경로의 각 디렉토리에 대해 텍스트 파일 업로드를 재귀적으로 테스트합니다.

    overrides

    • URL 쿼리 문자열 매개변수, HTTP 요청 헤더 및 HTTP 요청 본문을 사용하여 HTTP 메서드 오버라이드를 테스트합니다.
    • HTTP 요청 헤더를 사용하여 HTTPS에서 HTTP로, HTTP에서 HTTPS로 URL 스킴 오버라이드를 테스트합니다.
    • HTTP 요청 헤더를 사용하여 포트 오버라이드를 테스트합니다.
    • HTTP 요청 헤더를 사용하여 HTTP 호스트 오버라이드를 테스트하며, 두 개의 Host HTTP 요청 헤더도 함께 사용합니다.
    • 접근 가능한 URL, 루트 URL 및 전체 URL을 사용하여 상대 URL 경로로 HTTP 요청 헤더를 사용한 URL 경로 오버라이드를 테스트합니다.

    headers

    • IP 주소, 쉼표로 구분된 IP 주소, 도메인 이름, 루트 URL, 전체 URL 등을 사용하여 HTTP 요청 헤더를 테스트합니다.

    values

    • 사용자 제공 IP 주소, 도메인 이름, 루트 URL 및 전체 URL을 사용하여 HTTP 요청 헤더를 테스트합니다.

    paths

    • URL 경로 우회를 테스트합니다.

    encodings

    • URL 호스트 및 경로 변환 및 인코딩을 테스트합니다.

    auths

    • null 값과 미리 정의된 Base64 인코딩 자격 증명을 사용하여 HTTP 요청 헤더로 기본 인증/권한 부여를 테스트합니다.
    • null 값, 잘못된 JWT 및 미리 정의된 JWT를 사용하여 HTTP 요청 헤더로 Bearer 인증/권한 부여를 테스트합니다.

    redirects

    • 리디렉션 IP 주소, 도메인 이름, 루트 URL 및 전체 URL을 사용하여 HTTP 요청 헤더로 오픈 리디렉션을 테스트합니다.

    parsers

    • 깨진 IP 주소, 도메인 이름, 루트 URL 및 전체 URL을 사용하여 HTTP 요청 헤더로 깨진 URL 파서를 테스트합니다.

    더 자세한 내용은 다음을 참조하세요:

    • /src/forbidden/utils/forbidden.py
    • /src/forbidden/utils/test.py
    • /src/forbidden/utils/value.py

    참고사항:

    • 모든 테스트는 공개된 정보보안 및 버그 바운티 보고서를 기반으로 합니다.
    • 일부 테스트는 중복되지만, 전송 전에 고유 필터가 적용됩니다.
    • 모든 HTTP 요청 헤더, URL 쿼리 문자열 매개변수 등은 공식 문서를 기반으로 검증되었습니다.
    • 기본적으로 Forbidden과 Stresser 모두 Python Requests 엔진을 사용합니다.
    • Host HTTP 요청 헤더 없이 HTTP/1.0 프로토콜 다운그레이드를 테스트하는 것은 HTTP Client 엔진으로 고정됩니다. 또한, 제공된 cURL 명령은 cURL이 Host HTTP 요청 헤더 제거를 허용하지 않으므로 제대로 작동하지 않습니다.
    • 두 개의 Host HTTP 요청 헤더를 사용한 HTTP 호스트 오버라이드 테스트는 Python Requests 엔진으로 고정됩니다. 또한, 제공된 cURL 명령은 cURL이 두 개의 Host HTTP 요청 헤더 사용을 허용하지 않으므로 제대로 작동하지 않습니다.
    • URL 호스트 및 경로 변환 및 인코딩 테스트는 PycURL 엔진으로 고정됩니다.
    • 일부 웹 프록시는 URL을 정규화하거나(encodings 테스트 시), HTTP 요청을 수정하거나, HTTP 요청을 완전히 드롭할 수 있습니다.
    • 일부 웹사이트는 유효하거나 매우 특정한 User-Agent HTTP 요청 헤더가 필요할 수 있습니다.
    • Cross-Site Tracing (XST)은 더 이상 취약점으로 간주되지 않습니다.
    • 속도 제한 및 기타 유사한 안티봇 보호에 주의하세요. 동일한 도메인에서 도구를 다시 실행하기 전에 시간을 두십시오.

    HTTP 메서드

    이는 사용되는 내용에 대한 간략한 개요일 뿐, 사용 방법에 대한 설명은 아닙니다.

    root@kitploit:~
    ACL
    ARBITRARY
    BASELINE-CONTROL
    BIND
    CHECKIN
    CHECKOUT
    CONNECT
    COPY
    DELETE
    GET
    HEAD
    INDEX
    LABEL
    LINK
    LOCK
    MERGE
    MKACTIVITY
    MKCALENDAR
    MKCOL
    MKREDIRECTREF
    MKWORKSPACE
    MOVE
    OPTIONS
    ORDERPATCH
    PATCH
    POST
    PRI
    PROPFIND
    PROPPATCH
    PUT
    REBIND
    REPORT
    SEARCH
    SHOWMETHOD
    SPACEJUMP
    TEXTSEARCH
    TRACE
    TRACK
    UNBIND
    UNCHECKOUT
    UNLINK
    UNLOCK
    UPDATE
    UPDATEREDIRECTREF
    VERSION-CONTROL
    

    HTTP 요청 헤더

    이는 사용되는 내용에 대한 간략한 개요일 뿐, 사용 방법에 대한 설명은 아닙니다.

    root@kitploit:~
    19-Profile
    Accept
    Base-URL
    CF-Connecting-IP
    Client-IP
    Cluster-Client-IP
    Destination
    Forwarded-For
    Forwarded-For-IP
    From
    Front-End-HTTPS
    Host
    Incap-Client-IP
    Origin
    Profile
    Proxy
    Proxy-Client-IP
    Redirect
    Referer
    Remote-Addr
    Request-URI
    True-Client-IP
    URI
    URL
    WAP-Profile
    WL-Proxy-Client-IP
    X-Client-IP
    X-Cluster-Client-IP
    X-Forward
    X-Forward-For
    X-Forwarded
    X-Forwarded-By
    X-Forwarded-For
    X-Forwarded-For-IP
    X-Forwarded-For-Original
    X-Forwarded-Host
    X-Forwarded-Path
    X-Forwarded-Port
    X-Forwarded-Proto
    X-Forwarded-Protocol
    X-Forwarded-SSL
    X-Forwarded-Scheme
    X-Forwarded-Server
    X-HTTP-DestinationURL
    X-HTTP-Host-Override
    X-HTTP-Method
    X-HTTP-Method-Override
    X-Host
    X-Host-Override
    X-Method
    X-Method-Override
    X-Original-Forwarded-For
    X-Original-Remote-Addr
    X-Original-URL
    X-Originally-Forwarded-For
    X-Originating-IP
    X-Override-URL
    X-Proxy-Host
    X-Proxy-URL
    X-ProxyUser-IP
    X-Real-IP
    X-Referer
    X-Remote-Addr
    X-Remote-IP
    X-Rewrite-URL
    X-Scheme
    X-Server-IP
    X-True-Client-IP
    X-True-IP
    X-URL-Scheme
    X-Wap-Profile
    

    결과

    참고사항:

    • 결과는 HTTP 응답 상태 코드 오름차순, HTTP 응답 본문 길이 내림차순, 테스트 ID 오름차순으로 정렬됩니다.
    • 기본적으로 2xx 및 3xx HTTP 응답 상태 코드만 결과에 포함되고 콘솔 출력에 표시됩니다.
    • 결과의 length 속성은 HTTP 응답 본문 길이를 나타냅니다.
    • false positive 결과를 수동으로 필터링하려면, 각 고유 HTTP 응답 콘텐츠 길이에 대해 제공된 cURL 명령을 실행하고 HTTP 응답이 우회로 이어지는지 확인하세요. 그렇지 않으면 동일한 콘텐츠 길이의 모든 결과를 무시하면 됩니다.
    root@kitploit:~
    [
       {
          "id":"595-HOST-OVERRIDES-1",
          "url":"https://example.com:443/admin",
          "method":"GET",
          "headers":[
             "Host: 127.0.0.1"
          ],
          "cookies":[],
          "body":"",
          "user_agent":"Forbidden/13.4",
          "command":"curl --path-as-is -iskL -A 'Forbidden/13.4' -H 'Host: 127.0.0.1' -X 'GET' 'https://example.com:443/admin'",
          "status":200,
          "length":14301
       },
       {
          "id":"596-HOST-OVERRIDES-1",
          "url":"https://example.com:443/admin",
          "method":"GET",
          "headers":[
             "Host: 127.0.0.1:443"
          ],
          "cookies":[],
          "body":"",
          "user_agent":"Forbidden/13.4",
          "command":"curl --path-as-is -iskL -A 'Forbidden/13.4' -H 'Host: 127.0.0.1:443' -X 'GET' 'https://example.com:443/admin'",
          "status":200,
          "length":14301
       }
    ]
    

    사용법

    root@kitploit:~
    Forbidden v13.4 ( github.com/ivan-sincek/forbidden )
    
    Usage:   forbidden -u url                       -t tests [-f force] [-o out         ]
    Example: forbidden -u https://example.com/admin -t all   [-f GET  ] [-o results.json]
    
    DESCRIPTION
        4xx HTTP 응답 상태 코드 등을 우회합니다.
    URL
        접근 불가능한 URL
        -u, --url = https://example.com/admin | etc.
    IGNORE PARAMETERS
        URL 쿼리 문자열 및 프래그먼트 무시
        -ip, --ignore-parameters
    IGNORE REQUESTS
        해당하는 경우, 기본 Python Requests 엔진 대신 PycURL 사용
        -ir, --ignore-requests
    TESTS
        실행할 테스트
        '[ip-|host-|url-]values'를 지정하면 '-v' 옵션으로 전달된 사용자 제공 값만 사용하여 HTTP 요청 헤더를 테스트합니다.
        'paths-ram'을 지정하면 battering ram 공격을 사용하고, 'paths'를 지정하면 기본 cluster bomb 공격을 사용합니다.
        쉼표로 구분된 값을 사용하세요.
        -t, --tests = protocols | methods | uploads | [method-|scheme-|port-|host-|path-]overrides | headers | [ip-|host-|url-]values | paths[-ram] | encodings | [basic-|bearer-]auths | redirects | parsers | all
    VALUES
        HTTP 요청 헤더 값을 포함하는 파일 또는 단일 값 (예: 내부 IP 등)
        테스트: all-values
        -v, --values = values.txt | 10.10.15.20 | example.local | https://example.local | etc.
    FORCE
        모든 비특정 테스트에 HTTP 메서드 강제 적용
        -f, --force = GET | POST | CUSTOM | etc.
    PATH
        URL 경로 오버라이드 테스트를 위한 접근 가능한 URL 경로
        테스트: path-overrides
        기본값: /robots.txt, /index.html, /sitemap.xml, /README.txt
        -p, --path = /home | etc.
    EVIL
        악성 URL 또는 협력 서비스
        테스트: host-overrides, headers, bearer-auths, redirects, parsers
        기본값: https://github.com
        -e, --evil = https://xyz.interact.sh | https://xyz.burpcollaborator.net | etc.
    HEADER
        추가 HTTP 요청 헤더 (임의 개수)
        추가 HTTP 요청 헤더는 테스트별 HTTP 요청 헤더를 재정의하지 않습니다.
        세미콜론(예: 'Content-Type;')은 빈 HTTP 요청 헤더로 확장됩니다.
        -H, --header = "Authorization: Bearer ey..." | Content-Type; | etc.
    COOKIE
        추가 HTTP 쿠키 (임의 개수)
        추가 HTTP 쿠키는 테스트별 HTTP 쿠키를 재정의하지 않습니다.
        -b, --cookie = PHPSESSIONID=3301 | etc.
    IGNORE
        false positive 200 OK 결과를 필터링하기 위한 정규식
        -i, --ignore = Inaccessible | "Access Denied" | "Error: .+" | etc.
    CONTENT LENGTHS
        false positive 200 OK 결과를 필터링하기 위한 HTTP 응답 콘텐츠 길이
        'initial'을 지정하면 초기 HTTP 응답의 콘텐츠 길이를 무시합니다.
        'path'를 지정하면 접근 가능한 URL 응답의 콘텐츠 길이를 무시합니다.
        쉼표로 구분된 값을 사용하세요.
        -l, --content-lengths = 12 | initial | path | etc.
    REQUEST TIMEOUT
        요청 제한 시간 (초)
        기본값: 60
        -rt, --request-timeout = 30 | 90 | etc.
    THREADS
        실행할 병렬 스레드 수
        기본값: 5
        -th, --threads = 20 | etc.
    SLEEP
        HTTP 요청 전 슬립 시간 (밀리초)
        단일 스레드 사용을 위한 것입니다.
        -s, --sleep = 500 | etc.
    USER AGENT
        사용할 사용자 에이전트
        기본값: Forbidden/13.4
        -a, --user-agent = random[-all] | curl/3.30.1 | etc.
    PROXY
        사용할 웹 프록시
        -x, --proxy = http://127.0.0.1:8080 | etc.
    HTTP RESPONSE STATUS CODES
        결과에 포함할 특정 HTTP 응답 상태 코드만 지정
        기본값: 2xx, 3xx
        쉼표로 구분된 값을 사용하세요.
        -sc, --status-codes = 1xx | 2xx | 3xx | 4xx | 5xx | all
    SHOW TABLE
        JSON 형식 대신 테이블 형식으로 결과 표시
        와이드 스크린에서 사용하기 위한 것입니다.
        -st, --show-table
    OUT
        출력 파일
        -o, --out = results.json | etc.
    DUMP
        실행하지 않고 모든 테스트 레코드를 출력 파일에 덤프
        -dmp, --dump
    DEBUG
        디버그 출력 활성화
        -dbg, --debug
    
    root@kitploit:~
    Stresser v13.4 ( github.com/ivan-sincek/forbidden )
    
    Usage:   stresser -u url                       -r repeat -th threads -dir directory [-f force] [-o out         ]
    Example: stresser -u https://example.com/admin -r 1000   -th 200     -dir results   [-f GET  ] [-o results.json]
    
    DESCRIPTION
        스트레스 테스트와 함께 4xx HTTP 응답 상태 코드 우회
    URL
        접근 불가능한 URL
        -u, --url = https://example.com/admin | etc.
    IGNORE PARAMETERS
        URL 쿼리 문자열 및 프래그먼트 무시
        -ip, --ignore-parameters
    IGNORE REQUESTS
        해당하는 경우, 기본 Python Requests 엔진 대신 PycURL 사용
        -ir, --ignore-requests
    FORCE
        모든 비특정 테스트에 HTTP 메서드 강제 적용
        -f, --force = GET | POST | CUSTOM | etc.
    HEADER
        추가 HTTP 요청 헤더 (임의 개수)
        추가 HTTP 요청 헤더는 테스트별 HTTP 요청 헤더를 재정의하지 않습니다.
        세미콜론(예: 'Content-Type;')은 빈 HTTP 요청 헤더로 확장됩니다.
        -H, --header = "Authorization: Bearer ey..." | Content-Type; | etc.
    COOKIE
        추가 HTTP 쿠키 (임의 개수)
        추가 HTTP 쿠키는 테스트별 HTTP 쿠키를 재정의하지 않습니다.
        -b, --cookie = PHPSESSIONID=3301 | etc.
    IGNORE
        false positive 200 OK 결과를 필터링하기 위한 정규식
        -i, --ignore = Inaccessible | "Access Denied" | "Error: .+" | etc.
    CONTENT LENGTHS
        false positive 200 OK 결과를 필터링하기 위한 HTTP 응답 콘텐츠 길이
        'initial'을 지정하면 초기 HTTP 응답의 콘텐츠 길이를 무시합니다.
        쉼표로 구분된 값을 사용하세요.
        -l, --content-lengths = 12 | initial | etc.
    REQUEST TIMEOUT
        요청 제한 시간 (초)
        기본값: 60
        -rt, --request-timeout = 30 | 90 | etc.
    REPEAT
        테스트당 HTTP 요청 수
        -r, --repeat = 1000 | etc.
    THREADS
        실행할 병렬 스레드 수
        -th, --threads = 20 | etc.
    USER AGENT
        사용할 사용자 에이전트
        기본값: Stresser/13.4
        -a, --user-agent = random[-all] | curl/3.30.1 | etc.
    PROXY
        사용할 웹 프록시
        -x, --proxy = http://127.0.0.1:8080 | etc.
    HTTP RESPONSE STATUS CODES
        결과에 포함할 특정 HTTP 응답 상태 코드만 지정
        기본값: 2xx, 3xx
        쉼표로 구분된 값을 사용하세요.
        -sc, --status-codes = 1xx | 2xx | 3xx | 4xx | 5xx | all
    SHOW TABLE
        JSON 형식 대신 테이블 형식으로 결과 표시
        와이드 스크린에서 사용하기 위한 것입니다.
        -st, --show-table
    OUT
        출력 파일
        -o, --out = results.json | etc.
    DIRECTORY
        출력 디렉토리
        모든 유효하고 고유한 HTTP 응답이 이 디렉토리에 저장됩니다.
        -dir, --directory = results | etc.
    DUMP
        실행하지 않고 모든 테스트 레코드를 출력 파일에 덤프
        -dmp, --dump
    DEBUG
        디버그 출력 활성화
        -dbg, --debug
    

    이미지

    Real Example

    그림 1 - 실제 예제

    Simple Example

    그림 2 - 간단한 예제

    Simple Example (Table Output)

    그림 3 - 간단한 예제 (테이블 출력)

    도구 다운로드