Detection rules › Sublime MQL
Suspected WordPress abuse with cross-site scripting (XSS) indicators
Detects inbound messages from likely compromised WordPress sites that exhibit indicators of cross-site scripting (XSS) attempts. The rule identifies potential script injection patterns within message bodies and/or subjects containing multiple suspicious JavaScript-related keywords or indicators.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Malware/Ransomware, Credential Phishing |
| Tactics and techniques | Scripting, Impersonation: Brand, Social engineering |
Event coverage
| Message attribute |
|---|
| body.current_thread |
| sender.email |
| subject |
| type |
Rule body MQL
type.inbound
and sender.email.local_part == "wordpress"
and (
regex.icontains(body.current_thread.text,
'document\.createElement.{0,9}script'
)
or 2 of (
strings.icount(subject.subject, "script") > 1,
strings.count(subject.subject, '%') >= 4,
strings.count(subject.subject, '\') >= 3,
strings.count(subject.subject, "/") >= 3,
strings.icontains(subject.subject, "xss"),
strings.contains(subject.subject, "CharCode"),
strings.contains(subject.subject, 'onload'),
strings.contains(subject.subject, 'fetch('),
strings.contains(subject.subject, "OnFocus="),
strings.contains(subject.subject, 'javascript:fetch'),
strings.icontains(subject.subject, "src="),
strings.icontains(subject.subject, "iframe"),
strings.icontains(subject.subject, "embed"),
strings.icontains(subject.subject, "object"),
strings.icontains(subject.subject, "onerror"),
strings.icontains(subject.subject, "onclick"),
strings.icontains(subject.subject, "onmouseover"),
strings.icontains(subject.subject, "onmouseout"),
strings.icontains(subject.subject, "onkeydown"),
strings.icontains(subject.subject, "onkeypress"),
strings.icontains(subject.subject, "onkeyup"),
strings.icontains(subject.subject, "onchange"),
strings.icontains(subject.subject, "oninput"),
strings.icontains(subject.subject, "onsubmit"),
regex.icontains(subject.subject, 'eval\b'),
strings.icontains(subject.subject, "alert"),
strings.icontains(subject.subject, "document.cookie"),
strings.icontains(subject.subject, "document.write"),
strings.icontains(subject.subject, "window.location"),
strings.icontains(subject.subject, "setTimeout"),
strings.icontains(subject.subject, "setInterval"),
strings.icontains(subject.subject, "atob"),
strings.icontains(subject.subject, "innerHTML"),
strings.icontains(subject.subject, "outerHTML"),
strings.icontains(subject.subject, "XMLHttpRequest"),
regex.icontains(subject.subject, 'import\b'),
strings.icontains(subject.subject, "execCommand")
)
)
Detection logic
Scope: inbound message.
Detects inbound messages from likely compromised WordPress sites that exhibit indicators of cross-site scripting (XSS) attempts. The rule identifies potential script injection patterns within message bodies and/or subjects containing multiple suspicious JavaScript-related keywords or indicators.
- inbound message
- sender.email.local_part is 'wordpress'
any of:
- body.current_thread.text matches 'document\\.createElement.{0,9}script'
at least 2 of:
- strings.icount(subject.subject, 'script') > 1
- strings.count(subject.subject, '%') ≥ 4
- strings.count(subject.subject, '\\') ≥ 3
- strings.count(subject.subject, '/') ≥ 3
- subject.subject contains 'xss'
- subject.subject contains 'CharCode'
- subject.subject contains 'onload'
- subject.subject contains 'fetch('
- subject.subject contains 'OnFocus='
- subject.subject contains 'javascript:fetch'
- subject.subject contains 'src='
- subject.subject contains 'iframe'
- subject.subject contains 'embed'
- subject.subject contains 'object'
- subject.subject contains 'onerror'
- subject.subject contains 'onclick'
- subject.subject contains 'onmouseover'
- subject.subject contains 'onmouseout'
- subject.subject contains 'onkeydown'
- subject.subject contains 'onkeypress'
- subject.subject contains 'onkeyup'
- subject.subject contains 'onchange'
- subject.subject contains 'oninput'
- subject.subject contains 'onsubmit'
- subject.subject matches 'eval\\b'
- subject.subject contains 'alert'
- subject.subject contains 'document.cookie'
- subject.subject contains 'document.write'
- subject.subject contains 'window.location'
- subject.subject contains 'setTimeout'
- subject.subject contains 'setInterval'
- subject.subject contains 'atob'
- subject.subject contains 'innerHTML'
- subject.subject contains 'outerHTML'
- subject.subject contains 'XMLHttpRequest'
- subject.subject matches 'import\\b'
- subject.subject contains 'execCommand'
Inspects: body.current_thread.text, sender.email.local_part, subject.subject, type.inbound. Sensors: regex.icontains, strings.contains, strings.count, strings.icontains, strings.icount.
Indicators matched (35)
| Field | Match | Value |
|---|---|---|
sender.email.local_part | equals | wordpress |
regex.icontains | regex | document\.createElement.{0,9}script |
strings.icontains | substring | xss |
strings.contains | substring | CharCode |
strings.contains | substring | onload |
strings.contains | substring | fetch( |
strings.contains | substring | OnFocus= |
strings.contains | substring | javascript:fetch |
strings.icontains | substring | src= |
strings.icontains | substring | iframe |
strings.icontains | substring | embed |
strings.icontains | substring | object |
23 more
strings.icontains | substring | onerror |
strings.icontains | substring | onclick |
strings.icontains | substring | onmouseover |
strings.icontains | substring | onmouseout |
strings.icontains | substring | onkeydown |
strings.icontains | substring | onkeypress |
strings.icontains | substring | onkeyup |
strings.icontains | substring | onchange |
strings.icontains | substring | oninput |
strings.icontains | substring | onsubmit |
regex.icontains | regex | eval\b |
strings.icontains | substring | alert |
strings.icontains | substring | document.cookie |
strings.icontains | substring | document.write |
strings.icontains | substring | window.location |
strings.icontains | substring | setTimeout |
strings.icontains | substring | setInterval |
strings.icontains | substring | atob |
strings.icontains | substring | innerHTML |
strings.icontains | substring | outerHTML |
strings.icontains | substring | XMLHttpRequest |
regex.icontains | regex | import\b |
strings.icontains | substring | execCommand |