您好,登錄后才能下訂單哦!
在登錄網站后臺時,有一個比較古老的“萬能密碼”漏洞,即利用一個我們精心構造的用戶名,即使不用輸入密碼,也可以登錄后臺,其原理仍屬于SQL注入的范疇。
假設數據庫中存放用戶信息的表是admin,其中存放用戶名的字段是username,存放密碼的字段是password,在用戶驗證頁面中用來接收用戶所輸入的用戶名和密碼的變量也分別是username和password,當用戶在用戶驗證頁面輸入用戶名和密碼后,會提交給如下的語句進行處理:
select * from admin where `username` = ‘$userrname’ and `password` = ‘$password’
這樣,當用戶輸入用戶名'or '' = '時,相應的語句就變成了
select * from admin where `username` = ‘’ or ‘’ =‘’and `password` = ‘’
在這個語句中,where后面所指定的條件永久成立,因而就可以繞過身份驗證,也就成為了所謂的萬能密碼。
萬能密碼中開頭和結尾的單引號,主要是為了將查詢語句中引用變量的單引號閉合。因而掌握了這個特點之后,我們就可以來任意構造萬能密碼,比如下面的幾種形式:
' or 'a'='a'or'a'='a
' or ‘a’ = ‘a’ or ‘
' or 1=1 or ‘
下面我們就搭建一個實驗環境來驗證萬能密碼,這里使用軟件NPMserv來搭建實驗平臺,利用該軟件可以快速搭建一個nginx+php+mysql的Web平臺。軟件內置了2個帶有漏洞的php網站,在使用時只需將相應網站所在的文件夾改名為www即可啟用。軟件下載地址:http://down.51cto.com/data/1886128。
環境搭建好之后,訪問網站:
點擊“管理中心”,登錄后臺。在“用戶名”中構造一個萬能密碼登錄,“密碼”可以不輸或者隨意輸入:
可以成功登錄:
下面在WAF中設置策略,來對萬能密碼進行過濾。
首先在策略管理中新建一條名為P-deny的策略。
然后在“基本***防護”中對策略進行設置,將狀態設為“開啟”,動作設為“阻止”。
仍是在“基本***防護”中來創建自定義規則,神州數碼WAF的絕大部分功能都是通過自定義規則來實現的,因而這里是WAF設置的重中之重。
這里創建一條名為“nopass”的規則,在規則中主要是來定義正則表達式,對SQL注入的語句進行過濾。
在檢測域中設置“參數”,在匹配方式中設置“正則匹配”,在數值中設置正則表達式。
這里根據萬能密碼的特點,我設置如下的正則表達式:
.*’.*or.*’
.可以匹配任意字符;
*表示表達式不出現或者出現任意次,因而.*可以匹配任意數量的任意字符。
策略設置完成后,在服務管理中將P-deny策略應用到之前創建的web策略上。
這樣當在客戶端再次通過萬能密碼登入后臺時,便會報錯。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。