문제화면이다.
개발 중이라고 하니 공사 중인 이미지를 넣은 거 같다.
소스코드를 봐보자
FROM tomcat:8.0.51-jre7-alpine
ENV RUN_USER tomcat
ENV RUN_GROUP tomcat
RUN addgroup ${RUN_GROUP} && adduser -G ${RUN_GROUP} -D -h ${CATALINA_HOME} ${RUN_USER}
RUN chown -R tomcat:tomcat $CATALINA_HOME
RUN ls -lah $CATALINA_HOME
RUN rm -rf /usr/local/tomcat/webapps/ROOT/
COPY flag /flag
COPY ROOT.war /usr/local/tomcat/webapps/ROOT.war
COPY tomcat-users.xml /usr/local/tomcat/conf/tomcat-users.xml
USER tomcat
EXPOSE 8080
dockfile 이다 코드를 보면 리눅스 명령어도 쓰여있다.
자세히 보면
Run chown -R tomcat:tomcat $CATALINA_HOME
CATALINA_HOME 의 소유권을 tomcat이라는 사용자와 그룹으로 변경한다는 내용이다.
COPY flag /flag
COPY ROOT.war /usr/local/tomcat/webapps/ROOT.war
COPY tomcat-users.xml /usr/local/tomcat/conf/tomcat-users.xml
flag 파일을 루트 디렉토리에 복사하고 tomcat-users.xml 파일에 대한 경로가 나와 있는 거 같다.
여기서 알수 있는 건 tomcat이라는 사용자가 있다는 것과 tomcat-users.xml 에 대한 경로를 알 수 있다.
다른 소스코드도 봐보자
<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>
tomcat-users.xml 파일이다.
요약하자면 tomcat 이라는 사용자에게 거의 모든 권한을 주는 거 같다
password는 SECRET로 가려져 있다 그러면 아까 봤던 경로를 통해서 저 파일을 확인해보자.
.
아까 문제화면에서 봤듯이 이미지가 그렇다면 LFI(Local File Inclusion)을 이용해서 내부의 파일을 확인해 보자.
현재 경로를 모르는 상태에서는 무조건 루트부터 시작해서 경로를 탐색해야 한다.
일단 해당 메시지를 리피터로 보내주도록 하자.
일단 지금 아는 정보는 tomcat-users.xml 에 대한 경로이니까 경로를 먼저 입력하고 상대적 경로 루트까지 내려갈 수 있게 '../'을 반복하면서 확인해 보니 xml 파일을 찾을 수 있었다 해당 파일에는 tomcat에 대한 password 가 담겨 있다.
password를 찾았으니 관리자 페이지로 이동해야 한다.
검색해서 알아낸 거지만 Tomcat Manager는 "url:port/manager/html"이라고 한다.
문제화면으로 돌아가 확인해 보자.
사용자 tomcat을 입력하고 리피터를 통해 구한 password를 입력하니 관리자로 로그인이 되었다.
이제 flag를 찾아야 하는데 file upload를 하는 공간이 있어 webshell를 넣도록 했다. (파일 업로드 공격)
webshell을 이용해 command 써서 flag를 확인해 보자.
바로 나온다.
문제 화면에서는 플래그의 경로는 /flag라고 미리 알려주었다.
'DreamHack > CTF' 카테고리의 다른 글
(CTF 출제) simple-web-request (1) | 2024.10.09 |
---|---|
(CTF 출제) amocafe (2) | 2024.09.05 |
(CTF 출제) Whis-is-my-ip (0) | 2024.09.04 |
(CTF 출제) BypassIF (0) | 2024.09.04 |
(CTF 출제) Random-Test (0) | 2024.09.04 |