특정 경로를 입력하면 요청을 보내서 해당 경로의 파일을 보여주는 웹 페이지다.

ssrf 취약점이 존재할 것 같다.

- 웹 서버가 사용자가 입력한 요청을 직접  내부 서버로 보낼 수 있을 때 발생하는 취약점

 

 

 

 

문제 파일 확인

1) flag 위치는 /flag.txt

2) 입력 값에 localhost127.0.0.1 문자열이 있을 경우 error.png를 반환한다. (필터링)

3) locla 포트는 1500~1800의 정수 중 랜덤한 값이다.

 

 

 

 

localhost, 127.0.0.1 필터링을 우회하기 위해, 

localhost를 대문자로 입력하여 요청을 보냈다.

 

필터링되지 않고 정상적으로 파일이 읽어지는 것을 확인

 

 

 

flag 파일은 1500~1800 사이의 정수인 로컬 포트에 존재하기 때문에

버프 스위트 intruder로 자동화 공격을 수행

 

 

 

길이가 다른 응답 탐색 성공

base64로 인코딩된 data가 출력됨

 

 

 

Decoder로 디코딩하면 flag를 얻을 수 있다

 

 

 

 

 

 

 

TCP 포트 스캔 결과

 

 

 

80번 포트로 웹 페이지 접속

 

 

 

"Security Snapshot" 메뉴를 클릭하면 '/data/[id]' 경로로 리다이렉트 됨 

Burp suite에서 확인

 

 

 

다른 계정의 스캔 결과도 [id]만 바꿔서 조회 가능

/data/2 -> /data/0

 

 

 

데이터가 존재하는 계정은 0 밖에 없다

0 계정의 pcap 파일을 다운로드

 

아까 포트 스캔 했을때, ftp 포트가 열려있는게 눈에 띄었다

 

다운받은 pcap 파일에 FTP 필터를 적용해서 보면

nathan 계정패스워드를 확인 가능

0.pcap

 

 

 

ssh에서 해당 계정으로 로그인 시도 ㄱ

 

성공

 

 

flag 확인

 

 

 

 

 

권한 상승

 

이것저것 뒤져보다가 파일이 너무 많아서 getcap 명령으로 탐색해봤다

군침이 싹 도는 cap_setuid 발견

 

 

 

구글링해서 이런걸 찾았다

https://gtfobins.github.io/gtfobins/python/

대충 파이썬CAP_SETUID 기능이 설정되어 있으면, uid를 조작하여 권한을 상승하는 방법이 존재한다는 내용

 

 

파이썬

 

 

root 플래그 확인 성공

 

 

 

 

 

 

문제

간만에 재밌는 문제였다.

 

 

 

 

풀이

문제 이름 대로 tomcat manager 페이지에 접속 시도를 했지만 아이디와 비번이 필요했다.

 

 

 

문제 파일의 Docker 파일에서 manager 페이지의 계정 정보가 있는 파일의 절대 경로를 확인할 수 있었다.

 

 

메인페이지의 이미지를 로드하는 방식에서 LFI 취약점을 발견했다.

 

 

 

LFI 취약점으로 tomcat-users.xml 파일의 내용을 확인했다.

tomcat manager 페이지의 패스워드를 알아냈다.

 

 

 

이제 알아낸 계정으로 tomcat manager 페이지에 접속한다.

 

 

파일 업로드 기능을 이용해 웹쉘을 업로드한다.

 

 

웹쉘이 정상적으로 업로드된 걸 확인할 수 있다.

 

 

웹쉘로 flag 파일을 확인해보면 실행파일인 것을 알 수 있다.

 

 

'/flag'를 입력하면 flag 파일이 실행되어 flag가 출력된다.

 

 

 

 

+ Recent posts