> For the complete documentation index, see [llms.txt](https://docs.pabloarrabal.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pabloarrabal.com/explotacion/vulnerabilidades/open-redirect.md).

# Open Redirect

## ¿Qué es un Open Redirect?

El Open Redirect es una vulnerabilidad que puede ser explotada por los atacantes para dirigir a los usuarios a sitios web maliciosos. Esta vulnerabilidad se produce cuando una aplicación web permite a los atacantes manipular la URL de una página de redireccionamiento para redirigir al usuario a un sitio web malicioso.

## Escenario 1

En este caso, tenemos una web, la cual tiene una nueva versión, y en la version antigua los desarrolladores han puesto un botón para acceder a la web nueva, tras pulsarlo y capturar la petición esto es lo que vemos:

<figure><img src="https://271831323-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbbtAYwqVMCAFE0gptbZ0%2Fuploads%2FbmngTIWTPXF2JQWB9zol%2Fimage.png?alt=media&amp;token=453a890d-7cd1-490c-8a83-a8df59023eb5" alt=""><figcaption></figcaption></figure>

En este caso, la petición que se tramita por POST, tiene un parámetro, el cual lleva a la nueva web. Si nosotros lo cambiamos, nos redirige a la web que le pongamos. Pues con esto ya tendríamos un Open Redirect

<figure><img src="https://271831323-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbbtAYwqVMCAFE0gptbZ0%2Fuploads%2FzvO4WPUJnzqbCBSTQAVi%2Fimage.png?alt=media&amp;token=5aeeb95f-88f4-4942-83ba-dedaf9bfee00" alt=""><figcaption></figcaption></figure>

## Escenario 2 (Bypassing)

Este caso, tiene el mismo caso que el [#escenario-1](#escenario-1 "mention") pero, en este, no se nos permite usar puntos en el redirect como medida disuasoria:

<figure><img src="https://271831323-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbbtAYwqVMCAFE0gptbZ0%2Fuploads%2FaLT3UGWK1a5jE5NQwJLN%2Fimage.png?alt=media&amp;token=bdd327f9-534f-489d-9426-53e21e849602" alt=""><figcaption></figcaption></figure>

Pues en este caso, lo que debemos de hacer es hacer un URL-Encode del `.` y volver hacer un URL-Encode del `%`:

* Petición Base

```
POST /redirect?newurl=https://google.es
```

* Petición con el `.` URL-Encoded

```
POST /redirect?newurl=https://google%2ees
```

* Petición con el `%` del URL-Encoded del `.` con URL-Encoded

```
POST /redirect?newurl=https://google%252ees
```
