Skip to content

Add CVE-2012-10018 detection template#14479

Merged
pussycat0x merged 11 commits intoprojectdiscovery:mainfrom
KrE80r:add-cve-2012-10018
Jan 8, 2026
Merged

Add CVE-2012-10018 detection template#14479
pussycat0x merged 11 commits intoprojectdiscovery:mainfrom
KrE80r:add-cve-2012-10018

Conversation

@KrE80r
Copy link
Copy Markdown
Contributor

@KrE80r KrE80r commented Dec 20, 2025

/claim 14478

Summary

Adds nuclei template for detecting CVE-2012-10018 (WordPress Mapplic/Mapplic Lite Stored XSS via SVG file upload).

Vulnerable environment shared privately

Testing

  • Syntax validation: passed
  • Manual testing: passed

Test Evidence

Validated against WordPress 5.5 + Mapplic Lite 1.0 in Docker environment (shared privately).

image

KrE80r and others added 2 commits December 20, 2025 16:21
- Use mapplic-mapdata parameter (raw JSON editor) instead of visual form fields
- Inject complete JSON structure matching Packet Storm exploit
- Detect stored URL in data-mapdata attribute
- Verify mapplic-rawedit interface presence
- Update description to clarify SSRF + XSS exploitation chain
- Fix matchers to detect actual vulnerability manifestation
@DhiyaneshGeek
Copy link
Copy Markdown
Member

Hi @KrE80r

i don't see any XSS being triggered, i request you to update the POC accordingly.

@KrE80r
Copy link
Copy Markdown
Contributor Author

KrE80r commented Dec 22, 2025

Thanks @DhiyaneshGeek for the feedback.

You're right - the original template only proved URL injection, not actual XSS execution.

I've added:

  • headless/cves/2012/CVE-2012-10018.yaml - uses waitdialog to detect JavaScript alert
  • helpers/payloads/CVE-2012-10018.svg - XSS payload hosted in repo

To test:

nuclei -t headless/cves/2012/CVE-2012-10018.yaml -u http://target \
    -var username=admin -var password=admin -headless

The template references the SVG from raw.githubusercontent.com once merged, making it plug-and-play.
The HTTP template detects the injection vector. The headless template confirms XSS execution.

@DhiyaneshGeek
Copy link
Copy Markdown
Member

Hi @KrE80r

Kindly update the template only with HTTP protocol only and remove the headless

Also add matcher for each of the request with flow condition.

@KrE80r
Copy link
Copy Markdown
Contributor Author

KrE80r commented Dec 24, 2025

@DhiyaneshGeek done updated the PR

@DhiyaneshGeek
Copy link
Copy Markdown
Member

Hi @KrE80r

Kindly use this as reference https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2022/CVE-2022-1029.yaml

you should be using internal: true

Hope this helps

@KrE80r
Copy link
Copy Markdown
Contributor Author

KrE80r commented Dec 24, 2025

thanks @DhiyaneshGeek added

@DhiyaneshGeek
Copy link
Copy Markdown
Member

DhiyaneshGeek commented Dec 24, 2025

Hi @KrE80r

  • cookie-reuse is depreciated
  • use DSL matcher on all request

kindly update the same

If the XSS is not triggered the submission will not be accepted

Thanks

- Replace cookie-reuse with flow control
- Convert all matchers to DSL format
- Add XSS payload detection in mapplic-mapdata field
@KrE80r
Copy link
Copy Markdown
Contributor Author

KrE80r commented Dec 24, 2025

Thank you @DhiyaneshGeek for the feedback. I've updated the template to:

  • Remove deprecated cookie-reuse
  • Use DSL matchers on all requests
  • Add internal: true on intermediate steps

Regarding XSS trigger detection:

The original CVE describes a specific attack chain: an authenticated user injects an arbitrary URL pointing to a remote SVG file. When the map is viewed, jQuery .load() fetches that SVG and inserts it into the DOM, executing any embedded JavaScript.

To properly detect this vulnerability, the template would need to:

  1. Inject a URL (e.g., http://attacker.com/malicious.svg)
  2. Have a browser fetch and render the SVG
  3. Verify JS execution

This requires headless mode since HTTP-only templates cannot simulate browser behavior (fetching external SVG, DOM insertion, script execution).

The current HTTP-only template demonstrates stored XSS via the mapplic-mapdata title field (payload reflected in response), which proves unsanitized input handling but tests a different vector than the CVE describes.

Question: Is there an acceptable approach for this CVE within HTTP-only constraints, or would a headless template be more appropriate here? I want to ensure the template accurately represents the vulnerability.

@DhiyaneshGeek DhiyaneshGeek added Done Ready to merge and removed waiting for more info labels Jan 6, 2026
@DhiyaneshGeek
Copy link
Copy Markdown
Member

DhiyaneshGeek commented Jan 6, 2026

Hi @KrE80r

i have validated locally

                     __     _
   ____  __  _______/ /__  (_)
  / __ \/ / / / ___/ / _ \/ /
 / / / / /_/ / /__/ /  __/ /
/_/ /_/\__,_/\___/_/\___/_/   v3.6.2

		projectdiscovery.io

[INF] Current nuclei version: v3.6.2 (latest)
[INF] Current nuclei-templates version: v10.3.6 (latest)
[INF] New templates added in latest release: 176
[INF] Templates loaded for current scan: 1
[WRN] Loading 1 unsigned templates for scan. Use with caution.
[INF] Targets loaded for current scan: 1
[CVE-2012-10018] WordPress Mapplic <= 6.1 / Mapplic Lite <= 1.0 - Authenticated Stored XSS via SVG File Upload (@kre80r) [high]
[CVE-2012-10018] [http] [high] http://0.0.0.0:8088/wp-admin/post.php?post=15&action=edit
image

@pussycat0x pussycat0x merged commit e28067d into projectdiscovery:main Jan 8, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CVE-2012-10018 - Mapplic & Mapplic Lite - Server Side Request Forgery & Stored XSS 💰

3 participants