SQL Injection問題-偵測滲透成功的方法

SQL Injection 也存在很久了, 通常要發生大規模爆發, 一定是有新的弱點或新的工具產出. 最近在找相關資料時, 發現還蠻有趣(應該說蠻恐怖的)一個資料: http://huaidan.org/archives/2287.html

其中的第2點: Time-Based Blind SQL Injection using heavy queries: A practical approach for MS SQL Server, MS Access, Oracle and MySQL databases and Marathon Tool

這個讓我想起來, 在我還在唸書的時候, 有修過一門課, 叫做實驗設計, 其實和這個有一些關係, 在分析變因時, 會用許多測試的手法來反覆驗證該變因或是該因素是否對該實驗結果有效這件事. 也和 QC 品質測試有關係, QC 在做黑箱測試時, 也是所謂的 blind test 的方式, 來找出是否有什麼系統上的缺陷和瑕疵, 其實這些方法, 應用在 SQL Injection 上的測試, 也是一樣的.

我們可以看到該文章後面提到的許多有趣的方法來做這件事. 尤其是一個有趣的技術, 就是直接餵入”費時”查詢來偵測 http response 的時間, 來看看是否成滲透成功, 一般說來, 判定滲透是否成功, 往往要由 http response 的結果來看, 其實是不太容易自動化的, 但若是使用 http resopnse 時間來做這件事, 我們來想想背後的目的, 就是 “自動化” 的這件事.

其實要真的試看看漏洞, 若是需要人來看, 往往能找的量就少, 不過若是能利用 http response time 來偵測判定, 能夠變成自動化的話, 效率就高很多, 再利用多方工具配合下, 其實….

能做的就相當多了….

真的是一個很不錯的偵測滲透方式, 給大家參考.

[2008/12/29 18:11]
繼續閱讀:
http://www.wretch.cc/blog/Domynews/9731368

分類
好用軟體

FireBug更新功能-Network Monitoring

之前介紹過了一個在 FireFox 下非常好用的除錯及觀察工具, FireBug (https://diary.tw/tim/7), 前一次更新後, 發現它多了不少功能, 其中有一項特別值得提出來給大家參考的就是 Net 標籤下的 Network Monitoring 功能.

這個功能十分強大, 用看得就覺得不得了了, 之前也有介紹一個超好用的 Fiddler (https://diary.tw/archives/287), 這個強大的功能和 fiddler 不相上下, 它可以觀察整個 http request 的過程及網頁的 download 狀態, 而 fiddler 僅能用在 ie, firebug 新增的這個功能, 讓在 firefox 的用戶也有對應的工具可以做 network 傳輸上的除錯, 真的十分有用.

respnoseXML與responseText的不同

幾天前, 好友問了一個問題, responseXML 沒有資料, 要怎麼解決, 我沒仔細思考, 完全沒注意到, responseXML就是一個非文字的物件, 於是寫了個程式試了一下, 發現原來 Request 回傳的內容, 若為 xml 的話, 取得 responseXML 屬性, 將會是一個 xml document 物件.

然而, 若回傳的資料並為是 well-formed xml 時, 該屬性將會是 null 而無法使用. 而一般常用的 ajax 若只是用來做畫面更新, 而非資料傳遞時, 可以參考這篇: https://diary.tw/archives/274 的例子, 是直接使用 responseText 來取回回傳的一般文字內容.

這樣應該可以清楚地解釋這兩者間的不同, 還有許多技術文章可以參考:

http://java.chinaitlab.com/server/366657.html
http://javascript.about.com/library/blajax08.htm
http://www.informit.com/articles/article.asp?p=443580&seqNum=4&rl=1

這篇的技巧也相當有用, 利用回傳的文字, 傳回 javascript, 再利用 eval 方式將變數賦值, 的確還蠻有意思的:
http://www.128kj.com/article/article6/9467334B1D15AAC57AA5F0F25D0008FF.htm?id=1343