
Co znajdziesz w tym artykule?
- 1 TL;DR
- 2 Krótka definicja techniczna
- 3 Gdzie występuje / przykłady platform
- 4 Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
- 5 Artefakty i logi
- 6 Detekcja (praktyczne reguły)
- 7 Heurystyki / korelacje
- 8 False positives / tuning
- 9 Playbook reagowania (IR)
- 10 Przykłady z kampanii / case studies
- 11 Lab (bezpieczne testy)
- 12 Mapowania (Mitigations, Powiązane techniki)
- 13 Źródła / dalsza literatura
- 14 Checklisty dla SOC / CISO
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
| Źródło | Artefakt/Log | EID / Pole | Co obserwować | Uwagi |
|---|---|---|---|---|
| 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"
- "<object class="
condition: sel_uri or (sel_uri and sel_body)
fields:
- src_ip
- cs-host
- cs-uri-stem
- user_agent
falsepositives:
- Legitymne WS-AT (rzadkie)
level: high
tags:
- attack.T1190
(Ścieżki i kontekst ataku potwierdzone w opisach Tenable/Oracle).
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.T1190
Splunk (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, useragent
Procesy 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 ParentCommandLine
KQL (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, InitiatingProcessCommandLine
CloudWatch 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 desc
Elastic / 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/bashi/lub (3) nowy plik.jspw webroot. - Artefakty utrwalenia: webshell w katalogach tymczasowych/aplikacyjnych WebLogic (często podkatalogi
_WL_internallubbea_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ę że 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 sondowania endpointów (status 404/405/SOAP Fault)
curl -s -o /dev/null -w "%{http_code}\n" -X POST http://<weblogic>/wls-wsat/CoordinatorPortType
curl -s -o /dev/null -w "%{http_code}\n" -X POST http://<weblogic>/_async/AsyncResponseService
- Symulacja „Java → powłoka” (dla EDR/Sysmon):
# Linux: uruchom prosty program Java, który odpala /bin/sh -c 'echo test' (benign)
# Windows: analogicznie uruchom "java" jako rodzic prostego procesu cmd /c echo
# (wygeneruje zdarzenia: Sysmon 1, Windows 4688)
- ALB/WAF logi (CloudWatch): odpal
curljak 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 zjava → 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
4688na 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.