
TL;DR
Krytyczna luka RCE w Oracle WebLogic (CVE‑2019‑2725) umożliwia zdalne, nieautoryzowane wykonanie kodu przez podatne endpointy SOAP/WS‑AT (/_async/AsyncResponseService, /wls-wsat/CoordinatorPortType). Atak bazuje na niebezpiecznej deserializacji (java.beans.XMLDecoder). Najczęstsze skutki: instalacja webshelli (JSP), kryptokoparki (XMRig) lub ransomware (REvil/Sodinokibi). Główne detekcje: nietypowe żądania POST do ww. ścieżek + procesy powłokowe z rodzicem java/java.exe na serwerze aplikacyjnym. Natychmiastowe działania: izolacja hosta, wyszukanie webshelli w katalogach WebLogic, aktualizacja do wersji naprawczej i segmentacja sieci.
Krótka definicja techniczna
CVE‑2019‑2725 to błąd deserializacji w komponencie Web Services Oracle WebLogic Server, który pozwala zdalnemu napastnikowi (bez uwierzytelnienia) wysłać spreparowany SOAP/XML i uruchomić dowolny kod po stronie serwera. Podatne są instalacje z włączonymi archiwami wls9_async_response.war i/lub wls-wsat.war, a typowe wektory to żądania POST do endpointów asynchronicznych i WS‑AtomicTransaction.
Gdzie występuje / przykłady platform
- Windows / Linux (on‑prem): klasyczne wdrożenia WebLogic (AdminServer/ManagedServer).
- AD: integracje SSO/LDAP po kompromitacji mogą posłużyć do lateral movement.
- AWS: EC2/Autoscaling; często za ALB/WAF (logi CloudWatch/ALB).
- Azure / GCP: VM Scale Sets/Compute Engine; analogicznie za load balancerami.
- Kubernetes: WebLogic Operator (konteneryzacja); ruch przychodzi przez Ingress/Service.
- ESXi: WebLogic jako VM-y; artefakty systemowe na datastore.
- M365: brak bezpośredniego wpływu — istotne tylko pod kątem tożsamości/poczty w dalszych fazach.
Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
- Mechanizm ataku: napastnik wysyła żądanie SOAP/XML zawierające obiekt do przetworzenia przez XMLDecoder, co prowadzi do wykonania łańcucha gadżetów Javy i uruchomienia poleceń systemowych w kontekście procesu JVM WebLogic. Najczęściej wykorzystywane endpointy: /_async/AsyncResponseService (wls9‑async) oraz /wls-wsat/* (WS‑AT).
- Skutki: pełne przejęcie serwera (pre‑auth RCE). Następnie typowe TTP: pobranie ładunku (T1105), uruchomienie interpreterów (T1059), zainstalowanie webshella JSP dla stałego dostępu (T1505.003).
- Dlaczego skuteczna: brak uwierzytelniania, łatwość masowego skanowania/wykorzystania, popularność WebLogic w środowiskach krytycznych. Ataki obserwowano m.in. w kampanii ransomware REvil/Sodinokibi oraz w botnecie Muhstik kopiącym Monero.
- Status i poprawki: Oracle wydał poza-cykliczny alert 26.04.2019 z poprawkami; luka figuruje w katalogu CISA KEV.
Artefakty i logi
| Web/proxy/WAF | Access logs (Nginx/IIS/WebLogic HTTP Server) | cs-uri-stem, cs-method, status, request_body | POST na /_async/AsyncResponseService, `/wls-wsat/(CoordinatorPortType | RegistrationService |
| Windows Security | Process Creation | 4688 | Rodzic java.exe uruchamia cmd.exe/powershell.exe | Korelować z logami aplikacji. |
| Sysmon | Process Create, Network, File Create | 1, 3, 11, (13) | ParentImage=*\java.exe i dziecko cmd.exe/powershell.exe/wget/curl ; nowe JSP w katalogach aplikacji | |
| Linux (auditd) | SYSCALL=execve | — | exe = /usr/bin/bash, /bin/sh z PPID java | |
| WebLogic | Serwerowe logi (access.log, AdminServer.log) | — | SOAP Faults/500 na ww. endpointach, wyjątki deserializacji | |
| AWS (ALB/WAF) | CloudWatch/ALB access logs | request_uri | Te same ścieżki i metoda POST, wysoka liczba 400/500 | CloudTrail nie rejestruje ruchu HTTP do aplikacji — używaj ALB/WAF/Flow Logs. |
| K8s audit | API Server audit log | verb=create, resource=pods | Gdy WebLogic w K8s: nieoczekiwane pody/zmiany ConfigMap po RCE | [Zależne od architektury] |
| M365 | — | — | [brak danych / nie dotyczy bezpośrednio] |
Detekcja (praktyczne reguły)
Sigma — sonda na żądania do podatnych endpointów
title: Oracle WebLogic CVE-2019-2725 Probe id: 9c5c0f93-1b76-4a8f-9b7c-fb4a2db1c2725 status: experimental description: Detects HTTP POST to WebLogic async/WS-AT endpoints and XMLDecoder markers logsource: category: webserver product: apache detection: sel_uri: cs-method: POST cs-uri-stem|contains: - "/_async/AsyncResponseService" - "/wls-wsat/CoordinatorPortType" - "/wls-wsat/RegistrationService" - "/wls-wsat/ParticipantPortType" sel_body: request_body|contains: - "java.beans.XMLDecoder" - "<objectwp-block-heading">Sigma — potomne powłoki z procesu Java title: Java Spawns Shell (WebLogic RCE aftermath) id: 0a0a7f5a-0e7a-4d1a-bb1e-2cfa7c2725ab status: stable logsource: product: windows category: process_creation detection: parent: ParentImage|endswith: '\java.exe' child: Image|endswith: - '\cmd.exe' - '\powershell.exe' condition: parent and child fields: - CommandLine - ParentCommandLine falsepositives: - Rzadkie skrypty administracyjne level: high tags: - attack.T1059 - attack.T1190Splunk (SPL)
Web/proxy:
index=web (sourcetype=access_combined OR sourcetype=iis) method=POST uri_path IN ("/_async/AsyncResponseService", "/wls-wsat/CoordinatorPortType","/wls-wsat/RegistrationService","/wls-wsat/ParticipantPortType") | stats count by src, uri_path, status, useragentProcesy Windows/Sysmon:
(index=wineventlog EventCode=4688 OR (index=sysmon EventCode=1)) ParentImage="*\\java.exe" (Image="*\\cmd.exe" OR Image="*\\powershell.exe" OR Image="*\\bash.exe") | table _time host ParentImage Image CommandLine ParentCommandLineKQL (Microsoft Defender XDR)
// Potomna powłoka po WebLogic (Windows) DeviceProcessEvents | where Timestamp > ago(7d) | where InitiatingProcessFileName =~ "java.exe" | where FileName in~ ("cmd.exe","powershell.exe") | project Timestamp, DeviceName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLineCloudWatch Logs Insights (ALB/WAF)
-- ALB access logs: podejrzane ścieżki WebLogic fields @timestamp, elb, client_ip, request_uri, target_status_code, user_agent | filter request_uri like /_async\\/AsyncResponseService|wls-wsat\\/(CoordinatorPortType|RegistrationService|ParticipantPortType)/ | sort @timestamp descElastic / EQL
// Java -> shell process where event.type == "start" and process.parent.name : "java*" and process.name in ("cmd.exe","powershell.exe","bash","sh","wget","curl")Heurystyki / korelacje
- Korelacja warstwowa: (1) POST do /_async/... lub /wls-wsat/... i (2) w ≤2 min pojawia się java → cmd/powershell/bash i/lub (3) nowy plik .jsp w webroot.
- Artefakty utrwalenia: webshell w katalogach tymczasowych/aplikacyjnych WebLogic (często podkatalogi _WL_internal lub bea_wls_internal).
- Anomalie sieciowe: niespodziewane wyjścia z serwera aplikacyjnego do Internetu (pobranie ładunku/XMRig).
- Ransomware chain: wektor T1190 → T1059 → T1105/T1505.003 → szyfrowanie (T1486), widoczne w kampaniach REvil.
False positives / tuning
- Legalne implementacje WS‑AT/async SOAP (rzadkie) — filtruj po metodzie POST, wzorcach URI i treści body (XMLDecoder).
- Skrypty administracyjne uruchamiające powłokę z Javy — whitelisting po ścieżkach i podpisach JAR/serwisu.
- Testy skanerów VA — rozpoznawalne po user‑agentach i niskiej częstotliwości.
Playbook reagowania (IR)
- Identyfikacja: potwierdź trafienia z §7; wylistuj ostatnie POST na podatne ścieżki i błędy 500/SOAP Fault.
- Izolacja: odłącz host (lub usługę) od sieci produkcyjnej/Internetu.
- Triada forensyczna:
- Zrzut procesów JVM, timeline plików aplikacji (szukaj nowych *.jsp), rejestry/konfiguracje usług.
- Artefakty Sysmon (1/3/11) i 4688.
- Szukaj webshelli/JSP: w katalogach aplikacji i tymczasowych WebLogic (_WL_internal, bea_wls_internal).
- Zabij i usuń: wstrzymaj procesy podrzędne (cmd/powershell/bash), usuń webshell, wyczyść harmonogramy/usługi utworzone przez napastnika.
- Patch & harden: zastosuj poprawki Oracle i konfiguracje „secured production mode”, upewnij się iż serwer nie jest bezpośrednio wystawiony do Internetu; wymuś WAF/IPS.
- Hunting wsteczny (30–90 dni): IOC‑driven search po ścieżkach/UA/źródłach IP; sprawdź transfery do domen hostingowych koparek/ransomware.
- Lessons learned: segmentacja i zasada „deny by default” dla ruchu do AdminServer.
Przykłady z kampanii / case studies
- REvil/Sodinokibi (kwiecień–maj 2019): wykorzystanie nowo ujawnionej luki WebLogic jako wektora początkowego; Oracle opublikował patch 26.04.2019.
- Muhstik botnet (kwiecień 2019): w ciągu dni od ujawnienia — masowe infekcje kryptokoparką i DDoS przez CVE‑2019‑2725.
- Kryptokoparki (czerwiec 2019): Trend Micro: łańcuch z wykorzystaniem certyfikatów X.509 do zaciemniania, finalnie XMRig.
- KEV/CISA: CVE pozostaje w katalogu znanych, wykorzystywanych podatności (KEV) — traktuj priorytetowo.
Lab (bezpieczne testy)
Uwaga: poniższe testy nie zawierają payloadów eksploatujących i służą wyłącznie do weryfikacji detekcji.
- Generowanie ruchu HTTP do podatnych ścieżek (bez RCE):
- Symulacja „Java → powłoka” (dla EDR/Sysmon):
- ALB/WAF logi (CloudWatch): odpal curl jak wyżej przez publiczny endpoint testowy; uruchom zapytanie §7.5 i sprawdź, czy wykrywa ścieżki.
Mapowania (Mitigations, Powiązane techniki)
Mitigations (ATT&CK)
- M1051 — Update Software: wdrażaj poprawki Oracle CPU i utrzymuj łańcuch zależności Javy/serwera aktualny.
- M1031 — Network Intrusion Prevention: WAF/IPS z sygnaturami na CVE‑2019‑2725.
- M1030 — Network Segmentation: izolacja serwerów aplikacyjnych i kanałów administracyjnych.
Powiązane techniki ATT&CK
T1190 — Exploit Public‑Facing Application
Wektor początkowy (Initial Access) — żądania POST do endpointów SOAP/WS‑AT WebLogic.
T1059.003 — Windows Command Shell
Uruchomienie cmd.exe przez java.exe po udanym RCE.
T1059.004 — Unix Shell
/bin/sh/bash inicjowane przez JVM na Linux/Unix.
T1505.003 — Web Shell
Umieszczenie JSP w webroot dla utrwalenia.
T1105 — Ingress Tool Transfer
Pobranie XMRig/ransomware po RCE. (odniesienia ogólne do techniki)
Źródła / dalsza literatura
- Oracle Security Alert — CVE‑2019‑2725 (opis, ryzyko, wersje) (Oracle)
- NVD — CVE‑2019‑2725 (CVSS, wersje dotknięte) (NVD)
- Tenable (opisy endpointów i deserializacji) (Tenable®)
- Cisco Talos — Sodinokibi via WebLogic (timeline) (Cisco Talos Blog)
- Unit 42 — Muhstik wykorzystuje CVE‑2019‑2725 (kryptokoparka/DDoS) (Unit 42)
- Trend Micro — cryptomining po CVE‑2019‑2725 (www.trendmicro.com)
- CISA — KEV Catalog (występowanie CVE) (CISA)
- MITRE ATT&CK — T1190/T1059/T1505.003 (definicje, wersja v18) (MITRE ATT&CK)
- Oracle — zabezpieczanie środowiska (secured production mode) (Oracle Documentation)
- ZDI — analiza webshelli i ścieżek _WL_internal/bea_wls_internal (kontekst utrwalenia) (Zero Day Initiative)
Checklisty dla SOC / CISO
SOC (operacyjne)
- Alerting na POST do /_async/* i /wls-wsat/* + korelacja z java → shell.
- WAF/IPS sygnatury aktywne dla CVE‑2019‑2725.
- Hunting webshelli JSP w katalogach aplikacji/tymczasowych.
- Blokada egress z serwerów aplikacyjnych do Internetu (allow‑list).
- Telemetria Sysmon (1/3/11/13) i pełny 4688 na hostach WebLogic.
CISO (strategiczne)
- Priorytety patchowania (M1051) — potwierdzony KEV.
- Segmentacja (M1030) i oddzielne strefy dla AdminServer.
- Wymóg WAF/IPS dla wszystkich usług publicznych (M1031).
- Zakaz bezpośredniego wystawiania WebLogic do Internetu (proxy/WAF).
- Regularne testy IR pod kątem webshelli i koparek.














