menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right ... chevron_right 035-Django chevron_right 004-CVE-2017-12794 Django debug page XSS漏洞.md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    004-CVE-2017-12794 Django debug page XSS漏洞.md
    1.24 KB / 2021-07-17 00:01:28
        # CVE-2017-12794 Django debug page XSS漏洞
    
    ### 一、漏洞简介
    
    Django 发布了新版本1.11.5,修复了500页面中可能存在的一个 XSS 漏洞
    
    ### 二、漏洞影响
    
    Django < 1.11.5
    
    ### 三、复现过程
    
    经过我的测试,我发现在使用Postgres数据库并触发异常的时候,psycopg2会将字段名和字段值全部抛出。那么,如果字段值中包含我们可控的字符串,又由于0x02中说到的,这个字符串其实就会被设置成`__cause__`,最后被显示在页面中。
    
    所以我们假设有如下场景:
    
    * 用户注册页面,未检查用户名
    * 注册一个用户名为alert(1)的用户
    * 再次注册一个用户名为alert(1)的用户
    * 触发duplicate key异常,导致XSS漏洞
    
    访问`http://url:8000/create_user/?username=alert(1)`创建一个用户,成功;再次访问`http://url:8000/create_user/?username=alert(1)`,触发异常:
    
    ![](images/15889978156860.png)
    
    
    可见,Postgres抛出的异常为
    
    
    ```bash
    duplicate key value violates unique constraint "xss_user_username_key"
    DETAIL:  Key (username)=(<script></script>) already exists.
    ```
    
    这个异常被拼接进`The above exception ({{ frame.exc_cause }}) was the direct cause of the following exception`,最后触发XSS。
    
    links
    file_download