비교적 최근에 출제된 웹해킹(SSTI) 문제이다.
SSTI란 Server Side Template Injection의 약자로
템플릿 엔진으로 웹 어플리케이션을 구동하는 경우, 공격자가 템플릿 구문을 악용하여
삽입할 수 있는 취약점이다.
이렇게 템플릿 구문이 삽입되게 되면, 원격 명령어 실행도 가능하게 되는 위험한 취약점이다.
문제 페이지에 접속하면 이런 화면이 나온다.
사용자에게 title과 page content를 입력을 받고 있다.
시험삼아 test title / test content 라고 각각 입력을 한 뒤,
Render your page! 버튼을 눌러줬다.
그러면 이렇게 내가 입력한 값이 까만 화면에 하얀 글씨로 출력이 된다.
이게 이 웹페이지 기능의 전부이다.
SSTI 공격을 할때는 먼저 서버측에서 사용하는 템플릿 엔진의 종류를 알아야 한다.
위 사진이 SSTI 할때 바이블 처럼 사용되는 사진인데
여기서 {{7*7}} 를 먼저 사용해보자.
입력창에 {{7*7}} 이라고 입력했을때, {{7*7}} 이 그대로 출력되면 취약점이 없는것이고,
7*7이 계산되어서 49로 출력되면 SSTI 취약점이 존재한다고 생각하면 된다.
다시 돌아와서 title 과 page content에 {{7*7}} 이라고 입력해본다.
결과를 확인해보면, title은 {{7*7}} 이라고 입력한 값이 그대로 출력되었으나,
page content 같은 경우 7*7이 계산되어서 49가 출력된 모습이 보인다.
SSTI 공격이 가능한 벡터는 page content 입력창이다.
이제 차근차근 페이로드를 완성시켜가면 된다.
페이로드를 짤때는 보통 github를 많이 참고하는 편이다.
SSTI로 원격 명령어를 실행하기 위해선 Popen 클래스를 찾아야 한다.
{{config.__class__.__base__.__subclasses__()}}
Popen 클래스를 찾기 위해서 위와 같이 먼저 입력해준다.
저렇게 입력하면 엄청나게 많은 값들이 나오는데
그 중간에 <class 'subprocess.Popen'> 이 들어있다.
이제 이 Popen이 몇 번째에 있는지 알아야 한다.
가독성 있게 편집하기 위해 웹 페이지 내용을 전부 복사해서
Notepad++에 붙혀넣기 해줬다.
그리고 나서 반점(,)을 모두 \r\n(엔터) 로 모두 바꾸기를 해줬다.
그럼 이렇게 보기 쉽게 엔터가 쳐지고, 앞에 줄 수로 넘버링도 가능하다.
Popen 을 찾아보면, 409번째 줄에 있는걸 볼 수 있다.
409번째 줄이지만 python 배열은 0부터 인덱스가 시작하므로, 408번째에 있다고 생각하면 된다.
{{config.__class__.__base__.__subclasses__()[408]('ls -al',shell=True,stdout=-1).communicate()[0]}}
이제 찾아낸 Popen을 이용해서 명령어를 날려보면 된다.
[408] 로 Popen을 선택해주고, ls -al 명령어를 날려봤다.
ls -al 은 현재 디렉토리에 있는 모든 파일/폴더 목록을 자세하게 보여주는 명령어이다.
이런 값이 나오는데
아까 했던것 처럼 Notepad++을 이용해 깔끔하게 만들어주면
이렇게 나온다.
.passwd 파일이 있는게 보인다.
이름부터가 아주 매력적인 파일이다.
아마도 여기에 플래그가 숨어있을 것이다.
아까 ls -al 부분을
cat .passwd 로 바꿔서 .passwd 파일의 내용을 읽어 출력시켜 본다.
그럼 플래그를 찾을 수 있다.
'워게임 > Root Me' 카테고리의 다른 글
[Root Me] File upload - MIME type - 웹해킹 / WebShell (64) | 2022.06.08 |
---|---|
[Root Me] File upload - Double extensions - 웹해킹 / WebShell (66) | 2022.05.27 |
[Root Me] CRLF - 웹해킹 (80) | 2022.05.09 |
[Root Me] Install files - 웹해킹 / Directory Listing (63) | 2022.05.06 |
[Root Me] Job Interview - 포렌식 / RDP Cache / BMC (69) | 2022.05.04 |