
4xx HTTP 응답 상태 코드 및 그 이상을 우회합니다. 이 도구는 Python Requests, PycURL 및 HTTP Client를 기반으로 합니다.
4xx HTTP 응답 상태 코드 등을 우회합니다.
이 도구는 Python Requests, PycURL, HTTP Client를 기반으로 합니다.
Kali Linux v2024.2 (64-bit)에서 테스트되었습니다.
교육 목적으로 제작되었습니다. 도움이 되길 바랍니다!
향후 계획:
silent 옵션 추가 (콘솔 출력 숨김).no color 옵션 추가 (컬러 콘솔 출력 비활성화).hop-by-hop HTTP 요청 헤더 테스트 추가.User-Agent HTTP 요청 헤더 테스트 추가.Kali Linux에서는 문제없이 작동해야 합니다. 그렇지 않으면 다음을 실행하세요:
apt-get -y install libcurl4-gnutls-dev librtmp-dev
pip3 install --upgrade pycurl
Windows OS에서 PycURL은 지원되지 않습니다.
macOS에서는 다음을 실행하세요:
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를 사용하여 설치 (본인이 관리하지 않음):
brew install forbidden
pip3 install --upgrade forbidden
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 응답 상태 코드 우회:
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 응답 상태 코드 스트레스 테스트와 함께 우회:
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 응답 상태 코드 우회:
forbidden -u https://example.com/admin -t auths -f GET -l initial -o forbidden_401_results.json
오픈 리디렉션 및 깨진 URL 파서 테스트, 즉 대역외(OOB) 상호작용 테스트:
forbidden -u https://example.com/admin -t redirects,parsers -f GET -l initial -e xyz.interact.sh -o forbidden_oob_results.json
protocols
Host HTTP 요청 헤더 없이 HTTP/1.0 프로토콜 다운그레이드를 테스트합니다.methods
Content-Length: 0 HTTP 요청 헤더도 함께 사용합니다.uploads
overrides
Host HTTP 요청 헤더도 함께 사용합니다.headers
values
paths
encodings
auths
redirects
parsers
더 자세한 내용은 다음을 참조하세요:
참고사항:
고유 필터가 적용됩니다.Forbidden과 Stresser 모두 Python Requests 엔진을 사용합니다.Host HTTP 요청 헤더 없이 HTTP/1.0 프로토콜 다운그레이드를 테스트하는 것은 HTTP Client 엔진으로 고정됩니다. 또한, 제공된 cURL 명령은 cURL이 Host HTTP 요청 헤더 제거를 허용하지 않으므로 제대로 작동하지 않습니다.Host HTTP 요청 헤더를 사용한 HTTP 호스트 오버라이드 테스트는 Python Requests 엔진으로 고정됩니다. 또한, 제공된 cURL 명령은 cURL이 두 개의 Host HTTP 요청 헤더 사용을 허용하지 않으므로 제대로 작동하지 않습니다.PycURL 엔진으로 고정됩니다.정규화하거나(encodings 테스트 시), HTTP 요청을 수정하거나, HTTP 요청을 완전히 드롭할 수 있습니다.이는 사용되는 내용에 대한 간략한 개요일 뿐, 사용 방법에 대한 설명은 아닙니다.
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
이는 사용되는 내용에 대한 간략한 개요일 뿐, 사용 방법에 대한 설명은 아닙니다.
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 응답 본문 길이 내림차순, 테스트 ID 오름차순으로 정렬됩니다.2xx 및 3xx HTTP 응답 상태 코드만 결과에 포함되고 콘솔 출력에 표시됩니다.length 속성은 HTTP 응답 본문 길이를 나타냅니다.false positive 결과를 수동으로 필터링하려면, 각 고유 HTTP 응답 콘텐츠 길이에 대해 제공된 cURL 명령을 실행하고 HTTP 응답이 우회로 이어지는지 확인하세요. 그렇지 않으면 동일한 콘텐츠 길이의 모든 결과를 무시하면 됩니다.[
{
"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
}
]
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
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

그림 1 - 실제 예제

그림 2 - 간단한 예제

그림 3 - 간단한 예제 (테이블 출력)
User-Agent HTTP 요청 헤더가 필요할 수 있습니다.속도 제한 및 기타 유사한 안티봇 보호에 주의하세요. 동일한 도메인에서 도구를 다시 실행하기 전에 시간을 두십시오.