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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
forbidden — 4xx HTTP 응답 상태 코드 및 그 이상을 우회합니다. 이 도구는 Python Requests, PycURL 및 HTTP Client를 기반으로 합니다. | Kitploit
도구/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를 기반으로 합니다.

저장소 보기
2574811개월 전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 요청을 완전히 드롭할 수 있습니다.

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 - 간단한 예제 (테이블 출력)

도구 다운로드
  • 일부 웹사이트는 유효하거나 매우 특정한 User-Agent HTTP 요청 헤더가 필요할 수 있습니다.
  • Cross-Site Tracing (XST)은 더 이상 취약점으로 간주되지 않습니다.
  • 속도 제한 및 기타 유사한 안티봇 보호에 주의하세요. 동일한 도메인에서 도구를 다시 실행하기 전에 시간을 두십시오.