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

8.2 SSTI - secretkey

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

문제 정의

  • Flask 애플리케이션에서 **SECRET_KEY**가 환경 변수 FLAG로 설정.
  • 초기 분석 시, FLAG 값이 가짜 플래그로 보였으나 실제 플래그였음.
  • 목표: SSTI 취약점을 이용해 SECRET_KEY를 노출시키고, 플래그를 획득.

문제 분석

Flask 애플리케이션 취약점

  1. SSTI(Server-Side Template Injection)
    • 사용자 입력이 Flask 템플릿 엔진 Jinja2에서 실행됨.
    • 입력값이 서버에서 적절히 필터링되지 않고 실행되며 발생.
  2. 플래그 저장 방식
    • SECRET_KEY에 환경 변수 FLAG 값이 설정됨.
    • Flask의 config 객체를 통해 SECRET_KEY 값을 확인 가능.

플래그 획득 과정

1. SSTI 취약점 확인

  • 기본 테스트: SSTI 취약점 여부를 확인하기 위해 템플릿 코드 테스트:
     
     
  • 결과: 서버에서 49를 반환하며, 입력이 템플릿으로 실행됨을 확인.
{{ 7*7 }}

2. Flask 설정 접근

  • Flask에서 설정 값은 config 객체에 저장:
  • {{ config }}
  • 테스트 코드: config.items()를 호출해 모든 설정 항목 확인:
  • {{ config.items() }}
  • 결과:
    • Flask 애플리케이션의 설정 값이 출력.
    • SECRET_KEY 값에 FLAG 환경 변수 값이 포함됨.

3. 최종 플래그 획득 코드

  • 다음 코드를 템플릿 인젝션 입력 필드에 삽입:
    {{ config.items() }}
  • 결과: SECRET_KEY 값이 출력되며 플래그 획득:

SSTI 취약점 정리

1. SSTI란?

  • 서버 측 템플릿 처리 과정에서, 사용자의 입력이 템플릿 코드로 실행될 때 발생하는 취약점.
  • 결과적으로:
    • 민감 정보 노출
    • 원격 코드 실행(RCE)
    • 파일 시스템 접근 등의 문제를 유발.

2. Flask와 Jinja2

  • Flask의 기본 템플릿 엔진은 Jinja2.
  • {{ }}: 템플릿 내에서 Python 코드를 실행할 수 있는 구문.

3. 취약점 발생 원인

  • 사용자의 입력이 템플릿 엔진을 통해 그대로 실행.
  • 입력값에 대한 적절한 필터링 미비.

보안 대책

1. 사용자 입력 검증

  • 템플릿에서 실행되는 사용자 입력을 화이트리스트로 검증.

2. render_template_string 사용 금지

  • Jinja2의 render_template_string 대신, 안전한 방식으로 템플릿을 렌더링:
    • render_template 사용.
    • 데이터는 템플릿 변수로 전달하며 직접 실행 방지.

3. 환경 변수 보호

  • 민감한 정보를 환경 변수에 저장할 경우:
    • 접근 제한 강화.
    • 디버그 로그에 출력되지 않도록 설정.
반응형

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

12.2 IDOR  (0) 2025.01.22
12.1 Business_logic_error  (0) 2025.01.22
8.1 SSTI - server flag  (0) 2025.01.22
3.3 SQLi_WAF_3  (0) 2025.01.22
3.1 SQLi_WAF_1  (0) 2025.01.22
'Security/CTF' 카테고리의 다른 글
  • 12.2 IDOR
  • 12.1 Business_logic_error
  • 8.1 SSTI - server flag
  • 3.3 SQLi_WAF_3
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⋯
  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
wogho
8.2 SSTI - secretkey
상단으로

티스토리툴바