久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

如何判斷目標站點是否為Django開發

老文一篇,幾個月以前發在【代碼審計】小密圈里的文章,當時是寫一個系列(Django安全漫談),抽出其中的一部分,分享一下。

在黑盒測試的情況下,如何判斷一個站是否是Django開發的?以下這些方法,很多都能在我的博客(?https://www.leavesongs.com?)得到印證。

利用Debug模式異常頁面判斷

DEBUG模式開啟時,訪問不存在的頁面或出錯的頁面會有特殊的異常拋出。像這樣的頁面,就可以確定是Django

如何判斷目標站點是否為Django開發

訪問一個包含表單的頁面,表單中會有一個隱藏的input,用來做CSRF檢測的Token,其名字比較獨特,csrfmiddlewaretoken:

如何判斷目標站點是否為Django開發

遇到有這個名字的表單,基本可以確定是Django。

假如開發者將?csrfmiddlewaretoken?這個名字換了,怎么辦?

隨便向目標的某個頁面POST一個數據包,因為缺少CSRF TOKEN,如果目標網站是Django,它將給你一個頗具其特色的錯誤頁面:

如何判斷目標站點是否為Django開發

Django默認安裝后會自帶一個后臺,地址是/admin(不過大多數網站會替換后臺地址):

如何判斷目標站點是否為Django開發

遇到這個樣式的后臺界面,可以確定是Django。

有的Django站點會返回Server頭:

如何判斷目標站點是否為Django開發

雖然不能100%確定是Djnago,但范圍就縮的很小了。

有些細節雖然不能100%確定是django,但多個細節組成在一起就可以基本確定了。

比如,Django輸出的html中通常會有很多空白行,因為這些位置放的是邏輯語句,Django不像jinja2中會提供?{%-?這樣清除空白行的方法:

如何判斷目標站點是否為Django開發

再比如,Django默認找回密碼的鏈接是?/password_reset/?,郵件發送成功是?/password_reset/done/?,找回密碼鏈接是?reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/?,找回密碼成功是?/reset/done/?,正常修改密碼是?/password_change/?,修改成功是?/password_change/done/?。

不過這些鏈接都可以改,只能用作參考。

再比如,django文件上傳的目錄通常叫?media?,注冊時密碼要求8位以上數字加字母,分頁通常是??page=2?而不會是?/page/2/?,表單輸入框的id通常是?id_xxxx?,中文的情況下還會有一些特定的翻譯語句,如?請上傳一張有效的圖片。您所上傳的文件不是圖片或者是已損壞的圖片。?、?CSRF驗證失敗. 相應中斷.?等。

通過一些第三方模塊的特點判斷

Django之所以好用,因為其代碼耦合性很低,所以有豐富的第三方模塊可以直接使用。通過這些模塊的特點也能判斷目標網站是否是Django。

常用的第三方模塊有django-rest-framework、django-debug-toolbar、django-bootstrap3、django-filter、django-cron、django-allauth、django-simple-captcha等。

比如,django-rest-framework默認包含一個登陸頁面,?/api-auth/login/?:

如何判斷目標站點是否為Django開發

再比如,django-simple-captcha生成的驗證碼會包含一個名字是?captcha_0?,值為40位hex的隱藏輸入框。

這些第三方庫的特點也可以輔助你判斷,就是需要收集與細心觀察了。

必殺技:用靜態文件分析

有的網站可能修改了Django的后臺地址,但Django后臺所使用的靜態文件地址通常沒有修改,也較難修改。訪問這些靜態文件地址,看看內容是否是Django的這一套,就可以確定目標是否為Django:

如?https://www.leavesongs.com/static/admin/css/dashboard.css?、?http://www.wuzheng.org/static/admin/css/dashboard.css?、?http://static.fuwo.com/static/admin/css/dashboard.css?、?http://www.lintcode.com/static/admin/css/dashboard.css

如何判斷目標站點是否為Django開發

我就不羅列了。

但這個方法有個局限,如果目標網站沒有使用Django自帶的django-admin(未將其包含在settings.py的INSTALLED_APPS中),就沒有這個靜態文件了。

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 柞水县| 无为县| 英山县| 化州市| 香格里拉县| 宣恩县| 巨鹿县| 河北区| 萨嘎县| 新民市| 赫章县| 淳化县| 云南省| 九龙城区| 博兴县| 桦甸市| 修水县| 河东区| 开阳县| 西乌珠穆沁旗| 浦东新区| 应用必备| 东莞市| 大同市| 丹东市| 抚顺市| 铁力市| 南宁市| 田东县| 宜宾市| 高青县| 安义县| 筠连县| 博白县| 崇义县| 洛川县| 枣阳市| 温州市| 贺州市| 日喀则市| 东丰县|