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

Apache Tomcat 서버

10.0.0-M1 to 10.0.0-M4, 9.0.0.M1 to 9.0.34, 8.5.0 to 8.5.54 and 7.0.0 to 7.0.103

버전에서 가능한 취약점

 

공격 시나리오

  1. 공격자가 시스템 명령어를 삽입한 .session 확장자의 직렬화된 파일을 만든다.
  2. 취약한 Tomcat 서버에 해당 파일을 업로드한다.
  3. 해당 Tomcat 서버의 웹에서 JSESSIONID 를 프록시 툴을 이용하여 업로드 한 세션 파일로 바꾼다. (path traversal 공격 기법 이용)
  4. 브라우저는 에러가 발생하며, 공격자가 업로드 한 세션 파일이 역직렬화 되며 시스템 명령어가 실행된다.

제약조건

  1. PersistenceManager 기능 사용 및 sessionAttributeValueClassNameFilter의 검증이 미흡해야함
  2. 파일 업로드 취약점이 존재 (확장자 검증이 미흡하고 업로드 경로까지 노출)

흠... 2번 제약조건이면 차라리 쉘을 올리는게 낫지않나 싶지만 모르겠다.

실습 과정

도커를 이용해 취약한 서버를 구축한다

 

아래 깃허브의 ysoserial 툴을 다운받은 후

https://github.com/frohoff/ysoserial

 

GitHub - frohoff/ysoserial: A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization.

A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization. - GitHub - frohoff/ysoserial: A proof-of-concept tool for generating payloads that exploit unsafe Ja...

github.com

 

아래와 같이 툴을 사용하는 명령어를 입력한다

java -jar ysoserial-master.jar Groovy1 "touch /tmp/hyotwo" > test.session

명령어가 삽입되어 역직렬화된 session 파일을 생성한다.

나는 touch명령어를 삽입하여 tmp 디렉터리에 hyotwo 파일을 생성하도록 했다.

이 때 Groovy1은 툴 내에 장착되어있는 여러가지 페이로드 중 하나인 것으로 추정된다.

톰캣10버전은 그루비로 톰캣 7버전은 콜렉션으로 테스트해보았음

 

도커 서버의 tmp 디렉터리에 뭐가 있는지 직접 살펴보았더니 아래 사진과같이 별거없었다.

 

원래 시나리오 대로라면 파일 업로드를 통해 세션 파일을 서버에 넣어줘야하지만

컨테이너에 직접 삽입 후 프록시로 명령을 실행하였다.

공격 명령어는 세션값이 역직렬화가된 파일이 업로드된 경로까지 이동하여 그 세션파일을 실행하는 것이다

나의 경우 기본 디렉터리에 넣어둬서 패스 트래버셜을 끝까지 해준 후 test.session 파일을 실행하였다.

 

그 결과 에러가 발생하며 세션 파일이 실행되어 hyotwo가 생성되었다

 

제약조건이 너무 심한 CVE라 실제로 발생할 수 있을지는 모르겠지만

파일 업로드 시 절대 경로가 노출되는데 서버 사이드 스크립트 파일들이 필터링되어 있다면?...

한번 쯤 시도해볼만은 하겠다... 쯤?

반응형
  • hyotwo7658@gmail.com

복사 완료 👍