💡Modificación automática
Última actualización
Última actualización
Es posible que queramos aplicar ciertas modificaciones a todas las solicitudes HTTP salientes o a todas las respuestas HTTP entrantes en determinadas situaciones. En estos casos, podemos utilizar modificaciones automáticas basadas en reglas que establezcamos, de modo que las herramientas de proxy web las apliquen automáticamente.
Comencemos con un ejemplo de modificación automática de solicitudes. Podemos elegir que coincida con cualquier texto dentro de nuestras solicitudes, ya sea en el encabezado de la solicitud o en el cuerpo de la solicitud, y luego reemplazarlos con un texto diferente. A modo de demostración, reemplacemos nuestro User-Agent
por HackTheBox Agent 1.0
, lo que puede resultar útil en casos en los que podamos estar tratando con filtros que bloqueen ciertos agentes de usuario.
Podemos ir a ( Proxy > Options > Match and Replace
) y hacer click en Add
en Burp. Como se muestra en la siguiente captura de pantalla, configuraremos las siguientes opciones:
| Ya que el cambio que queremos realizar será en el encabezado de la solicitud y no en el cuerpo de la misma. |
| El patrón de expresión regular que coincide con toda la línea dentro de el |
| Este es el valor que reemplazará la línea que hicimos coincidir arriba. |
| No sabemos la cadena de agente de usuario exacta que queremos reemplazar, por lo que usaremos expresiones regulares para que coincida con cualquier valor que coincida con el patrón que especificamos anteriormente. |
Una vez que ingresamos las opciones anteriores y hacemos clic en Ok
, se agregará y habilitará nuestra nueva opción Coincidir y reemplazar y comenzará a reemplazar automáticamente el encabezado User-Agent
en nuestras solicitudes con nuestro nuevo User-Agent. Podemos verificarlo visitando cualquier sitio web utilizando el navegador Burp preconfigurado y revisando la solicitud interceptada. Veremos que nuestro User-Agent ha sido reemplazado automáticamente:
ZAP tiene una función similar llamada Replacer
, a la que podemos acceder presionando [ CTRL+R
] o haciendo clic en Replacer
en el menú de opciones de ZAP. Es bastante similar a lo que hicimos anteriormente, por lo que podemos hacer clic en Add
y agregar las mismas opciones que usamos anteriormente:
Description
: HTB User-Agent
Match Type
: Request Header (will add if not present)
Match String
: User-Agent
- Podemos seleccionar el encabezado que queramos del menú desplegable y ZAP reemplazará su valor
Replacement String
: HackTheBox Agent 1.0
Enable
: Check
ZAP también tiene la función Request Header String
que podemos usar con un patrón Regex.
ZAP también ofrece la opción de configurar el Initiators
, al que podemos acceder haciendo clic en la otra pestaña de las ventanas que se muestran arriba. Los iniciadores nos permiten seleccionar dónde se aplicará nuestra opción Replacer
. Mantendremos la opción predeterminada de aplicar en todas partes: Apply to all HTTP(S) messages
Ahora podemos habilitar la intercepción de solicitudes presionando [ CTRL+B
], luego podemos visitar cualquier página en el navegador ZAP preconfigurado:
El mismo concepto se puede utilizar también con respuestas HTTP. En la sección anterior, es posible que hayas notado que cuando interceptamos la respuesta, las modificaciones que hicimos en el campo IP
eran temporales y no se aplicaban cuando actualizábamos la página a menos que interceptáramos la respuesta y las volviéramos a agregar. Para resolver esto, podemos automatizar la modificación de la respuesta de manera similar a lo que hicimos anteriormente para habilitar automáticamente cualquier carácter en el campo IP
para facilitar la inyección de comandos.
Regresemos a ( Proxy>Options>Match and Replace
) en Burp para agregar otra regla. Esta vez usaremos el tipo de Response body
ya que el cambio que queremos hacer existe en el cuerpo de la respuesta y no en sus encabezados. En este caso, no tenemos que usar regex ya que conocemos la cadena exacta que queremos reemplazar, aunque es posible usar regex para hacer lo mismo si lo preferimos.
Type
: Response body
Match
: type="number"
Replace
: type="text"
Regex match
: False
Ahora, una vez que actualizamos la página con [ CTRL+SHIFT+R
], veremos que podemos agregar cualquier entrada al campo de entrada, y esto también debería persistir entre actualizaciones de página:
Ahora podemos hacer clic en Ping
y nuestra inyección de comando debería funcionar sin interceptar ni modificar la solicitud.