作者 |肖博陽(yáng) 上??匕部尚跑浖?chuàng)新研究院汽車(chē)網(wǎng)絡(luò)安全組
來(lái)源 |鑒源實(shí)驗(yàn)室
引言:在如今的數(shù)字化時(shí)代,Web應(yīng)用程序已經(jīng)滲透到我們生活的每個(gè)角落。從購(gòu)物平臺(tái)、社交媒體到企業(yè)級(jí)系統(tǒng),無(wú)論是用戶(hù)還是組織,都依賴(lài)于這些應(yīng)用程序來(lái)滿足各自的業(yè)務(wù)需求。然而,隨著Web應(yīng)用程序的蓬勃發(fā)展,與之而來(lái)的網(wǎng)絡(luò)攻擊也日益復(fù)雜、防不勝防。這些攻擊不僅對(duì)用戶(hù)的隱私和數(shù)據(jù)構(gòu)成威脅,還可能對(duì)企業(yè)造成金融損失、聲譽(yù)受損等嚴(yán)重危害。因此,理解和防范Web應(yīng)用程序的常見(jiàn)漏洞變得尤為重要。
01
OWASP Top 10
為了幫助開(kāi)發(fā)者、安全專(zhuān)業(yè)人員和組織更好地了解Web應(yīng)用程序的主要風(fēng)險(xiǎn),全球網(wǎng)絡(luò)安全專(zhuān)業(yè)組織OWASP(Open Web Application Security Project)制定了OWASP Top 10,包括了當(dāng)前Web應(yīng)用程序面臨的最重要的十大漏洞。
本文將聚焦于近年來(lái)OWASP Top 10中的若干漏洞,深入淺出地探討它們的原理、危害以及防范策略。
02
SQL注入
注入漏洞被認(rèn)為是最嚴(yán)重的漏洞之一,SQL注入漏洞是一種典型的注入漏洞,它允許攻擊者通過(guò)構(gòu)造SQL語(yǔ)句,繞過(guò)應(yīng)用程序的身份驗(yàn)證和授權(quán)機(jī)制,訪問(wèn)、修改甚至刪除數(shù)據(jù)庫(kù)中的敏感信息。下面用一個(gè)例子具體說(shuō)明SQL注入的原理。
2.1 SQL注入實(shí)例
在購(gòu)物網(wǎng)站點(diǎn)擊種類(lèi)為“Accessories”的商品:
此時(shí)跳轉(zhuǎn)到該種類(lèi)的商品頁(yè)面,url參數(shù)為“/filter?category=Accessories”
上述url參數(shù)將轉(zhuǎn)化成SQL語(yǔ)句,用于查詢(xún)數(shù)據(jù)庫(kù)中的信息:SELECT * FROM products WHERE category = 'Accessories',即從數(shù)據(jù)庫(kù)全部?jī)?nèi)容中查詢(xún)類(lèi)別為“Accessories”的商品,并將結(jié)果返回到頁(yè)面中。
在理解url參數(shù)和SQL語(yǔ)句作用后,對(duì)url參數(shù)稍作更改即可實(shí)施SQL注入攻擊。
將url參數(shù)更改為“/filter?category=Accessories'or+1=1--”。其中:
單引號(hào)“'”用于閉合原始的 SQL 查詢(xún);
“or”為邏輯運(yùn)算符,用于連接兩個(gè)條件,若其中一個(gè)條件為真,整個(gè)條件就為真;
“+”為url參數(shù)的連接符;
“1=1”為始終為真的條件;
“--”為SQL 中的注釋符,它會(huì)注釋掉后面的所有內(nèi)容,從而防止查詢(xún)語(yǔ)句因?yàn)楸婚]合的引號(hào)而變得不完整。
上述url參數(shù)最終將轉(zhuǎn)化成SQL語(yǔ)句:SELECT * FROM products WHERE category = 'Accessories' or 1=1--,由于第二個(gè)條件始終為真,故整個(gè)條件為真,達(dá)到了跳過(guò)第一個(gè)條件的目的。從頁(yè)面返回結(jié)果可知,本次查詢(xún)繞過(guò)了類(lèi)別過(guò)濾,從而獲取到了所有商品的信息。
2.2 SQL注入小結(jié)
上述結(jié)果得知網(wǎng)站并未對(duì)SQL注入做防御措施,而進(jìn)一步的SQL注入攻擊可能導(dǎo)致更嚴(yán)重的后果,如讀取、修改或刪除敏感數(shù)據(jù),繞過(guò)身份驗(yàn)證,破壞數(shù)據(jù)完整性,執(zhí)行拒絕服務(wù)攻擊,甚至獲取操作系統(tǒng)級(jí)別的權(quán)限。這可能導(dǎo)致泄露用戶(hù)隱私、系統(tǒng)崩潰、服務(wù)不可用、甚至整個(gè)系統(tǒng)被入侵,因此對(duì)SQL注入進(jìn)行防御是必要的。
上述網(wǎng)站是Burpsuite官方實(shí)驗(yàn)室提供的SQL注入安全練兵場(chǎng)(下文XSS攻擊使用的網(wǎng)站是XSS安全練兵場(chǎng)),因此未對(duì)SQL注入做任何防御措施。所幸目前絕大部分網(wǎng)站不存在這樣的漏洞,已通過(guò)各種方式進(jìn)行防御,如:驗(yàn)證過(guò)濾用戶(hù)輸入、使用參數(shù)化查詢(xún)等。例如在對(duì)百度網(wǎng)使用相同的注入方式時(shí),無(wú)法繞過(guò)過(guò)濾。
03
XSS攻擊
XSS(Cross-Site Scripting)是另一種常見(jiàn)的web應(yīng)用安全漏洞,它允許攻擊者向網(wǎng)頁(yè)注入惡意腳本代碼,使這些腳本在用戶(hù)瀏覽器中執(zhí)行,從而達(dá)到攻擊的目的。XSS可分為反射型XSS、存儲(chǔ)型XSS和DOM型XSS。
3.1反射型XSS
反射型XSS指惡意腳本通過(guò)URL參數(shù)傳遞,被目標(biāo)服務(wù)器反射回響應(yīng),并在用戶(hù)瀏覽器中執(zhí)行。常見(jiàn)于具有輸入?yún)?shù)功能(如搜索功能)的頁(yè)面,如下所示:
在搜索欄內(nèi)輸入“”,執(zhí)行該javascript語(yǔ)句將在用戶(hù)瀏覽器內(nèi)彈出內(nèi)容為“hello”的對(duì)話框:
3.2 存儲(chǔ)型XSS
存儲(chǔ)型XSS指惡意腳本被存儲(chǔ)在目標(biāo)服務(wù)器上,當(dāng)其他用戶(hù)訪問(wèn)包含惡意腳本的頁(yè)面時(shí),腳本被執(zhí)行。常見(jiàn)于具有存儲(chǔ)輸入功能(如評(píng)論功能)的頁(yè)面,如下所示:
在評(píng)論區(qū)輸入“”,顯示提交成功后回到原頁(yè)面,用戶(hù)瀏覽器內(nèi)彈出內(nèi)容為“hello”的對(duì)話框:
也就是說(shuō),任意用戶(hù)只要瀏覽到該評(píng)論,均會(huì)彈出該對(duì)話框。存儲(chǔ)型XSS比反射型XSS更容易產(chǎn)生危害,因?yàn)樗鼰o(wú)需用戶(hù)主動(dòng)進(jìn)行操作,在瀏覽頁(yè)面時(shí)無(wú)意識(shí)中被攻擊。
3.3 DOM型XSS
DOM型XSS指惡意腳本直接影響瀏覽器的 DOM,通過(guò)修改頁(yè)面的結(jié)構(gòu)來(lái)執(zhí)行攻擊。DOM(Document Object Model)即文檔對(duì)象模型,可簡(jiǎn)單理解為網(wǎng)頁(yè)內(nèi)容。DOM型XSS與前兩類(lèi)XSS攻擊的最大區(qū)別在于不會(huì)被插入到服務(wù)器響應(yīng)中,而是通過(guò)修改頁(yè)面現(xiàn)有DOM結(jié)構(gòu)來(lái)觸發(fā),這一特點(diǎn)使得DOM型XSS難以被服務(wù)端檢測(cè)。
如下所示,在輸入“1”后點(diǎn)擊搜索:
出現(xiàn)搜索結(jié)果后通過(guò)開(kāi)發(fā)者工具查看網(wǎng)頁(yè)結(jié)構(gòu):
在DOM中發(fā)現(xiàn)用戶(hù)輸入的參數(shù)“1”被包裹在img標(biāo)簽內(nèi)部。根據(jù)此信息,可在搜索框內(nèi)輸入“">”,該參數(shù)在截?cái)鄆mg標(biāo)簽后,新增一個(gè)svg標(biāo)簽,并在該標(biāo)簽內(nèi)部通過(guò)“onload”事件屬性觸發(fā)彈窗事件:
點(diǎn)擊搜索后出現(xiàn)了彈窗“1”,此時(shí)再通過(guò)開(kāi)發(fā)者工具查看網(wǎng)頁(yè)結(jié)構(gòu):
發(fā)現(xiàn)原本的img標(biāo)簽已被截?cái)?,出現(xiàn)了新增的svg標(biāo)簽且標(biāo)簽內(nèi)部包含彈窗事件。
3.4 XSS總結(jié)
以上三類(lèi)XSS示例均為攻擊者展開(kāi)攻擊的第一步,攻擊者通過(guò)該步驟判斷網(wǎng)站是否進(jìn)行了XSS防護(hù)。若攻擊成功,可實(shí)施進(jìn)一步攻擊,如竊取用戶(hù)信息、會(huì)話劫持等。
網(wǎng)站可通過(guò)輸入驗(yàn)證、輸出編碼、CSP(Content Security Policy)等方式進(jìn)行防御。
04
失效的身份認(rèn)證
失效的身份認(rèn)證指攻擊者利用網(wǎng)站應(yīng)用程序中的身份認(rèn)證缺陷獲取高權(quán)限并對(duì)應(yīng)用服務(wù)進(jìn)行攻擊。通俗來(lái)說(shuō),攻擊者能夠破譯密碼等信息,繞過(guò)身份驗(yàn)證機(jī)制,暫時(shí)或永久地冒用其他用戶(hù)身份從而進(jìn)行攻擊。
可能導(dǎo)致失效身份認(rèn)證的因素包括:
弱密碼策略:使用弱密碼或允許用戶(hù)設(shè)計(jì)弱密碼,使攻擊者更容易猜測(cè)或破解;
會(huì)話管理問(wèn)題:Web應(yīng)用程序中,會(huì)話指一種交互性的通信期間,即客戶(hù)端和服務(wù)端進(jìn)行通信的一段時(shí)間。若會(huì)話管理不當(dāng),如未設(shè)置會(huì)話過(guò)期時(shí)長(zhǎng)或會(huì)話標(biāo)識(shí)泄露時(shí),攻擊者將輕而易舉地獲取權(quán)限進(jìn)行攻擊;
不安全的密碼重置:若密碼重置功能不安全,攻擊者可能通過(guò)恢復(fù)或繞過(guò)此功能來(lái)獲取對(duì)用戶(hù)賬戶(hù)的訪問(wèn)權(quán)限。
4.1失效的身份認(rèn)證實(shí)例
如下所示,在某FOTA平臺(tái)利用低權(quán)限賬戶(hù)進(jìn)行登錄(該賬戶(hù)無(wú)賬戶(hù)管理功能),并通過(guò)抓包工具BurpSuite獲取該網(wǎng)絡(luò)請(qǐng)求的詳細(xì)信息,記錄低權(quán)限賬戶(hù)的令牌信息Authorization:
再以高權(quán)限賬戶(hù)進(jìn)行登錄(該賬戶(hù)擁有賬戶(hù)管理功能),同樣獲取網(wǎng)絡(luò)請(qǐng)求的詳細(xì)信息,此時(shí)將高權(quán)限賬戶(hù)的令牌信息替換為低權(quán)限用戶(hù)的令牌信息,并重新發(fā)送該請(qǐng)求:
發(fā)現(xiàn)仍能成功獲取相關(guān)信息,攻擊者通過(guò)低權(quán)限賬號(hào)直接獲取了系統(tǒng)內(nèi)敏感數(shù)據(jù)。
在上述實(shí)例中,將高權(quán)限令牌替換為低權(quán)限令牌,相當(dāng)于模擬使用一個(gè)已登錄的低權(quán)限賬戶(hù)去訪問(wèn)高權(quán)限接口。從實(shí)際攻擊的角度出發(fā),攻擊者可通過(guò)一個(gè)普通賬戶(hù)(如游客賬戶(hù)),去訪問(wèn)一個(gè)高權(quán)限賬戶(hù)(如管理員賬戶(hù))接口,進(jìn)而使用超出自身權(quán)限的功能。
4.2 失效的身份認(rèn)證小結(jié)
失效的身份認(rèn)證是一種常見(jiàn)的安全漏洞,主要涉及到身份驗(yàn)證機(jī)制的不足或不正確使用,導(dǎo)致攻擊者有可能通過(guò)不同的手段繞過(guò)身份驗(yàn)證,獲得未經(jīng)授權(quán)的訪問(wèn)權(quán)限。為防范此類(lèi)漏洞,可采用實(shí)施強(qiáng)密碼策略、設(shè)置會(huì)話過(guò)期時(shí)間、采用安全會(huì)話標(biāo)識(shí)等措施。
05
小結(jié)
本文介紹了三種常見(jiàn)的Web應(yīng)用程序漏洞:SQL注入、XSS攻擊和失效的身份認(rèn)證。
SQL注入允許攻擊者通過(guò)在輸入字段中注入惡意SQL代碼來(lái)繞過(guò)驗(yàn)證,執(zhí)行未經(jīng)授權(quán)的數(shù)據(jù)庫(kù)操作。為了防范SQL注入,Web應(yīng)用程序應(yīng)采用驗(yàn)證過(guò)濾用戶(hù)輸入、使用參數(shù)化查詢(xún)等安全措施。
XSS攻擊通過(guò)在網(wǎng)頁(yè)中注入惡意腳本來(lái)在用戶(hù)瀏覽器上執(zhí)行惡意代碼。分為存儲(chǔ)型、反射型和DOM型XSS。為了預(yù)防XSS,Web應(yīng)用程序應(yīng)采用輸入驗(yàn)證、輸出編碼和CSP(Content Security Policy)等關(guān)鍵措施。
失效的身份認(rèn)證允許攻擊者繞過(guò)已有的身份認(rèn)證機(jī)制,獲取未經(jīng)授權(quán)的訪問(wèn)權(quán)限。為預(yù)防該攻擊可加強(qiáng)會(huì)話管理,同時(shí)在密碼強(qiáng)度上進(jìn)行一定強(qiáng)制要求。
總體而言,通過(guò)綜合使用這些安全措施,可以有效保護(hù)Web應(yīng)用程序免受部分攻擊的影響。
審核編輯 黃宇
-
Web
+關(guān)注
關(guān)注
2文章
1287瀏覽量
71444 -
SQL
+關(guān)注
關(guān)注
1文章
783瀏覽量
45149 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3337瀏覽量
59040 -
XSS
+關(guān)注
關(guān)注
0文章
25瀏覽量
2507
發(fā)布評(píng)論請(qǐng)先 登錄
鑒源實(shí)驗(yàn)室·基于MQTT協(xié)議的模糊測(cè)試研究

[原創(chuàng)]認(rèn)證與實(shí)驗(yàn)室
基于LabVIEW和Matlab虛擬實(shí)驗(yàn)室的實(shí)現(xiàn)
鋰電材料截面制樣-氬離子拋光CP離子研磨 金鑒實(shí)驗(yàn)室分享(下)
lims實(shí)驗(yàn)室管理系統(tǒng)是什么?實(shí)驗(yàn)室信息管理系統(tǒng)介紹!
實(shí)驗(yàn)室設(shè)計(jì)指南
基于Scrapy的爬蟲(chóng)框架的Web應(yīng)用程序漏洞檢測(cè)方法

騰訊玄武實(shí)驗(yàn)室發(fā)現(xiàn)蘋(píng)果M1的首個(gè)高危漏洞
廣東金鑒實(shí)驗(yàn)室科技有限公司介紹

聊聊PHP的web應(yīng)用程序開(kāi)發(fā)框架存在的漏洞有哪些
高精度電流源在電子實(shí)驗(yàn)室中的應(yīng)用

力源信息與安森美設(shè)立應(yīng)用聯(lián)合實(shí)驗(yàn)室

淺析RFID技術(shù)在學(xué)校實(shí)驗(yàn)室管理中的應(yīng)用

鑒源實(shí)驗(yàn)室·HTTP協(xié)議網(wǎng)絡(luò)安全攻擊

評(píng)論