보안
2025-04-26 ~ 2025-04-27
1분 읽기

Django SQL Injection 1Day 분석 (CVE-2022-34265)

vulhub를 통한 Django 1Day 취약 환경 재현 및 분석

0. 사전정보

[ CVE-2022-34265 ] ( IP Camera ) - Command Injection

개요

취약점 종류영향심각도CVSS 점수CVE ID
SQL Injection데이터 유출 위험CRITICAL9.8CVE-2022-34265

설명

Django의 Trunc(kind)와 Extract(lookup_name) 함수 처리에서 발생하는 SQL Injection 취약점 (CVE-2022-34265)

영향을 받는 버전

Django 2.2.x ~ 2.2.29, 3.2.x ~ 3.2.11, 4.0.x ~ 4.0.5 버전

1. 환경구성

  • https://github.com/vulhub/vulhub/tree/master/django/CVE-2022-34265 다운로드
  • docker compose up -d를 통해 취약한 Django 4.0.5 서버 구동
  • http://your-ip:8000 접속하여 웹 페이지 확인

2. 취약점 재현

  • 웹 애플리케이션은 Trunc 함수를 사용해 날짜별 페이지 클릭 수를 집계
  • http://your-ip:8000/?date=minute → 분별 클릭 수 확인
  • date 파라미터에 악성 입력 삽입 가능
  • http://your-ip:8000/?date=xxxx'xxxx
  • SQL 오류 메시지가 뜨면, SQL Injection이 성공적으로 이루어진것

3. 결과

alt text alt text

4. 정리

  • Django의 Trunc/Extract 함수에서 외부 입력 검증이 미흡했던 점이 핵심 원인
  • 해당 취약점은 Django 4.0.6, 3.2.12, 2.2.30에서 패치됨
  • 실 서비스에서는 외부 입력값을 ORM 필터나 함수에 직접 연결할 때 엄격한 유효성 검사가 필요
  • 항상 최신 보안 패치를 적용하는 습관이 중요
  • Github 링크