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