URL Filter Bypass
워게임 문제를 풀다보면 url 필터링을 우회해야할 때가 많습니다.
localhost 나 127.0.0.1을 필터링 하기도 하고 특정 도메인만 통과시키기도 합니다.
이 글을 통해 우회방법에 대해서 정리해보고자 합니다.
@, # 같은 특수문자를 활용한 우회
예시:
https://user:pass@example.com:443/index.php?id=1#section2
위 url을 나눠보겠습니다.
https : 스키마
user:pass@ : 유저정보@
example : 호스트
443 : 포트
/index.php : 경로
?id=1 : GET 쿼리
#section2 = 프래그먼트
서버에서 필터링 조건으로 특정 호스트만 가능한 조건이 있을시 @와 #를 사용하여 우회할 수 있습니다.
원래 @는 인증 정보에 사용되며 @의 앞은 인증을 위한 아이디와 비밀번호, @ 뒤는 최종적으로 접속하는 도메인이 됩니다.
이때 서버에서 example.com이라는 호스트만 접속이 가능하다면, example.com@hack.com 이런식으로 서버에서는 example.com이 url에 있으니 통과되지만, 실제로 접속되는 주소는 뒤에나오는 hack.com이 됩니다.
또한 #(프래그먼트)는 브라우저에서만 처리되고 서버에는 전송이 되지 않습니다.
때문에 url뒤에 #example.com이라고 적으면 서버에서는 url에 example.com이 포함되어있으니 통과되지만, 실제로는 아무 의미없는 문자열이 되어 접속에 영향을 주지않게 됩니다.
localhost, 127.0.0.1 필터링 우회기법
127.0.0.1이나 localhost가 서버측에서 필터링되어 사용이 불가하지만, 문제에서 localhost에 접속하여야 할때 사용할 수 있는 우회법들 입니다.
http://vcap.me
http://0x7f.0x00.0x00.0x01
http://0x7f000001
http://2130706433
http://Localhost
http://127.0.0.1
http://0.0.0.0
http://localhost
http://0000::1
http://[::]
http://localtest.me
http://localhost.hahwul.com
http://127.127.127.127
http://127.0.1.3
http://127.0.0.0
http://0/
http://127.1
http://127.0.1
http://2130706433
http://0177.0.0.1
http://o177.0.0.1
http://0o177.0.0.1
http://q177.0.0.1
vcap.me는 127.0.0.1에 자동으로 연결을 해주는 특수한 도메인입니다.
그 외에 127.0.0.1을 10진수나 16진수, 8진수로 바꾸는 방법도 존재합니다.
중간중간 IPv6의 특징을 활용한 url이 있기에, IPv6를 사용안하는 환경에서는 거부될 가능성이 높습니다.
이처럼 다양한 방법들로 필터링을 우회해 볼 수 있습니다.
'보안 > 이론 정리' 카테고리의 다른 글
| 스프링부트 - URL 매핑과 컨트롤러 (0) | 2025.10.03 |
|---|---|
| 웹 해킹 - 직렬화와 역직렬화 (0) | 2025.09.25 |
| Java - 어노테이션(@) (0) | 2025.09.22 |
| 웹 해킹 - SVG 파일과 취약점 (0) | 2025.09.19 |
| 웹 해킹 - SSTI (0) | 2025.09.15 |