web安全測試
- 2020 年 5 月 8 日
- 筆記
- 多測師_web安全測試
1.1什麼是web安全測試?
Web安全測試就是要提供證據表明,在面對敵意和惡意輸入的時候,web系統應用仍然能夠充分地滿足它的需求
1.2為什麼進行Web安全測試
2005年06月,CardSystems,黑客惡意侵入了它的電腦系統,竊取了4000萬張信用卡的資料。
2011年12月,國內最大的開發者社區CSDN被黑客在互聯網上公布了600萬註冊用戶的數據;黑客隨後陸續公布了網易、人人、天涯、貓撲等多家大型網站的數據信息。
2014年12月,大量12306用戶數據被泄露,被泄露的數據達131653條,包括用戶賬號、明文密碼、身份證和郵箱等多種信息。
2018年03月,Facebook泄露數千萬用戶的數據,信息被違規濫用,導致股價一度下跌;12月再次因一個軟件漏洞導致用戶的私人照片遭泄露。
目前web應用越來越廣泛,web安全威脅也就更明顯,而web攻擊隱蔽性強,危害性大。因而web安全測試也就顯得尤為必要了。
1.3web安全的認識誤區
lWeb網站使用了防火牆,所以很安全
lWeb網站使用了IDS,所以很安全
lWeb網站使用了SSL加密,所以很安全
l漏洞掃描工具沒發現任何問題,所以很安全
l我們每季度都會聘用安全人員進行審計,所以很安全
2:web攻擊的主要類型
跨站腳本(XSS)攻擊
SQL注入
XML注入
目錄遍歷
上傳漏洞攻擊
下載漏洞攻擊
信息泄露
訪問控制錯誤
2.1跨站腳本(XSS)攻擊
XSS又叫CSS(CrossSiteScript),跨站腳本攻擊。它指的是惡意攻擊者往Web頁面里插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web裏面的html代碼會被執行,從而達到惡意用戶的特殊目的。
盜取Cookie
釣魚
操縱受害者的瀏覽器
蠕蟲攻擊
反射型跨站(reflected xss)
服務端獲取HTTP請求中的參數,未經過濾直接輸出到客戶端。如果這些參數是腳本,它將在客戶端執行。(釣魚常見)
存儲型跨站(Sstored xss)
用戶輸入的數據存放在服務端(一般放數據庫里),其他用戶訪問某個頁面時,這些數據未經過濾直接輸出。這些數據可能是惡意腳本,對其他用戶造成危害。(掛馬常見)
mom跨站(DOM-Based XSS)
攻擊者提交的惡意數據並未顯式的包含在web服務器的響應頁面中,但會被頁面中的js腳本以變量的形式來訪問到,導致瀏覽器在渲染頁面執行js腳本的過程中,通過DOM操作執行了變量所代表的惡意腳本。
跨站請求偽造(csrf)
強迫受害者的瀏覽器向一個易受攻擊的Web應用程序發送請求,最後達到攻擊者所需要的操作行為。惡意請求會帶上瀏覽器的Cookie。受攻擊的Web應用信任瀏覽器的Cookie

2.2 sql注入
將SQL命令人為的輸入到URL、表格域、或者其他動態生成的SQL查詢語句的輸入參數中,完成SQL攻擊。
查詢數據庫中的敏感內容
繞過認證
添加、刪除、修改數據
拒絕服務
典型例子:
原URL://localhost/name?nameid=222
攻擊SQL注入://localhost/name?nameid=『』or1=1
注入點一般存在以下幾個地方:

2.3XML注入
和SQL注入原理一樣,XML是存儲數據的地方,如果在查詢或修改時,如果沒有做轉義,直接輸入或輸出數據,都將導致XML注入漏洞。攻擊者可以修改XML數據格式,增加新的XML節點,對數據處理流程產生影響。

2.4目錄遍歷
目錄遍歷攻擊指的是:惡意用戶找到受限文件的位置並且瀏覽或者執行它們。
攻擊者瀏覽受限文件,比如讀取配置文件、密碼文件等,就會破壞隱私,甚至引發安全問題。而如執行了受限的文件,攻擊者就可以根據自己的意願來控制和修改web站點

2.5上傳文件
Web應用程序在處理用戶上傳的文件時,沒有判斷文件的擴展名是否在允許的範圍內,或者沒檢測文件內容的合法性,就把文件保存在服務器上,甚至上傳腳本木馬到web服務器上,直接控制web服務器。
未限制擴展名
未檢查文件內容
病毒文件
2.6任意文件下載
Web應用程序提供下載文件的路徑時,文件的路徑用戶可控且未校驗或校驗不嚴,攻擊者通過」../」字符來遍歷高層目錄,並且嘗試找到系統的配置文件或者系統中存在的敏感文件。
下載任意附件
下載數據庫配置文件等
2.7消息泄露
Web應用程序在處理用戶錯誤請求時,程序在拋出異常的時候給出了比較詳細的內部錯誤信息,而暴露了不應該顯示的執行細節,如文件路徑、數據庫信息、中間件信息、IP地址等
2.8訪問控制錯誤
系統沒有對URL的訪問作出限制或者系統已經對URL的訪問做了限制,但這種限制卻實際並沒有生效。攻擊者能夠很容易的就偽造請求直接訪問未被授權的頁面。
例如,通過一個參數表示用戶通過了認證:
//www.example.com/userinfo.jsp?authenticated=no 通過修改authenticated參數為Yes:
//www.example.com/userinfo.jsp?authenticated=yes
3.1web安全測評要求
信息系統的安全保護等級分為五級,一至五級等級越高,約束越嚴格。以二級為例,應用安全測評要求(二級)為:身份鑒別、訪問控制、安全審計、通信完整性、通信保密性、軟件容錯、資源控制;

3.2web安全測試方法
手動測試(結合測評要求)
自動測試
混合測試

手動測試 :
1.不登錄系統,直接輸入登錄後的頁面的url是否可以訪問
2.不登錄系統,直接輸入下載文件的url是否可以下載,如輸入//url/download?name=file是否可以下載文件file
3.退出登錄後按後退按鈕能否訪問之前的頁面
4.ID/密碼驗證方式中能否使用簡單密碼。如密碼標準為6位以上,字母和數字混合,不能包含ID,連續的字母或數字不能
超過n位
5.重要信息(如密碼,身份證號碼,信用卡號等)在輸入或查詢時是否用明文顯示;在瀏覽器地址欄里輸入命令
javascrīpt:alert(doucument.cookie)時是否有重要信息;在html源碼中能否看到重要信息
6.手動更改URL中的參數值能否訪問沒有權限訪問的頁面。如普通用戶對應的url中的參數為l=e,高級用戶對應的url中的參
數為l=s,以普通用戶的身份登錄系統後將url中的參數e改為s來訪問本沒有權限訪問的頁面
7.url里不可修改的參數是否可以被修改
8.上傳與服務器端語言(jsp、asp、php)一樣擴展名的文件或exe等可執行文件後,確認在服務器端是否可直接運行
9.註冊用戶時是否可以以’–,’or1=1–等做為用戶名
10.傳送給服務器的參數(如查詢關鍵字、url中的參數等)中包含特殊字符(’,’and1=1–,’and1=0–,’or1=0–)時是否可
以正常處理
11.執行新增操作時,在所有的輸入框中輸入腳本標籤(<scrīpt>alert(“”)< scrīpt><=”” font=””>)後能否保存
12.在url中輸入下面的地址是否可以下載:
//url/download.jsp?file=C:\windows\system32\drivers\etc\hosts,//url/download.jsp?file=/etc/passwd
13.是否對session的有效期進行處理
14.錯誤信息中是否含有sql語句、sql錯誤信息以及web服務器的絕對路徑等
15.ID/密碼驗證方式中,同一個賬號在不同的機器上不能同時登錄
16.ID/密碼驗證方式中,連續數次輸入錯誤密碼後該賬戶是否被鎖定
17.新增或修改重要信息(密碼、身份證號碼、信用卡號等)時是否有自動完成功能(在form標籤中使用autocomplete=off
來關閉自動完成功能
3.3工具的使用
AWVS
WebInspect
AppScan
AppScan原理
通過搜索(爬行)發現整個Web應用結構
根據分析,發送修改的HTTPRequest進行攻擊嘗試(掃描規則庫)
通過對於Respone的分析驗證是否存在安全漏
