CVE-2020-11108
Assigned by [email protected]
The Gravity updater in Pi-hole through 4.4 allows an authenticated adversary to upload arbitrary files. This can be abused for Remote Code Execution by writing to a PHP file in the web directory. (Also, it can be used in conjunction with the sudo rule for the www-data user to escalate privileges to root.) The code error is in gravity_DownloadBlocklistFromUrl in gravity.sh.
Weaknesses (CWE)
CWE-434 — Unrestricted Upload of File with Dangerous Type
ASP file uploadASP file upload
CVSS
8.8
Base Score: 8.8/10 HIGH
Exploitability: 2.8/10
Impact: 5.9/10
Access Vector
- Availability: HIGH
- Confidentiality: HIGH
- Integrity: HIGH
Impact
- Authentication: SINGLE
- Complexity: LOW
- Vector: NETWORK
Attack Patterns (CAPEC)
CAPEC-1 — Accessing Functionality Not Properly Constrained by ACLs
In applications, particularly web applications, access to functionality is mitigated by an authorization framework. This framework maps Access Control Lists (ACLs) to elements of the application's functionality; particularly URL's for web apps. In the case that the administrator failed to specify an ACL for a particular element, an attacker may be able to access it with impunity. An attacker with the ability to access functionality not properly constrained by ACLs can obtain sensitive information and possibly compromise the entire application. Such an attacker can access resources that must be available only to users at a higher privilege level, can access management sections of the application, or can run queries for data that they otherwise not supposed to.
Typical severity: High
Prerequisites: The application must be navigable in a manner that associates elements (subsections) of the application with ACLs. The various resources, or individual URLs, must be somehow discoverable by the attacker The administrator must have forgotten to associate an ACL or has associated an inappropriately permissive ACL with a particular navigable resource.
Solutions: In a more general setting, the administrator must mark every resource besides the ones supposed to be exposed to the user as accessible by a role impossible for the user to assume. The default security setting must be to deny access and then grant access only to those resources intended by business logic.
References
http://packetstormsecurity.com/files/157623/Pi-hole-4.4-Remote-Code-Execution.html
http://packetstormsecurity.com/files/157624/Pi-hole-4.4-Remote-Code-Execution-Privilege-Escalation.html
http://packetstormsecurity.com/files/157748/Pi-Hole-heisenbergCompensator-Blocklist-OS-Command-Execution.html
http://packetstormsecurity.com/files/157839/Pi-hole-4.4.0-Remote-Code-Execution.html
https://frichetten.com/blog/cve-2020-11108-pihole-rce/
https://github.com/Frichetten/CVE-2020-11108-PoC
