From Installation of Flask to SSTI Exploit

이 글은 Flask 설치부터 SSTI(Server Side Template Injection)의 PoC를 구현에 이르는 과정을 정리하는 내용을 기록할 예정이다. 이 글을 읽는 분들께는 미안하지만, 아직 완성된 글이 아니다.

여러 프로젝트를 한 대의 PC에서 개발하는 경우 모듈의 의존성이 방해가 될 때가 있다. 두 개의 서로 다른 프로젝트를 개발하고 있다고 하자. 공교롭게도 이 두 프로젝트는 같은 모듈을 사용하고 있다. 그런데, 한 프로젝트에서 모듈의 업그레이드가 필요하다. 그런데, 다른 프로젝트는 업그레이드를 하면 정상 동작하지 않다. 이럴 때 사용할 수 있는 툴이 virtualenv 이다. 프로젝트 별로 모듈을 따로 관리한다. NPM이나 Docker를 생각하면 될 것 같다.

 

모조리 생략하고, 다음 예제 코드를 보자. 예제코드의 출처는 Flask by Example(Gareth Dwyer)이다. Flask와 템플릿(Jinja2)은 이렇게 사용한다.

주의사항 : 템플릿 파일은 반드시, templates 라는 이름의 폴더 안에 위치해야 한다.

 

위의 예제코드를 실행시키고, 쿼리스트링으로 “/?user={{7*7}}” 을 입력해 보자. 그러면, “Hello 49″가 출력될 것이다.