讀《SQL注入天書之ASP注入漏洞全接觸》感(薦)

作者:leen 來源:千一網絡 日期:2005-1-20

看了小竹的《SQL 注入天書之 ASP 注入漏洞全接觸》,感覺這篇文章寫得非常好,由淺入深,實例詳盡,對新手起到教學作用,對老手起到交流探討作用,目前近 40% 的 ASP 網頁均存在此漏洞,可以說《SQL 注入天書之 ASP 注入漏洞全接觸》也來得非常實用。

我是從其它網站上拷貝到千一網絡的,我對其中的個別部分進行了修改,我想可能是別人在拷貝這篇文章時把其中的某些部分弄錯了,在此向作者說明,其中修改的部分是去掉部分 sql 語句中的 ";" 號,如:

http://www.mytest.com/showdetail.asp?id=49 ;and (select count(*) from sysobjects)>0

修改為:

http://www.mytest.com/showdetail.asp?id=49 and (select count(*) from sysobjects)>0

SQL Server 注入漏洞可能造成什么損失呢?

  • 輕:查看數據庫名、SQL Server 連接名、得到表的字段與記錄等。
  • 重:備份數據庫、下載數據庫、在計算機內添加管理員等。

“查看數據庫名、SQL Server 連接名、得到表的字段與記錄”之類的攻擊,對于存在注入漏洞的網頁一般都可實現。但若是使用 Web 管理網站,Web 的密碼又沒加密,這樣事態就變嚴重了。另外對于 SELECT 語句,如果沒有控制好 LockType(應設置為 adLockReadOnly),也是很嚴重的。

如何徹底防范注入漏洞:

一、對進入 sql 語句的數字先進行類型轉換;

二、對進入 sql 語句的字符,將單引號 ("'") 替換為兩個單引號 ("''") ;

僅此兩點即可,也許有人會問,那么文中第 8 頁所說:

在入門篇提到,有很多人喜歡用 ' 號測試注入漏洞,所以也有很多人用過濾 ' 號的方法來“防止”注入漏洞,這也許能擋住一些入門者的攻擊,但對 SQL 注入比較熟悉的人,還是可以利用相關的函數,達到繞過程序限制的目的。

是什么意思呢?既然說進行類型轉換,過濾掉 "'" 就可以了,這里怎么又說可以繞過 "'" 的限制呢?其實,這里所說的是指對數字類型或我們注入添加的 sql。也就是說:

對 sql = " …… where id=" & request.QueryString("id")

用 **.asp?id=char(50),char 會起到函數的作用

或者 where xtype=char(85)(見文中第 8 頁),char 也會起到函數的作用。

但對于 sql = " …… where key='" & request.QueryString("key") & "'"

用 **.asp?key=char(50),這里的 char(50) 是不起作用的,為什么呢?

套入 sql 一看,語句是這樣的:

sql = " …… where key='char(50)'"

char(50) 位于 "'" 內,變成了字符(串),所以就起不到函數的作用了。

養成好的習慣,制定統一的規范

上面的方法確實解決了注入漏洞問題,但并不表示其它地方可以馬虎了,為什么要馬虎了,為什么要讓自己的網頁千瘡百孔,讓幾句代碼去獨擋一面呢?如果不養成好的習慣,團體之間如果不制定統一的規范,今天這個問題解決了,明天那個問題還會出現。

1、使用 RecordSet 記錄集之前必須判斷 RecordSet 的 BOF 或 EOF 屬性。

2、對于 SELECT 語句,除了不得已的情況,LockType 必須設置為 adLockReadOnly。

3、放入數據庫中的密碼應該使用良好的加密算法進行加密,同時也禁止密碼以明文的形式存在于頁面文件中。

4、在 Web 條件下,在非本機調試的情況下,不得使用 sa 連接數據庫。

5、對于需要用戶權限的平臺,必須將用戶名和密碼載入 session,然后在需要的頁面進行判斷,不得使用 if session("loginOK")<>"" then 之類的語句來判斷用戶是否是合法用戶。

……

必要時,可以禁止 IIS 返回詳細的出錯信息,可以禁止 public 對 sysobjects 表的 SELECT 權限。

……

安全不是一方面的,僅靠幾個規范幾個好的習慣并不能保證能造就出安全的空間,1 個 False 與 99 個 True 進行“與”運算,結果還是 False,從中可以看出,哪怕只有一點錯誤,都可能導致結果全盤被否定。Web 安全,除了注入漏洞,還有 FTP 設置錯誤、Web 服務設置錯誤、后臺程序漏洞這些最最基本的都可能導致服務器整個被人控制,所以處處都要三思啊。

你前面那位網友看了:微軟 Office 365 定期賬單問題

▲▲▲嘿,歡迎轉載傳播本站原創文章,盡量保留來源噢。▲▲▲

文章評論
標題:必填
內容:
最新22选5开奖公告