각종 취약점의 내용을 간단하게 요약하여 두려고 합니다. 저는 발표, 문서 작성 등에 요긴하게 쓸 예정입니다. 취약점은 생각나는대로 추가해 나가겠습니다.
Tomcat의 모든 버전에서 AJP 가 사용될 때 8009 포트를 이용하여 변조된 패킷을 전송, ROOT 디렉터리의 내용을 무단으로 읽을 수 있는 취약점입니다.
해당 사이트에 파일 업로드가 가능한 경우, 웹 쉘을 다운로드 하는 코드를 txt 파일로 작성하여 업로드 후 취약점을 이용하여 JSP로 실행 시킬 수 있습니다. 공격자는 다운로드 된 웹 쉘에 접근하여 명령어를 실행시킬 수 있습니다.
Log4j를 이용하여 로깅하는 어플리케이션에 사용자가 헤더 또는 본문에 JNDI(디렉터리 검색 서비스) lookup 구문을 삽입하여 전송 시 서버에서 JNDI 구문에 포함된 LDAP 서버에 접속, 악성코드를 다운로드 /실행하게되는 취약점입니다.
공격자는 악성 LDAP 서버로 접속하도록 페이로드를 보내어 명령어를 실행시키는 코드를 다운로드 시킬 수 있습니다.
해당 취약점을 이용해 리버스 커넥션 등 RCE가 가능합니다.
업데이드, 사용하지 않는 플러그인, 모듈 제거, 필터링 구문 추가 등으로 조치 가능합니다.
Spring4Shell 취약점은 Spring Core 프레임워크에서 특정 조건 하에 Remote Code Execution이 가능한 취약점이며 Spring 프레임워크가 매개변수를 바인딩하는 과정에서 'class' 객체가 노출되어 발생합니다.
공격자는 해당 'class' 객체의 자식 객체인 'class.module.classLoader'에 웹 매개변수를 통해 접근할 수 있으며 로깅 관련 클래스(AccessLogValve)를 이용하여 웹 쉘 코드를 업로드한 후, 명령어를 실행할 수 있습니다.
자바 애플리케이션이 클래스, 객체 등을 직렬화/역직렬화하는 과정에서 사용자가 입력한 값으로 인해 의도하지 않은 코드를 실행하게되는 취약점입니다. 보통 공격자는 직렬화된 자바 객체를 이용하여 공격하게됩니다. (ysoserial 사용)
사용자의 입력 값을 필터링하고 가능하다면 특정 형식(클래스) 또는 특정 객체만 역직렬화하여 사용하도록 조치합니다.