[Dreamhack] Tomcat Manager
문제 설명
- 드림이가 톰캣 서버로 개발을 시작하였습니다.
- 서비스의 취약점을 찾아 플래그를 획득하세요.
- 플래그는
/flag
경로에 있습니다.
풀이
문제 사이트에 접속하면 아래와 같은 이미지가 보인다.
페이지 소스코드에서 확인해보면 img 태그로 현재 경로의 image.jsp
파일을 이용해 file
파라미터로 working.png 파일을 불러오고 있다.
<html>
<body>
<center>
<h2>Under Construction</h2>
<p>Coming Soon...</p>
<img src="./image.jsp?file=working.png"/>
</center>
</body>
</html>
문제 파일을 받아보면 ROOT.war 이라는 파일과 tomcat-users.xml 이 존재하고 xml 파일은 아래와 같다. tomcat-users.xml 파일은 톰캣을 처음 설치하고 관리자 메뉴를 이용하기 위해서 아래와 같이 username
과 password
부분에 아이디와 비밀번호를 입력해주어야 한다. 보면 id는 tomcat
이고 비밀번호는 아직 알지 못하는 것 같다.
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="tomcat" password="[**SECRET**]" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script" />
</tomcat-users>
burp로 이미지를 GET 메소드로 받아오는 부분을 잡아보면 일단 매우 수상해보인다.. 오른쪽 응답 패킷을 보면 Content-Type에 image/jpeg; 말고 charset=ISO-8859-1이 더 존재한다. gpt에 물어보니 텍스트 데이터를 다루는 파일에 적용된다고 한다. txt, xml, js, html 등이 있다.
우선 file 파라미터 값으로 다른 파일을 받아올 수 있을 것 같다고 생각했고, Dockerfile을 보면 tomcat-users.xml 파일의 경로가 나온다.
../
문자를 이용해 tomcat-users.xml 파일을 보면 password 값이 평문으로 노출된 것을 확인할 수 있다.
이제 톰캣 관리자 페이지에 들어가기 위해서 /manager
엔드포인트에 접속해서 아이디와 비밀번호를 tomcat과 위에서 얻은 비밀번호를 입력해주어야 하는데 왜 안들어가질까… 서버 문제인 거 같다. 일단 이 문제는 여기까지 해놔야겠다.
댓글남기기