黑客仓库

最全面知识的黑客论坛,全网最强大的漏洞数据聚合仓库丨黑客网站丨黑客论坛丨暗网丨红队武器库丨渗透测试丨POC/0day/Nday/1day丨网络安全丨黑客攻击丨服务器安全防御丨渗透测试入门丨网络技术交流丨蓝队丨护网丨红队丨欢迎来到黑客仓库,您可以在我们的论坛板块进行交流和学习。

立即注册账号!
Django

POC Django

Shacker已验证会员

黑客倉庫站長

贡献: 21%
注册
09 10, 2024
消息
186
JavaScript:
## 漏洞标题为:Django 上传文件时路径遍历漏洞
## 漏洞类型为:路径遍历
## 漏洞等级为:中危
## 漏洞简介为
   Django是Django基金会的一套基于Python语言的开源Web应用框架。该框架包括面向对象的映射器、视图系统、模板系统等。

Django 2.2至2.2.20, 3.0至3.0.14, 3.1至3.1.8 存在路径遍历漏洞,该漏洞允许通过上传的具有合适文件名的文件来遍历目录。

## 漏洞cve为:CVE-2021-28658
漏洞ID为:CNNVD-202104-352:http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-202104-352

## 补丁 diff:
http://launchpadlibrarian.net/531049456/python-django_1.8.7-1ubuntu5.14_1.8.7-1ubuntu5.15.diff.gz


### poc:
构造上传文件名为:`../test.txt `她是`../test.txt`的变形

poc代码参考部分:

```
def test_filename_traversal_upload(self):
    if not os.path.isdir(UPLOAD_TO):
        os.makedirs(UPLOAD_TO)
    self.addCleanup(shutil.rmtree, MEDIA_ROOT)
    file_name = '../test.txt',
    payload = client.FakePayload()
    payload.write(
        '\r\n'.join([
            '--' + client.BOUNDARY,
            'Content-Disposition: form-data; name="my_file"; '
            'filename="%s";' % file_name,
            'Content-Type: text/plain',
            '',
            'file contents.\r\n',
            '\r\n--' + client.BOUNDARY + '--\r\n',
        ]),
    )
    r = {
        'CONTENT_LENGTH': len(payload),
        'CONTENT_TYPE': client.MULTIPART_CONTENT,
        'PATH_INFO': '/upload_traversal/',
        'REQUEST_METHOD': 'POST',
        'wsgi.input': payload,
    }
    response = self.client.request(**r)
    result = json.loads(response.content.decode('utf-8'))
    self.assertEqual(response.status_code, 200)
    self.assertEqual(result['file_name'], 'test.txt')
    self.assertIs(os.path.exists(os.path.join(MEDIA_ROOT, 'test.txt')), False)
    self.assertIs(os.path.exists(os.path.join(UPLOAD_TO, 'test.txt')), True)

```
 
后退
顶部