
POC-Django JSONField/HStoreField SQL 인젝션 취약점 (CVE-2019-14234)
Django는 2019년 8월 1일에 JSONField와 HStoreField 두 모델 필드의 SQL 인젝션 취약점을 수정하는 보안 업데이트를 발표했습니다.
참고 링크:
https://www.djangoproject.com/weblog/2019/aug/01/security-releases/ https://www.leavesongs.com/PENETRATION/django-jsonfield-cve-2019-14234.html
이 취약점은 개발자가 JSONField/HStoreField를 사용해야 하며, 또한 쿼리셋의 필드 이름을 제어할 수 있어야 합니다. Django의 내장 애플리케이션인 Django-Admin이 영향을 받아 취약점을 쉽게 재현할 수 있습니다.
다음 명령을 실행하여 취약한 Django 2.2.3을 컴파일하고 시작합니다:
docker compose build
docker compose up -d
환경이 시작된 후, http://your-ip:8000에서 Django의 홈페이지를 볼 수 있습니다.
먼저, 사용자 이름 admin과 비밀번호 a123123123으로 Django-Admin http://your-ip:8000/admin/에 로그인합니다.
그런 다음 모델 Collection의 목록 보기 http://your-ip:8000/admin/vuln/collection/으로 이동합니다:
detail이 JSONField인 GET 파라미터에 detail__a'b=123을 추가합니다:
단일 따옴표가 성공적으로 주입되었고 SQL 문에서 오류가 발생한 것을 확인할 수 있습니다: