상세 컨텐츠

본문 제목

Step13. 자바 역직렬화 취약점 공격

화이트 해커를 위한 웹 해킹의 기술

by 메리_99 2021. 3. 10. 00:09

본문

반응형

Step13. 자바 역직렬화 취약점 공격

자바 역직렬화 취약점 개요

  • 공격자가 원격에서 코드를 실행할 수 있는 RCE(Remote Code Execution) 공격으로 이어지기 때문에 치명적이다.

  • 역직렬화 : 저장되어 있는 바이트 스트림을 다시 객체로 만들어 원래의 데이터를 다시 불러오는 과정

    • 바이트 스트림 : 저장을 하기 위해 객체를 순차적인 데이터로 변환하는 과정

  • 직렬화와 역직렬화는 객체 데이터를 네트워크를 통해 전송할 때도 사용할 수 있다.

    • 하나의 호스트 내에서 여러 개의 프로세스가 동일한 객체를 사용할 수 있도록 하고, 인터넷을 통해 여러 호스트의 프로그램이 동일한 객체를 사용할 수 있도록 한다.

  • 바이트 스트림에 표시된 aced005라는 문자열은 직렬화된 데이터 앞에 항상 나타나는 문자열이다.

자바 역직렬화 취약점 공격 실습

  • 직렬화된 데이터가 어떤 식으로 표시되는 지 알아본다.

/invoker/JMInvokerServlet으로 접근

  • 위와 같이 application /x-java-serialized-object 타입을 통해 직렬화된 데이터로 확인할 수 있다.

버프스위트를 통한 직렬화 데이터 확인

  • 위와 같이 버프스위트의 응답 메시지의 hex값을 이용하여 직렬화된 데이터임을 확인할 수 있다.

  • 이때, 자바 역직렬화 취약점으로 인해 임의의 페이로드를 삽입하여 원하는 명령어를 실행할 수 있다.

  • 공격을 위해 ysoserial이라는 프로그램을 다운로드한다.

github의 ysoserial 프로젝트에서 다운로드하는 화면

  • 다운로드한 jar 파일을 이용하여 원하는 명령어를 실행할 수 있는 공격 코드(페이로드)를 만들 수 있다.

  • 그렇게 임의로 생성한 페이로드를 JBoss의 /invoker/JMXInvokerServlet URL로 전송하여 페이로드에 지정된 명령어를 실행할 수 있다.

  • 우선 칼리 리눅스에서 nc를 서버 모드로 실행해놓는다.(4000 포트)

nc 실행화면

  • 클라이언트 PC에서 nc 접속을 한다.

nc 접속 화면

  • 명령문을 삽입한 페이로드를 ysoserial로 생성한다.

ysoserial로 공격 코드 생성

※ CommonsCollections1은 페이로드의 한 종류로 JBoss 4.2.3 GA 버전을 공격하는 데 사용

※ ""는 우리가 실행하고자 하는 명령어

※ >을 활용하여 home 디렉터리에 reverse.bin 파일 생성

  • 이렇게 생성된 페이로드 파일의 내용을 /invoker/JMXInvokerServlet URL로 전송한다.

버프스위트의 리피터 기능에서 Paste from file로 페이로드 파일을 가져옴

  • reverse.bin 공격 코드를 추가하고, 요청을 보낸다.

공격 코드를 요청 보낸 화면

  • 리스닝 모드로 nc가 실행 중이던 터미널에서 접속이 확인된다.

접속 확인

  • python -c 'import pty; pty.spawn("/bin/bash");'를 이용하여 프롬프트가 표시되는 쉘로 업그레이드한다.

프롬프트 표시와 동시에 권한을 확인

  • 위와 같이 호스트까지 침투함을 알 수 있다.

자바 역직렬화 취약점 공격 대응

  • 아파치 CommonsCollection 패키지를 최신 버전으로 업데이트하여 공격을 예방한다.

  • 프레임워크를 비롯한 웹 애플리케이션 개발을 위해 사용하는 구성요소들을 항상 최신 버전으로 유지한다.

개발 프로젝트에서 자체적으로 역직렬화 수행 시

  • 역직렬화 전에 반드시 인증 과정을 수행한다.

  • 출처를 알 수 없는 객체의 경우 역직렬화를 수행하지 않는다.

  • 직렬화된 객체에 디지털 서명이 되도록 하여 역직렬화 과정에서 객체 변조 여부(무결성)를 점검한다.

  • 가급적 최소 권한으로, 가능하다면 격리된 환경에서, 역직렬화를 수행한다.(접근 방지)

728x90

관련글 더보기

댓글 영역