相信對(duì)于互聯(lián)網(wǎng)大家都已經(jīng)不陌生了吧,現(xiàn)在有很多年輕人對(duì)于IT技術(shù)已經(jīng)很了解,并且正在學(xué)習(xí)的也有很多,web安全就是其中的一種,今天小猿圈web安全講師就為大家講解一下Web安全性測(cè)試介紹。
安全性測(cè)試主要是指利用安全性測(cè)試技術(shù),在產(chǎn)品沒(méi)有正式發(fā)布前找到潛在漏洞。找到漏洞后,需要把這些漏洞進(jìn)行修復(fù),避免這些潛在的漏洞被非法用戶(hù)發(fā)現(xiàn)并利用。像我們測(cè)試中找軟件產(chǎn)品bug一樣,安全漏洞也是很難完全避免的。
黑客攻擊技術(shù)會(huì)層出不窮,而無(wú)論怎么樣,我們所做的web網(wǎng)站一定是需要對(duì)用戶(hù)提供一些服務(wù),會(huì)開(kāi)放一些端口,甚至給用戶(hù)提供一些輸入的界面,而這些方面都有可能成為漏洞的載體。還有一個(gè)主要原因是因?yàn)槌绦騿T在開(kāi)發(fā)過(guò)程中很可能會(huì)埋下一個(gè)漏洞,或者人為的安全性漏洞,都是需要我們?nèi)ケ苊獾摹?/p>
對(duì)于web系統(tǒng)來(lái)說(shuō),它是一個(gè)標(biāo)準(zhǔn)的網(wǎng)絡(luò)結(jié)構(gòu)的系統(tǒng),所以跟協(xié)議有關(guān)的漏洞我們需要去避免,其次它是通過(guò)瀏覽器為載體的,瀏覽器層面的漏洞我們需要去注意。一般是使用網(wǎng)頁(yè)與用戶(hù)進(jìn)行交互,而網(wǎng)頁(yè)有很多操作可以通過(guò)JavaScript來(lái)進(jìn)行的,我們很有可能直接繞開(kāi)這個(gè)界面,直接給服務(wù)器發(fā)數(shù)據(jù)包。比如:目前商城測(cè)試中某文本框,只能輸入不大于20字,那么javascript在文本框的輸入數(shù)據(jù)字?jǐn)?shù)進(jìn)行限制,但是在服務(wù)器沒(méi)有進(jìn)行限制,我們直接發(fā)多于20字的文本到服務(wù)端,服務(wù)端可以照單全收,這也是個(gè)問(wèn)題。
具體來(lái)說(shuō),安全性測(cè)試主要包括以下幾個(gè)部分內(nèi)容:
認(rèn)證與授權(quán)
Session與Cookie
DDOS拒絕服務(wù)攻擊
文件上傳漏洞
XSS跨站攻擊
SQL注入
認(rèn)證與授權(quán)
盡量避免未被授權(quán)的頁(yè)面可以直接訪問(wèn),應(yīng)該對(duì)每個(gè)頁(yè)面都有一個(gè)session變量的判斷。如果沒(méi)有判斷只要用戶(hù)知道URL地址就能進(jìn)行訪問(wèn)。
測(cè)試方法:
在不登陸的情況下,使用絕對(duì)URL地址對(duì)頁(yè)面進(jìn)行訪問(wèn),能否正常訪問(wèn),絕對(duì)URL地址直接通過(guò)httpwatch對(duì)每個(gè)請(qǐng)求進(jìn)行獲取。
Session與Cookie
Http是一種無(wú)狀態(tài)性的協(xié)議,這種協(xié)議不要求瀏覽器在每次請(qǐng)求中標(biāo)明他自己的身份,每次發(fā)個(gè)請(qǐng)求回個(gè)響應(yīng)即可,那怎么校驗(yàn)發(fā)請(qǐng)求的人的身份呢?這就催生了Cookies。
本質(zhì)上Cookies就是http的一個(gè)擴(kuò)展,有兩個(gè)http頭部是專(zhuān)門(mén)負(fù)責(zé)設(shè)置和發(fā)送cookies的(Set-Cookies,Cookies)當(dāng)服務(wù)器返回給客戶(hù)端一個(gè)http相應(yīng)的時(shí)候,其中如果包含Set-Cookies這個(gè)頭部,就意味著讓客戶(hù)端建立cookie,并且在后續(xù)的請(qǐng)求中自動(dòng)發(fā)送這個(gè)cookies到服務(wù)器,一直到這個(gè)cookie過(guò)期。
Session,最簡(jiǎn)單的針對(duì)session的攻擊就是跨站請(qǐng)求偽造。關(guān)鍵點(diǎn)是如何不讓攻擊者獲取到sessionid,然后偽裝成正常訪問(wèn)者,但是從理論上來(lái)說(shuō)這是不能絕對(duì)實(shí)現(xiàn)的,我們只能通過(guò)不同的手法增加攻擊者獲取sessionid的難度,有三種方法:
驗(yàn)證請(qǐng)求頭中的數(shù)據(jù),比如驗(yàn)證User-Agent的變化;
增加token校驗(yàn);
利用get.post.cookie等不同的傳輸方式來(lái)傳遞sessionid和token等增加攻擊者獲取難度。
我們應(yīng)避免保存敏感信息到cookie文件中,cookie的保存可以提高用戶(hù)的體驗(yàn)。
作用域:不同應(yīng)用系統(tǒng)不同作用域。
DDOS拒絕服務(wù)攻擊
分布式的拒絕服務(wù)式攻擊(攻擊服務(wù)器的電腦分布在不同地方,向服務(wù)器發(fā)送請(qǐng)求)的兩種方式:
1)使用肉機(jī)
通過(guò)設(shè)置木馬讓很多電腦受遠(yuǎn)程控制,幫忙執(zhí)行病毒程序,服務(wù)器防火墻無(wú)法通過(guò)封鎖IP的方式進(jìn)行處理,唯一的解決辦法就是服務(wù)器夠強(qiáng)大。
2)形成攻擊聯(lián)盟
很多人聯(lián)合起來(lái)對(duì)同一個(gè)網(wǎng)站發(fā)起攻擊,對(duì)網(wǎng)站流量形成一定壓力,對(duì)同一網(wǎng)站造成傷害。
常規(guī)的防御方法:
1)確保服務(wù)器的系統(tǒng)文件是最新的版本,并及時(shí)更新系統(tǒng)補(bǔ)??;
2)關(guān)閉不必要的服務(wù);
3)限制同時(shí)打開(kāi)的SYN半連接數(shù)目,縮短SYN半連接的time out 時(shí)間,限制SYN/ICMP流量;
4)正確設(shè)置防火墻;
5)認(rèn)真檢查網(wǎng)絡(luò)設(shè)備和主機(jī)/服務(wù)器系統(tǒng)的日志,只要日志出現(xiàn)漏洞或是時(shí)間變更,那這臺(tái)機(jī)器就可能遭到了攻擊;
6)限制在防火墻外與網(wǎng)絡(luò)文件共享,這樣會(huì)給黑客截取系統(tǒng)文件的機(jī)會(huì),主機(jī)的信息暴露給黑客,無(wú)疑是給了對(duì)方入侵的機(jī)會(huì);
7)充分利用網(wǎng)絡(luò)設(shè)備保護(hù)網(wǎng)絡(luò)資源;
8)用足夠的機(jī)器承受黑客攻擊;
9)檢查訪問(wèn)者的來(lái)源。
文件上傳漏洞
文件上傳漏洞,可以利用WEB上傳一些特定的文件。一般情況下文件上傳漏洞是指用戶(hù)上傳了一個(gè)可執(zhí)行的腳本文件,并通過(guò)此腳本文件獲得了執(zhí)行服務(wù)器端命令的能力。文件上傳本身是web中最為常見(jiàn)的一種功能需求,關(guān)鍵是文件上傳之后服務(wù)器端的處理、解釋文件的過(guò)程是否安全。
? ? 文件上傳漏洞產(chǎn)生原因主要是缺少必要的校驗(yàn)。關(guān)于上傳測(cè)試點(diǎn):
? ? 1. 上傳文件是否有格式限制,是否可以上傳exe文件。
? ? 2. 上傳文件是否有大小限制,上傳太大的文件是否導(dǎo)致異常錯(cuò)誤,上傳0K的文件是否會(huì)導(dǎo)致異常錯(cuò)誤,上傳并不存在的文件是否會(huì)導(dǎo)致異常錯(cuò)誤。
? ? 3. 通過(guò)修改擴(kuò)展名的方式是否可以繞過(guò)格式限制,是否可以通過(guò)壓包方式繞過(guò)格式限制。
? ? 4. 是否有上傳空間的限制,是否可以超過(guò)空間所限制的大小,如將超過(guò)空間的大文件拆分上傳是否會(huì)出現(xiàn)異常錯(cuò)誤。
? ? 5. 上傳文件大小大于本地剩余空間大小,是否會(huì)出現(xiàn)異常錯(cuò)誤。
? ? 6. 關(guān)于上傳是否成功的判斷。上傳過(guò)程中,中斷,程序是否判斷上傳是否成功。
? ? 7. 對(duì)于文件名中帶有中文字符,特殊字符等的文件上傳。
? ? 8. 上傳漏洞拿shell。
? ? 9. 直接上傳asp.asa.jsp.cer.php.aspx.htr.cdx….之類(lèi)的,拿到shell。
? ? 10.在上傳時(shí)在后綴后面加空格或者加幾點(diǎn),例:*.asp ,*.asp..。
? ? 11.利用雙重?cái)U(kuò)展名上傳例如:*.jpg.asa格式(也可以配上第二點(diǎn)一起利用)。
? ? 12.gif文件頭欺騙。
? ? 13.同名重復(fù)上傳。
XSS跨站攻擊
跨站腳本攻擊(Cross Site Script,簡(jiǎn)稱(chēng)為XSS)指的是惡意攻擊者往Web頁(yè)面里插入惡意html代碼,當(dāng)用戶(hù)瀏覽該頁(yè)之時(shí),嵌入其中Web里面的html代碼會(huì)被執(zhí)行,從而達(dá)到惡意用戶(hù)的特殊目的。比如:某個(gè)頁(yè)面上有個(gè)廣告,網(wǎng)址是xxxx.taobao.com,你點(diǎn)擊進(jìn)去,發(fā)現(xiàn)是淘寶的購(gòu)物網(wǎng)站,然后進(jìn)行購(gòu)買(mǎi),其實(shí)他會(huì)重定向到另一個(gè)攻擊者自己的網(wǎng)站,在購(gòu)買(mǎi)的時(shí)候,使用的是攻擊者的接口進(jìn)行付款,很可能就會(huì)被盜取個(gè)人信息及財(cái)產(chǎn)等。
? ? 對(duì)于跨站漏洞,我們主要看代碼里對(duì)用戶(hù)輸入的地方和變量有沒(méi)有做長(zhǎng)度和對(duì)”<”,”>”,”;”,”’”等字符是否做過(guò)濾,還有要注意的是對(duì)于標(biāo)簽的閉合等,完善的輸入檢查是預(yù)防XSS的重要措施。
SQL注入
SQL注入是一種安全漏洞。攻擊者之所以可以利用自己輸入的數(shù)據(jù)來(lái)達(dá)到攻擊網(wǎng)站的目的,原因就在于SQL語(yǔ)言作為一種解釋型語(yǔ)言,它的數(shù)據(jù)其實(shí)是由程序員編寫(xiě)的代碼和用戶(hù)提交的數(shù)據(jù)共同組成的。正是這個(gè)原因,攻擊者可以構(gòu)造對(duì)自己有利的數(shù)據(jù),利用網(wǎng)站的一些SQL漏洞來(lái)達(dá)到惡意的目的。
SQL注入,就是指攻擊者將惡意的字符串或者語(yǔ)句等信息作為參數(shù)輸入,服務(wù)器在驗(yàn)證這個(gè)字段的時(shí)候,讀取攻擊者輸入的數(shù)據(jù),將其作為正常的值參與SQL語(yǔ)句的查詢(xún),如果攻擊者輸入了一個(gè)字符串,在SQL語(yǔ)句執(zhí)行之后,可以導(dǎo)致刪除表等操作,對(duì)于一個(gè)應(yīng)用來(lái)說(shuō),影響是很大的。
SQL注入一般會(huì)出現(xiàn)的地方:
含有輸入數(shù)據(jù)表單的頁(yè)面(登錄界面、查詢(xún)界面、反饋界面等),即使是hidden的表單也有可能存在這個(gè)問(wèn)題。
含有用戶(hù)信息、ID等的URL,可以操作ID后的參數(shù)數(shù)據(jù)。
SQL注入的方法措施:
從測(cè)試人員角度來(lái)說(shuō),在需求階段時(shí),我們就應(yīng)該有意識(shí)的將安全性檢查應(yīng)用到需求測(cè)試。例如對(duì)一個(gè)表單需求進(jìn)行檢查時(shí),我們一般檢驗(yàn)以下幾項(xiàng)安全性問(wèn)題:需求中應(yīng)說(shuō)明表單中某一field的類(lèi)型、長(zhǎng)度以及取值范圍(主要作用就是禁止輸入敏感字符)。需求中應(yīng)說(shuō)明如果超出表單規(guī)定的類(lèi)型、長(zhǎng)度以及取值范圍的,應(yīng)用程序應(yīng)給出不包含任何代碼或數(shù)據(jù)庫(kù)信息的錯(cuò)誤提示等。
以上就是小猿圈web安全講師對(duì)于Web安全性測(cè)試介紹,希望對(duì)你學(xué)習(xí)web安全有一定的幫助,你剛開(kāi)始看的時(shí)候一定會(huì)很懵,但是相信我只要堅(jiān)持努力地學(xué)習(xí),多看多練,遇到難題不會(huì)的可以到小猿圈官網(wǎng)看看。