軟件測試中web威脅類(lèi)型學(xué)習筆記
安全測試檢查系統對非法侵入的防范能力。安全測試期間,測試人員假扮非法入侵者,采用各種辦法試圖突破防線(xiàn)。例如,①想方設法截取或破譯口令;②專(zhuān)門(mén)定做軟件破壞系統的保護機制;③故意導致系統失敗,企圖趁恢復之機非法進(jìn)入;④試圖通過(guò)瀏覽非保密數據,推導所需信息,等等。理論上講,只要有足夠的時(shí)間和資源,沒(méi)有不可進(jìn)入的系統。因此系統安全設計的準則是,使非法侵入的代價(jià)超過(guò)被保護信息的價(jià)值。此時(shí)非法侵入者已無(wú)利可圖。
安全測試用來(lái)驗證集成在系統內的保護機制是否能夠在實(shí)際中保護系統不受到非法的侵入。俗話(huà)說(shuō): “ 系統的安全當然必須能夠經(jīng)受住正面的攻擊 —但是它也必須能夠經(jīng)受住側面的和背后的攻擊。 ”
在安全測試過(guò)程中,測試者扮演著(zhù)一個(gè)試圖攻擊系統的個(gè)人角色。測試者可以嘗試去通過(guò)外部的手段來(lái)獲取系統的密碼,可以使用可以瓦解任何防守的客戶(hù)軟件來(lái)攻擊系統;可以把系統“制服”,使得別人無(wú)法訪(fǎng)問(wèn);可以有目的地引發(fā)系統錯誤,期望在系統恢復過(guò)程中侵入系統;可以通過(guò)瀏覽非保密的數據,從中找到進(jìn)入系統的鑰匙等等!
只要有足夠的時(shí)間和資源,好的安全測試就一定能夠最終侵入一個(gè)系統。系統設計者的任務(wù)就是要把系統設計為想要攻破系統而付出的代價(jià)大于攻破系統之后得到的信息的價(jià)值。
做安全測試,首先要了解所測的那些漏洞的形成原理,學(xué)習并筆記之。
1.孤立資源泄漏
孤立資源——在整個(gè)web應用中沒(méi)有一個(gè)鏈接直接指向該資源,但卻在該應用范圍內存在,通過(guò)某URL請求可以直接訪(fǎng)問(wèn)到。如下圖例子,很顯然暴露了站點(diǎn)的數據庫結構!
web應用在良好的編碼風(fēng)格和雷同架構下,會(huì )出現很多相似的地方。見(jiàn)名知義給了開(kāi)發(fā)者們便利,也一樣給了攻擊者便利。誰(shuí)都知道test可能是一個(gè)測試頁(yè)面,logs目錄下可能是一些日志文件,于是攻擊者也知道這個(gè)規律,窮盡所有猜測就可以形成字典,即使這個(gè)字典不夠完整,可以利用模式匹配。
2.參數操縱
Web應用程序總是需要用戶(hù)交互,需要用戶(hù)提供一些數據。攻擊者則總是會(huì )提供一些超出期望的數據,讓web應用程序拋異常。雖然大多web站點(diǎn)都不會(huì )出現將包含了內部信息的錯誤報告到瀏覽器。但這并沒(méi)有解決根本的問(wèn)題,Web應用仍然存在安全威脅。
如SQL盲注。如果/xxx.jsp?id=1與/xxx.jsp?id=1 and 1=1的返回結果沒(méi)有差別,而/xxx.jsp?id=1 and 1=2則返回報錯,那么這里很有可能存在SQL Injection漏洞,進(jìn)一步,使用(以mysql數據庫為例)/xxx.jsp?id=1 and (select SUBSTRING((select user from mysql.user limit 1),1,1))=’a',可以破解出一個(gè)數據庫用戶(hù)名。
XPath注入,如同針對數據庫的SQL注入,XPath就是針對XML文檔的注入,只是XML中只有字符串。如上面的例子,如果請求訪(fǎng)問(wèn)的是XML文檔,則嘗試/xxx.jsp?id=1′ and ‘1′=’1′。
文件提取,核心的思路是利用了操作系統的父路徑——“..”,通過(guò)一級級訪(fǎng)問(wèn)上級目錄從而訪(fǎng)問(wèn)到web范圍以外服務(wù)器操作系統中的其他文件。
XSS,有Reflected XSS,一般表現為攻擊者構造包含XSS的URL,再利用一些社會(huì )工程學(xué)手段騙得受害者點(diǎn)擊。有Stored XSS,如果包含XSS的代碼被存入了網(wǎng)站數據庫中,而且,頁(yè)面查詢(xún)顯示這筆數據時(shí)沒(méi)有做過(guò)額外的處理,那么只要瀏覽這張頁(yè)面,就會(huì )遭到攻擊。有DOM-based XSS,類(lèi)似Reflect XSS,不同的是由應用程序客戶(hù)端已有的腳本來(lái)實(shí)現,比如url為/xxx.jsp?name=yyy的請求,在回轉的頁(yè)面中,直接用JavaS
會(huì )話(huà)劫持,是指攻擊者以某種形式獲得他人的session id,并以他人身份訪(fǎng)問(wèn)資源。
3.其他
CSRF,簡(jiǎn)單來(lái)說(shuō),正常登錄的用戶(hù)訪(fǎng)問(wèn)A站點(diǎn),訪(fǎng)問(wèn)到某個(gè)鏈接,而這個(gè)鏈接所指向的頁(yè)面,先構造好A站點(diǎn)某個(gè)表單的請求,接著(zhù)提交請求,最后locate到A站點(diǎn)或其他地方,在正常用戶(hù)看來(lái),只是做了一個(gè)頁(yè)面跳轉,而在期間,他不自知的提交了某個(gè)表單的請求,比如發(fā)了一條垃圾評論(很可能包含了攻擊者的那個(gè)特別鏈接)。之所以稱(chēng)為跨站,是因為偽造的請求在另一個(gè)完全不搭界的站點(diǎn)上完成。
Phishing,說(shuō)白了就是網(wǎng)站偽造欺詐,從而簡(jiǎn)單的獲得用戶(hù)的個(gè)人信息。
DoS,一句話(huà),惡意請求的數量過(guò)多,導致正常請求不能處理而被拒絕。
為了更好的解決問(wèn)題,首先要了解問(wèn)題的本質(zhì)。到目前,有些問(wèn)題已經(jīng)比較明晰,有些問(wèn)題還有待深入研究,我將繼續fighting!
文中例子或山寨描述,都屬自己的理解,如有錯誤,請批評指正!謝謝^_^
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/