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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-44228 | Kitploit
도구/GitHubGitHub/helsecert/cve-2021-44228
Vulnerability AnalysisSupply Chain SecurityLearning & EducationIncident ResponseCurated ResourcesLog Analysis
GitHubhelsecert/cve-2021-44228

CVE-2021-44228

저장소 보기
114년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Log4j 취약점

업데이트 2021.12.19: Log4j에서 계속해서 새로운 취약점과 이를 악용하는 새로운 방법이 발견되고 있습니다. 우리는 git 저장소에 세 가지 마인드맵을 추가했습니다. 각각 취약한 Log4j 버전, 취약 여부 확인 방법, 각 취약점 완화 방법을 설명합니다.

권장 사항

Log4j v2.x:

  • Log4j 2.x를 사용하는 소프트웨어 식별

  • Log4j 취약점 완화

    • Log4j를 사용하는 소프트웨어를 Log4j 2.17.0을 사용하는 버전으로 업데이트

    위의 방법이 불가능한 경우

    • CVE-2021-44228 및 CVE-2021-45046에 대한 완화 조치가 수행되었는지 확인하십시오. 단, 이 경우 DoS에 취약합니다
    • 시스템이 특히 중요한 경우 Log4j2 구성에서 Pattern Layouts의 Context Lookups를 확인하는 것을 고려하십시오.

Log4j v1.x:

  • Log4j 1.x를 사용하는 소프트웨어 식별

  • 조직에서 Log4j 1.x를 사용하는 경우 공급업체와 협의하여 다음을 요구하십시오.

    • Log4j 2.x로 업그레이드
    • 또는 로깅 관련 다른 라이브러리로 전환

취약점들

CVE-2021-44228

Log4j 취약점 중 가장 큰 늑대. ${jndi:ldap://\<공격코드>/a} 문자열 변형이 Log4j에 의해 로깅될 때 취약점이 악용됩니다. CVSS 10.0, RCE.

CVE-2021-45046

CVE-2021-44228만큼 크지는 않지만 마찬가지로 심각함. Log4j의 비표준 설정 필요. CVSS 9.0, RCE 및 DoS.

CVE-2021-45105

CVE-2021-44228만큼 크지는 않으며 약간 덜 심각함. CVSS 7.5, DoS

CVE-2021-4104

Log4j 1.x에만 해당. Log4j가 JMSAppender를 사용해야 함. CVSS 6.6, RCE 악용하려면 Log4j가 JMSAppender를 사용해야 함. JMSAppender가 직접 구성되거나(드문 경우) 공격자가 Log4j 구성에 추가하는 경우. 또한 공격자는 JMSAppender 구성을 변경할 수 있는 권한이 있어야 함. 이 경우 공격자는 일반적으로 이미 시스템에 접근 권한이 있음. 따라서 이 취약점은 관련성이 낮은 것으로 간주됨.

CVE-2019-17571

Log4j 1.x에만 해당. Log4j가 SocketServer를 사용해야 함. CVSS 9.8, RCE 해당 소켓에 네트워크 접근이 가능한 공격자에게 코드 실행 가능성을 제공함. 악용 코드는 공개적으로 이용 가능.

Java 8의 경우 Log4j v. 2.17.0이 최신 버전입니다. 위의 모든 취약점을 완화합니다.

버전 2.16.0은 가장 심각한 취약점을 완화합니다.

Java 7의 경우 Log4j가 버전 2.12.2로 제공됩니다. 이 버전은 CVE-2021-45105를 완화하지 않습니다. Log4j 팀은 Java 6 및 Java 7 모두 더 이상 지원되지 않는다고 밝혔습니다. Java 7용 Log4j에 또 다른 보안 업데이트가 제공될지는 불확실합니다.

'마인드맵 #1'은 각 취약점이 존재하는 조건에 대한 좋은 개요를 제공합니다.
Log4j 취약 여부를 위한 플로우차트

Loïc Castel 제작. github에서 가져옴.

취약 여부 발견

문제점 중 하나는 반드시 인터넷에 직접 노출된 서버만 취약한 것은 아니라는 점입니다. 취약점은 동일한 데이터를 수신하여 기록하는 '체인' 뒤쪽에 있는 서버에 있을 수 있습니다. 이로 인해 무엇이 노출되었는지 파악하기 어려울 수 있습니다.

'마인드맵 #2'는 자체 시스템에서 취약점을 확인하는 방법에 대한 좋은 개요를 제공합니다.

Log4j 취약 인스턴스를 찾기 위한 플로우차트

Loïc Castel 제작. github에서 가져옴.

취약점 트리거를 통해 1. DNS 카나리 토큰 생성 [https://canarytokens.org/generate#](https://canarytokens.org/generate#)

DNS 카나리 생성

  1. 다음 텍스트 문자열 빌드 ${jndi:ldap://<카나리토큰>/a}
  2. 이 문자열을 기록될 가능성이 있는 모든 필드에 입력

"카나리 문자열로 "검색"

root@kitploit:~
- User-agent
- 검색 필드
- 사용자 이름
- ...

4. 카나리 히트를 추적하여 log4j가 실행되는 위치 파악.

참고: Florian Roth의 트윗

호스트 검색을 통해

Windows

다음은 매핑된 네트워크 드라이브를 포함한 모든 디스크를 검사합니다:

root@kitploit:~
Get-PSDrive -PSProvider FileSystem | foreach {(gci ($_.Root) -rec -force -include *.jar -ea 0 | foreach {select-string "JndiLookup.class" $_} | select -exp Path)}

참고: https://twitter.com/0gtweet/status/1469661769547362305

로컬 디스크만 확인하려는 경우:

root@kitploit:~
Get-CimInstance win32_volume | Where-Object { $_.DriveType -eq 3 -and $_.DriveLetter -ne $null} | ForEach-Object {(gci ($_.DriveLetter+"\") -rec -force -include *.jar -ea 0 | foreach {select-string "JndiLookup.class" $_} | select -exp Path)}

참고: https://twitter.com/webmastir/status/1470386184052486155?s=20

추가로 시스템의 이벤트 로그를 확인하려는 경우:

root@kitploit:~
Get-WinEvent -ListLog * |
  foreach { get-winevent @{logname=$_.logname; } -ea 0 } |
  where message -match 'jndi'

Linux #1

root@kitploit:~
#!/bin/bash
find / -name '*log4j*.jar' -print0 2>/dev/null -print0 | while read -d $'\0' log4j; do
        echo -en "${log4j}: "$(unzip -p "${log4j}" | strings | grep -Po '^Implementation-Version:\s+([0-9\.]+)' | awk '{ print $NF }')"\n"
done
exit 0

취약점 완화

'마인드맵 #3'은 완화 옵션에 대한 개요를 제공합니다.

Log4j 완화를 위한 플로우차트

Loïc Castel 제작. github에서 가져옴.

아래에는 완화를 수행하기 위한 몇 가지 리소스를 나열했습니다.

#1 패치

Java 8

Log4j를 v 2.17.0으로 업데이트

Java 7

Log4j를 v 2.12.2로 업데이트 참고 CVE-2021-45105를 완화하지 않음

#4 완화 #1: 변수 설정

⚠️ 이 방법은 모든 상황에서 모든 취약점을 완화하지 않으므로 더 이상 완전한 해결책으로 간주되지 않습니다.

Windows

root@kitploit:~
[Environment]:https://raw.githubusercontent.com/helsecert/cve-2021-44228/HEAD/:SetEnvironmentVariable(%22LOG4J_FORMAT_MSG_NO_LOOKUPS%22,%22true%22,%22Machine%22)

참고: 재시작 필요

출처: https://twitter.com/CyberRaiju/status/1469505680138661890

JVM 플래그 설정

root@kitploit:~
"‐Dlog4j2.formatMsgNoLookups=True"

명령줄 예시:

root@kitploit:~
JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true" teku --network mainnet

또는 -Xmx 값 포함:

root@kitploit:~
JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true -Xmx4g" teku

Systemd 구성 예시:

root@kitploit:~
Environment='JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true"'

또는 -Xmx 값 포함:

root@kitploit:~
Environment='JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true" "-Xmx4g'

애플리케이션 재시작 시 로드됨 출처: https://github.com/ConsenSys/teku/security/advisories/GHSA-mwfw-vm54-g3p7

#4 완화 #2: Java 클래스 삭제 log4j jar 파일에서 JndiLookup.class를 삭제합니다.

Jar 파일은 아카이브(zip 파일)이며 열 수 있습니다. 그런 다음 파일을 제거할 수 있습니다. 이 작업은 7-zip과 같은 도구(이미지 참조)를 사용하여 수동으로 수행하거나 스크립트를 사용하여 수행할 수 있습니다.

애플리케이션 재시작 필요

참고: https://mogwailabs.de/en/blog/2021/12/vulnerability-notes-log4shell/9

jndilookup.class 삭제

Windows

root@kitploit:~
[Reflection.Assembly]:https://raw.githubusercontent.com/helsecert/cve-2021-44228/HEAD/:LoadWithPartialName(%27System.IO.Compression%27)
$JarFilLokasjon = 'C:\temp\log4j-core-2.13.0-test.jar'
$Filnavn   = 'JndiLookup.class' #이 파일이 삭제됩니다!

$Stream = New-Object IO.FileStream($JarFilLokasjon, [IO.FileMode]::Open)
$ZipMode   = [IO.Compression.ZipArchiveMode]::Update
$Zip    = New-Object IO.Compression.ZipArchive($stream, $ZipMode)

($zip.Entries | Where-Object { $Filnavn -contains $_.Name }) | ForEach-Object { $_.Delete() }
$zip.Dispose()
$stream.Close()
$stream.Dispose()

Linux

root@kitploit:~
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

영향을 받는 소프트웨어 목록

https://github.com/NCSC-NL/log4shell/tree/main/software

https://gist.github.com/SwitHak/b66db3a06c2955a9cb71a8718970c592

https://github.com/cisagov/log4j-affected-db

도구 다운로드

root로 실행

Linux #2

root@kitploit:~
lsof | grep log4j-core