• OS
  • 물리서버
  • 보안
  • 네트워크
  • 클라우드
  • 자격증
카테고리

8.1 SSTI - server flag

2025. 1. 22. 12:49·Security/CTF
반응형

목표

Flask 애플리케이션에서 SSTI(Server-Side Template Injection) 취약점을 이용하여 서버의 중요한 정보에 접근하고, 환경 변수에 저장된 플래그를 획득.


문제 개요

Flask 애플리케이션 취약점

  • Flask 코드 분석 결과:
    • render_template_string 메서드가 사용자의 입력을 그대로 템플릿으로 렌더링.
    • 사용자 입력이 필터링 없이 서버 측에서 처리되는 것이 확인됨.
  • 환경 변수:
    • app.secret_key가 환경 변수 FLAG로부터 값을 받아 설정됨.
    • 이를 통해 플래그가 환경 변수에 저장되어 있음을 유추.

플래그 획득 과정

1. SSTI 취약점 확인

  • 기본 테스트: SSTI 여부를 확인하기 위해 간단한 템플릿 인젝션을 시도:
     
     
  • 결과: 서버가 49를 반환하며, 사용자의 입력이 템플릿으로 렌더링됨을 확인.
{{7*7}}

2. 파일 시스템 탐색

  • 명령어 실행: Flask의 템플릿 인젝션 취약점을 이용하여 파일 시스템 탐색을 수행:
     
     
  • 결과: 파일 목록에서 /flag 파일의 존재를 확인.
{{ config.__class__.__init__.__globals__['os'].popen('ls /').read() }}

3. 플래그 파일 읽기

  • 플래그 파일 접근: /flag 파일의 내용을 읽기 위해 다음 코드를 입력:
     
     
  • 결과: 서버에서 /flag 파일 내용을 출력하며 플래그를 획득.
{{ config.__class__.__init__.__globals__['os'].popen('cat /flag').read() }}

최종 플래그 획득 코드

 
{{ config.__class__.__init__.__globals__['os'].popen('cat /flag').read() }}

과정 요약

  1. SSTI 취약점 확인:
    • {{7*7}}과 같은 간단한 템플릿 코드로 SSTI 여부를 검증.
  2. 파일 시스템 탐색:
    • ls 명령어를 통해 파일 시스템의 구조를 탐색하고 /flag 파일의 존재 확인.
  3. 플래그 파일 읽기:
    • cat /flag 명령어로 플래그 파일 내용을 출력하여 플래그 획득.

취약점 분석 및 보안 대책

취약점 원인

  • render_template_string의 직접 사용: 사용자 입력이 필터링 없이 템플릿으로 렌더링되어 실행됨.
  • 환경 변수 노출: 환경 변수 및 서버 파일에 대한 접근 제한 부족.

보안 대책

  1. render_template_string 사용 금지:
    • 사용자 입력을 직접 렌더링하는 메서드는 사용하지 않거나, 엄격한 필터링 적용.
  2. 환경 변수 보호:
    • 환경 변수 값은 서버 외부에서 접근할 수 없도록 제한.
  3. 샌드박스 환경 적용:
    • 서버에서 실행되는 코드를 격리된 환경에서 실행하여 민감한 정보 접근 방지.
  4. 입력 검증 강화:
    • 사용자 입력 값에 대해 화이트리스트 기반의 검증을 수행하여 악성 입력 차단.

SSTI 취약점은 서버의 민감한 정보 노출과 데이터 탈취로 이어질 수 있는 심각한 문제입니다. 이 사례를 통해 Flask 애플리케이션 개발 시 보안 강화의 중요성을 다시 한번 확인할 수 있었습니다.

반응형

'Security > CTF' 카테고리의 다른 글

12.1 Business_logic_error  (0) 2025.01.22
8.2 SSTI - secretkey  (0) 2025.01.22
3.3 SQLi_WAF_3  (0) 2025.01.22
3.1 SQLi_WAF_1  (0) 2025.01.22
Web_main 기초 과정 정리  (0) 2025.01.20
'Security/CTF' 카테고리의 다른 글
  • 12.1 Business_logic_error
  • 8.2 SSTI - secretkey
  • 3.3 SQLi_WAF_3
  • 3.1 SQLi_WAF_1
wogho
wogho
    반응형
  • wogho
    눙이의 인프라 메모장
    wogho
  • 전체
    오늘
    어제
    • 분류 전체보기
      • OS
        • Linux
        • Windows Server
      • Physical Server
        • Xenserver
        • Equipment
      • Network
        • Cisco
      • Cloud
        • GCP
        • AZURE
        • AWS
      • Security
        • Basic
        • CTF
        • Solution
      • Language
      • Certificate
  • 블로그 메뉴

    • OS
    • 물리서버
    • 보안
    • 네트워크
    • 클라우드
    • 자격증
  • 링크

  • 공지사항

    • Tistory 추천 스킨 및 폰트 (hELLO & d2co⋯
  • 인기 글

  • 태그

    megacli
    MEGARAID
    서버
    windows
    Windows Server
    CentOS
    윈도우서버
    lsi
    데비안
    윈도우
    SMB
    RAID
    네트워크
    Linux
    debian
    mdadm
    ubuntu
    PowerShell
    리눅스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
wogho
8.1 SSTI - server flag
상단으로

티스토리툴바