背景介紹
Web應(yīng)用一般是指B/S架構(gòu)的通過HTTP/HTTPS協(xié)議提供服務(wù)的統(tǒng)稱。隨著互聯(lián)網(wǎng)的發(fā)展,Web應(yīng)用已經(jīng)融入了我們的日常生活的各個方面。在目前的Web應(yīng)用中,大多數(shù)應(yīng)用不都是靜態(tài)的網(wǎng)頁瀏覽,而是涉及到服務(wù)器的動態(tài)處理。如果開發(fā)者的安全意識不強(qiáng),就會導(dǎo)致Web應(yīng)用安全問題層出不窮。
我們一般說的Web應(yīng)用攻擊,是指攻擊者通過瀏覽器或者其他的攻擊工具,在URL或者其他的輸入?yún)^(qū)域(如表單等),向Web服務(wù)器發(fā)送特殊的請求,從中發(fā)現(xiàn)Web應(yīng)用程序中存在的漏洞,進(jìn)而操作和控制網(wǎng)站,達(dá)到入侵者的目的。
常見安全漏洞
一、SQL注入
SQL注入(SQL Injection),是最常見影響非常廣泛的漏洞。攻擊者通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令,從而入侵?jǐn)?shù)據(jù)庫來執(zhí)行未授意的任意查詢。
SQL注入可能造成的危害有:網(wǎng)頁、數(shù)據(jù)被篡改,核心數(shù)據(jù)被竊取,數(shù)據(jù)庫所在的服務(wù)器被攻擊,變成傀儡主機(jī)。
例如有些網(wǎng)站沒有使用預(yù)編譯sql,用戶在界面上輸入的一些字段被添加到sql中,很有可能這些字段包含一些惡意的sql命令。如:password = "1' OR '1'='1";即使不知道用戶密碼,也能正常登錄。
測試方法:
在需要進(jìn)行查詢的頁面,輸入正確查詢條件 and 1=1等簡單sql語句,查看應(yīng)答結(jié)果,如與輸入正確查詢條件返回結(jié)果一致,表明應(yīng)用程序?qū)τ脩糨斎胛催M(jìn)行過濾,可以初步判斷此處存在SQL注入漏洞
二、XSS跨站腳本攻擊
SS(Cross Site Script),與SQL注入相似,XSS是通過網(wǎng)頁插入惡意腳本,主要用到的技術(shù)也是前端的html和JAVAScript腳本。當(dāng)用戶瀏覽網(wǎng)頁時,實現(xiàn)控制用戶瀏覽器行為的攻擊方式。
一次成功的XSS,可以獲取到用戶的cookie,利用該cookie盜取用戶對該網(wǎng)站的操作權(quán)限;也可以獲取到用戶聯(lián)系人列表,利用被攻擊者的身份向特定的目標(biāo)群發(fā)送大量的垃圾信息,等等。
XSS分為三類:存儲型(持久性XSS)、反射型(非持久性XSS)、DOM型。
測試方法:
在數(shù)據(jù)輸入界面,輸入:<script>alert(/123/)</script>,保存成功后如果彈出對話框,表明此處存在一個XSS 漏洞。
或把url請求中參數(shù)改為<script>alert(/123/)</script>,如果頁面彈出對話框,表明此處存在一個XSS 漏洞。
三、CSRF跨站偽造請求攻擊
CSRF(Cross Site Request Forgery),利用已登錄的用戶身份,以用戶的名義發(fā)送惡意請求,完成非法操作。
例如:用戶如果瀏覽并信任了存在CSRF漏洞的網(wǎng)站A,瀏覽器產(chǎn)生了相應(yīng)的cookie,用戶在沒有退出該網(wǎng)站的情況下,訪問了危險網(wǎng)站B 。
危險網(wǎng)站B要求訪問網(wǎng)站A,發(fā)出一個請求。瀏覽器帶著用戶的cookie信息訪問了網(wǎng)站A,因為網(wǎng)站A不知道是用戶自身發(fā)出的請求還是危險網(wǎng)站B發(fā)出的請求,所以就會處理危險網(wǎng)站B的請求,這樣就完成了模擬用戶操作的目的。這就是CSRF攻擊的基本思想。
測試方法:
1.同個瀏覽器打開兩個頁面,一個頁面權(quán)限失效后,另一個頁面是否可操作成功,如果仍然能操作成功即存在風(fēng)險。
2.使用工具發(fā)送請求,在http請求頭中不加入referer字段,檢驗返回消息的應(yīng)答,應(yīng)該重新定位到錯誤界面或者登錄界面。
四、文件上傳漏洞
文件上傳攻擊是指攻擊者上傳了一個可執(zhí)行文件到服務(wù)器上,并執(zhí)行。
這種攻擊方式是最直接有效的。上傳的文件可以是病毒、木馬、惡意腳本或者是webshell等等。
Webshell是以asp、php、jsp或者cgi等網(wǎng)頁文件形式存在的一種命令執(zhí)行環(huán)境,也可以說是一種網(wǎng)頁后門。攻擊者在受影響系統(tǒng)防止或插入webshell后,可以通過webshell方便進(jìn)入系統(tǒng),達(dá)到控制網(wǎng)站服務(wù)器的目的。
測試方法:
對上傳的文件類型、大小等進(jìn)行嚴(yán)格校驗,禁止上傳惡意代碼的文件。
對相關(guān)目錄的執(zhí)行權(quán)限進(jìn)行校驗,可以通過瀏覽器訪問Web 服務(wù)器上的所有目錄,檢查是否返回目錄結(jié)構(gòu),如果顯示的是目錄結(jié)構(gòu),則可能存在安全問題。
五、URL跳轉(zhuǎn)漏洞
URL跳轉(zhuǎn)漏洞,即未經(jīng)驗證的重定向漏洞,是指Web程序直接跳轉(zhuǎn)到參數(shù)中的URL,或者在頁面中引入了任意開發(fā)者的URL,將程序引導(dǎo)到不安全的第三方區(qū)域,從而導(dǎo)致安全問題。
測試方法:
1.使用抓包工具抓取請求。
2.抓取302的url,修改目標(biāo)地址,查看是否能跳轉(zhuǎn)。
ps:不過現(xiàn)在很多跳轉(zhuǎn)都加了referer的校驗導(dǎo)致攻擊者跳轉(zhuǎn)失敗。
總結(jié)
以上便是一些常見的Web安全漏洞及測試方法,在當(dāng)下網(wǎng)絡(luò)安全越來越被重視的情況下,Web安全測試在測試流程中的重要性也日益凸顯,雖然也存在AppScan等漏洞掃描工具,測試人員對常見的安全漏洞也需要有一定的認(rèn)知。
作者簡介:張斌,6年測試工作經(jīng)驗,精通自動化測試、性能測試、持續(xù)交付以及整體產(chǎn)品質(zhì)量提升。






