diff --git a/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md b/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md
index 023d0ffb2..dfee3f9da 100644
--- a/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md
+++ b/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md
@@ -15,7 +15,7 @@ Learn & practice GCP Hacking:
+
**Obtén la perspectiva de un hacker sobre tus aplicaciones web, red y nube**
@@ -23,8 +23,6 @@ Learn & practice GCP Hacking:
+
**Obtén la perspectiva de un hacker sobre tus aplicaciones web, red y nube**
@@ -1098,7 +1100,7 @@ Aprende y practica Hacking en GCP:
{% endhint %}
diff --git a/pentesting-web/cors-bypass.md b/pentesting-web/cors-bypass.md
index 79405f402..a66308514 100644
--- a/pentesting-web/cors-bypass.md
+++ b/pentesting-web/cors-bypass.md
@@ -21,7 +21,7 @@ Learn & practice GCP Hacking:
Access-Control-Allow-Origin: https://target.application}.arbitrary.com
Access-Control-Allow-Credentials: true
```
+### **Otros trucos divertidos de URL**
+
+{% content-ref url="ssrf-server-side-request-forgery/url-format-bypass.md" %}
+[url-format-bypass.md](ssrf-server-side-request-forgery/url-format-bypass.md)
+{% endcontent-ref %}
+
### **Envenenamiento de caché del lado del servidor**
[**De esta investigación**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
Es posible que al explotar el envenenamiento de caché del lado del servidor a través de la inyección de encabezados HTTP, se pueda inducir una vulnerabilidad de Cross-Site Scripting (XSS) almacenada. Este escenario se desarrolla cuando una aplicación no sanitiza el encabezado `Origin` para caracteres ilegales, creando una vulnerabilidad particularmente para los usuarios de Internet Explorer y Edge. Estos navegadores tratan (0x0d) como un terminador de encabezado HTTP legítimo, lo que lleva a vulnerabilidades de inyección de encabezados HTTP.
-Considere la siguiente solicitud donde se manipula el encabezado `Origin`:
+Considera la siguiente solicitud donde se manipula el encabezado `Origin`:
```
GET / HTTP/1.1
Origin: z[0x0d]Content-Type: text/html; charset=UTF-7
@@ -278,11 +284,11 @@ Para más información sobre vulnerabilidades XSS almacenadas, consulte [PortSwi
[**De esta investigación**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
-En este escenario, se observa una instancia de una página web que refleja el contenido de un encabezado HTTP personalizado sin la codificación adecuada. Específicamente, la página web refleja de vuelta el contenido incluido en un encabezado `X-User-id`, que podría incluir JavaScript malicioso, como se demuestra en el ejemplo donde el encabezado contiene una etiqueta de imagen SVG diseñada para ejecutar código JavaScript al cargarse.
+En este escenario, se observa una instancia de una página web que refleja el contenido de un encabezado HTTP personalizado sin la codificación adecuada. Específicamente, la página web refleja de vuelta el contenido incluido en un encabezado `X-User-id`, que podría incluir JavaScript malicioso, como se demuestra en el ejemplo donde el encabezado contiene una etiqueta de imagen SVG diseñada para ejecutar código JavaScript al cargar.
Las políticas de Cross-Origin Resource Sharing (CORS) permiten el envío de encabezados personalizados. Sin embargo, sin que la respuesta sea renderizada directamente por el navegador debido a las restricciones de CORS, la utilidad de tal inyección podría parecer limitada. El punto crítico surge al considerar el comportamiento de la caché del navegador. Si el encabezado `Vary: Origin` no está especificado, se vuelve posible que la respuesta maliciosa sea almacenada en caché por el navegador. Posteriormente, esta respuesta en caché podría ser renderizada directamente al navegar a la URL, eludiendo la necesidad de renderizado directo en la solicitud inicial. Este mecanismo mejora la fiabilidad del ataque al aprovechar la caché del lado del cliente.
-Para ilustrar este ataque, se proporciona un ejemplo de JavaScript, diseñado para ser ejecutado en el entorno de una página web, como a través de un JSFiddle. Este script realiza una acción simple: envía una solicitud a una URL especificada con un encabezado personalizado que contiene el JavaScript malicioso. Al completar la solicitud con éxito, intenta navegar a la URL objetivo, potencialmente activando la ejecución del script inyectado si la respuesta ha sido almacenada en caché sin un manejo adecuado del encabezado `Vary: Origin`.
+Para ilustrar este ataque, se proporciona un ejemplo de JavaScript, diseñado para ser ejecutado en el entorno de una página web, como a través de un JSFiddle. Este script realiza una acción simple: envía una solicitud a una URL especificada con un encabezado personalizado que contiene el JavaScript malicioso. Al completar con éxito la solicitud, intenta navegar a la URL objetivo, potencialmente desencadenando la ejecución del script inyectado si la respuesta ha sido almacenada en caché sin un manejo adecuado del encabezado `Vary: Origin`.
Aquí hay un desglose resumido del JavaScript utilizado para ejecutar este ataque:
```html
@@ -343,7 +349,7 @@ El rebinding DNS puede ser útil para eludir verificaciones de IP explícitas re
Si necesitas una forma rápida de abusar del rebinding DNS, puedes usar servicios como [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html).
-Para ejecutar tu propio servidor de rebinding DNS, puedes utilizar herramientas como **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Esto implica exponer tu puerto local 53/udp, crear un registro A que apunte a él (por ejemplo, ns.example.com), y crear un registro NS que apunte al subdominio A creado previamente (por ejemplo, ns.example.com). Cualquier subdominio del subdominio ns.example.com será resuelto por tu host.
+Para ejecutar tu propio servidor de rebinding DNS, puedes utilizar herramientas como **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Esto implica exponer tu puerto local 53/udp, crear un registro A que apunte a él (por ejemplo, ns.example.com), y crear un registro NS que apunte al subdominio A creado anteriormente (por ejemplo, ns.example.com). Cualquier subdominio del subdominio ns.example.com será resuelto por tu host.
También puedes explorar un servidor en funcionamiento públicamente en [http://rebind.it/singularity.html](http://rebind.it/singularity.html) para una mejor comprensión y experimentación.
@@ -353,7 +359,7 @@ El rebinding DNS a través de DNS cache flooding es otra técnica utilizada para
1. Inicialmente, cuando la víctima realiza una solicitud DNS, se responde con la dirección IP del atacante.
2. Para eludir la defensa de caché, el atacante aprovecha un service worker. El service worker inunda la caché DNS, lo que efectivamente elimina el nombre del servidor del atacante almacenado en caché.
-3. Cuando el navegador de la víctima realiza una segunda solicitud DNS, ahora se responde con la dirección IP 127.0.0.1, que normalmente se refiere al localhost.
+3. Cuando el navegador de la víctima realiza una segunda solicitud DNS, ahora se responde con la dirección IP 127.0.0.1, que típicamente se refiere al localhost.
Al inundar la caché DNS con el service worker, el atacante puede manipular el proceso de resolución DNS y forzar al navegador de la víctima a realizar una segunda solicitud, esta vez resolviendo a la dirección IP deseada por el atacante.
@@ -363,7 +369,7 @@ Otra forma de eludir la defensa de caché es utilizando múltiples direcciones I
1. El atacante configura dos registros A (o un solo registro A con dos IPs) para el mismo subdominio en el proveedor de DNS.
2. Cuando un navegador verifica estos registros, recibe ambas direcciones IP.
-3. Si el navegador decide usar primero la dirección IP del atacante, el atacante puede servir una carga útil que realice solicitudes HTTP al mismo dominio.
+3. Si el navegador decide usar la dirección IP del atacante primero, el atacante puede servir una carga útil que realiza solicitudes HTTP al mismo dominio.
4. Sin embargo, una vez que el atacante obtiene la dirección IP de la víctima, deja de responder al navegador de la víctima.
5. El navegador de la víctima, al darse cuenta de que el dominio no responde, pasa a usar la segunda dirección IP dada.
6. Al acceder a la segunda dirección IP, el navegador elude la Política de Mismo Origen (SOP), permitiendo al atacante abusar de esto y recopilar y exfiltrar información.
@@ -396,7 +402,7 @@ Puedes encontrar más información sobre las técnicas de bypass anteriores y c
* Usa TLS en servicios internos
* Solicita autenticación para acceder a datos
* Valida el encabezado Host
-* [https://wicg.github.io/private-network-access/](https://wicg.github.io/private-network-access/): Propuesta para siempre enviar una solicitud previa cuando los servidores públicos quieran acceder a servidores internos
+* [https://wicg.github.io/private-network-access/](https://wicg.github.io/private-network-access/): Propuesta para siempre enviar una solicitud previa cuando los servidores públicos quieren acceder a servidores internos
## **Herramientas**
diff --git a/pentesting-web/ssrf-server-side-request-forgery/url-format-bypass.md b/pentesting-web/ssrf-server-side-request-forgery/url-format-bypass.md
index 6f337fddf..73afc18d4 100644
--- a/pentesting-web/ssrf-server-side-request-forgery/url-format-bypass.md
+++ b/pentesting-web/ssrf-server-side-request-forgery/url-format-bypass.md
@@ -1,16 +1,16 @@
# URL Format Bypass
{% hint style="success" %}
-Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
-Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoya a HackTricks
+Support HackTricks
-* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
-* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
@@ -60,6 +60,10 @@ http://0xc0a80014/ = http://192.168.0.20
0x7f.0x00.0x00.0x01
0x0000007f.0x00000000.0x00000000.0x00000001
+# Mixed encodings bypass
+169.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, decimal and octal
+
# Add 0s bypass
127.000000000000.1
@@ -166,12 +170,14 @@ La herramienta [**recollapse**](https://github.com/0xacb/recollapse) puede gener
### Listas de palabras personalizadas automáticas
-Consulta la [**hoja de trucos para eludir la validación de URL**](https://portswigger.net/web-security/ssrf/url-validation-bypass-cheat-sheet) de portswigger donde puedes introducir el host permitido y el del atacante, y generará una lista de URLs para que pruebes. También considera si puedes usar la URL en un parámetro, en un encabezado Host o en un encabezado CORS.
+Consulta la [**hoja de trucos de elusión de validación de URL**](https://portswigger.net/web-security/ssrf/url-validation-bypass-cheat-sheet) de portswigger donde puedes introducir el host permitido y el del atacante, y generará una lista de URLs para que pruebes. También considera si puedes usar la URL en un parámetro, en un encabezado Host o en un encabezado CORS.
-### Bypass a través de redirección
+{% embed url="https://portswigger.net/web-security/ssrf/url-validation-bypass-cheat-sheet" %}
+
+### Elusión a través de redirección
Puede ser posible que el servidor esté **filtrando la solicitud original** de un SSRF **pero no** una posible **respuesta de redirección** a esa solicitud.\
-Por ejemplo, un servidor vulnerable a SSRF a través de: `url=https://www.google.com/` podría estar **filtrando el parámetro url**. Pero si usas un [servidor de python para responder con un 302](https://pastebin.com/raw/ywAUhFrv) al lugar donde deseas redirigir, podrías ser capaz de **acceder a direcciones IP filtradas** como 127.0.0.1 o incluso a **protocolos** filtrados como gopher.\
+Por ejemplo, un servidor vulnerable a SSRF a través de: `url=https://www.google.com/` podría estar **filtrando el parámetro url**. Pero si usas un [servidor python para responder con un 302](https://pastebin.com/raw/ywAUhFrv) al lugar donde deseas redirigir, podrías ser capaz de **acceder a direcciones IP filtradas** como 127.0.0.1 o incluso a **protocolos** filtrados como gopher.\
[Consulta este informe.](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
```python
#!/usr/bin/env python3
@@ -195,12 +201,16 @@ HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()
```
## Tricks Explicados
-### Truco de la barra invertida
+### Truco de barra invertida
-El _truco de la barra invertida_ explota una diferencia entre el [WHATWG URL Standard](https://url.spec.whatwg.org/#url-parsing) y [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B). Mientras que RFC3986 es un marco general para URIs, WHATWG es específico para URLs web y es adoptado por los navegadores modernos. La distinción clave radica en el reconocimiento de la barra invertida (`\`) por parte del estándar WHATWG como equivalente a la barra diagonal (`/`), lo que impacta cómo se analizan las URLs, marcando específicamente la transición del nombre de host al camino en una URL.
+El _truco de barra invertida_ explota una diferencia entre el [WHATWG URL Standard](https://url.spec.whatwg.org/#url-parsing) y [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B). Mientras que RFC3986 es un marco general para URIs, WHATWG es específico para URLs web y es adoptado por navegadores modernos. La distinción clave radica en el reconocimiento de la barra invertida (`\`) por parte del estándar WHATWG como equivalente a la barra diagonal (`/`), lo que impacta cómo se analizan las URLs, marcando específicamente la transición del nombre de host al camino en una 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)
+### Corchete cuadrado izquierdo
+
+El carácter “corchete cuadrado izquierdo” `[` en el segmento de información del usuario puede hacer que el UriComponentsBuilder de Spring devuelva un valor de nombre de host que difiere de los navegadores: [https://example.com\[@attacker.com](https://portswigger.net/url-cheat-sheet#id=1da2f627d702248b9e61cc23912d2c729e52f878)
+
### Otras Confusiones
![https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](<../../.gitbook/assets/image (600).png>)
@@ -211,6 +221,7 @@ imagen de [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-c
* [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)
+* [https://portswigger.net/research/new-crazy-payloads-in-the-url-validation-bypass-cheat-sheet](https://portswigger.net/research/new-crazy-payloads-in-the-url-validation-bypass-cheat-sheet)
{% hint style="success" %}
Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\