◆趙少飛 楊 京 楊睿超 孫蕊剛
淺析Web應(yīng)用中的越權(quán)訪(fǎng)問(wèn)漏洞
◆趙少飛 楊 京 楊睿超 孫蕊剛
(陜西省網(wǎng)絡(luò)與信息安全測(cè)評(píng)中心 陜西 710065)
2020年伊始,新冠狀病毒肆虐,在全民萬(wàn)眾一心抗擊疫情之際,不法分子利用疫情題材進(jìn)行各種網(wǎng)絡(luò)攻擊行為,面對(duì)新的各類(lèi)網(wǎng)絡(luò)攻擊行為如何進(jìn)行有效的防范,我們需要從根本問(wèn)題上進(jìn)行考慮,不論怎樣的網(wǎng)絡(luò)攻擊,都是利用Web應(yīng)用中存在的安全漏洞或缺陷進(jìn)行攻擊,只有了解各類(lèi)安全漏洞及缺陷的原理,就有助于我們掌握Web應(yīng)用本身的安全狀況,進(jìn)而采取有效防控措施。本文主要講解的是被列入2017 OWASP top10中失效的訪(fǎng)問(wèn)控制,即越權(quán)訪(fǎng)問(wèn)。
越權(quán)訪(fǎng)問(wèn);安全漏洞;OWASP
回顧2019年,大規(guī)模的數(shù)據(jù)泄露事件頻頻發(fā)生,呈現(xiàn)爆發(fā)遞增的趨勢(shì)。據(jù)安全情報(bào)供應(yīng)商Risk Based Security(RBS)的2019年Q3季度的報(bào)告,2019年1月1日至2019年9月30日,全球披露的數(shù)據(jù)泄露事件有5183起,泄露的數(shù)據(jù)量達(dá)到了79.95億條記錄。2019年7月,智能家居公司Orvibo的數(shù)據(jù)庫(kù)泄露涉及超過(guò) 20 億條IoT日志,2019年9月,厄瓜多爾Novaestrat公司服務(wù)器發(fā)生數(shù)據(jù)泄露涉及超過(guò)2000萬(wàn)人的記錄。大量的信息數(shù)據(jù)泄露事件發(fā)生都是由攻擊者利用信息系統(tǒng)本身的一些安全漏洞,拿到系統(tǒng)權(quán)限而獲得到的,而越權(quán)漏洞就是其中最常見(jiàn)的一種安全漏洞。
越權(quán),意思指超出了權(quán)限或權(quán)力范圍。大多數(shù)Web應(yīng)用程序都具備權(quán)限控制功能,一旦權(quán)限控制功能設(shè)計(jì)存在缺陷,攻擊者就可以利用這些缺陷對(duì)Web應(yīng)用程序進(jìn)行未經(jīng)授權(quán)訪(fǎng)問(wèn),以此來(lái)竊取敏感數(shù)據(jù),這就是我們通常說(shuō)的越權(quán)漏洞。
越權(quán)一般分為水平越權(quán)、垂直越權(quán)及權(quán)限框架缺陷三類(lèi)。
水平越權(quán)是指權(quán)限平級(jí)的兩個(gè)用戶(hù)之間的越權(quán)訪(fǎng)問(wèn),也是攻擊者嘗試訪(fǎng)問(wèn)與他擁有相同權(quán)限的用戶(hù)的資源。例如,某電網(wǎng)系統(tǒng)有省級(jí)和市級(jí)兩級(jí)管理員, A賬號(hào)為A市管理員,B賬號(hào)為B市管理員,兩個(gè)賬戶(hù)訪(fǎng)問(wèn)該系統(tǒng)的權(quán)限是相同的,但是A賬號(hào)涉及的資源信息和B賬號(hào)涉及的資源信息不同。此時(shí),A賬號(hào)通過(guò)攻擊手段訪(fǎng)問(wèn)了B賬號(hào)的資源信息,這就是水平越權(quán)漏洞。
垂直越權(quán)是指權(quán)限不等的兩個(gè)用戶(hù)之間的越權(quán)訪(fǎng)問(wèn),也可以理解為攻擊者利用一個(gè)低權(quán)限的用戶(hù)通過(guò)修改用戶(hù)參數(shù)可以拿到高權(quán)限用戶(hù)的訪(fǎng)問(wèn)資源。例如某電網(wǎng)系統(tǒng)分為省級(jí)管理員和市級(jí)管理員,省級(jí)管理員可以對(duì)全省電網(wǎng)系統(tǒng)具有管理權(quán)限,而市級(jí)管理員只有對(duì)該市電網(wǎng)系統(tǒng)具有管理權(quán)限,如果市級(jí)管理員能利用某種攻擊手段訪(fǎng)問(wèn)到省級(jí)管理員所具有管理功能,那就是垂直越權(quán)。
權(quán)限控制框架是實(shí)現(xiàn)權(quán)限控制功能的基礎(chǔ),權(quán)限控制框架在設(shè)計(jì)之初就存在缺陷,很容易導(dǎo)致權(quán)限控制相關(guān)功能失效。例如在用戶(hù)訪(fǎng)問(wèn)cookie中使用簡(jiǎn)單的權(quán)限標(biāo)識(shí)來(lái)標(biāo)記用戶(hù)的權(quán)限等級(jí)或使用用戶(hù)請(qǐng)求參數(shù)中所帶的簡(jiǎn)單用戶(hù)ID來(lái)控制用戶(hù)權(quán)限等,都是典型的權(quán)限框架缺陷。
Web應(yīng)用程序訪(fǎng)問(wèn)流程一般為:登錄—提交請(qǐng)求—驗(yàn)證權(quán)限—數(shù)據(jù)庫(kù)查詢(xún)—返回結(jié)果。如果驗(yàn)證權(quán)限環(huán)節(jié)出現(xiàn)問(wèn)題,就會(huì)導(dǎo)致越權(quán)。一般的Web應(yīng)用程序在確認(rèn)用戶(hù)通過(guò)登錄后即認(rèn)可用戶(hù)的身份,從而不會(huì)對(duì)用戶(hù)權(quán)限進(jìn)行進(jìn)一步的驗(yàn)證,往往會(huì)導(dǎo)致越權(quán)。
許多Web應(yīng)用程序都具有下載功能,允許會(huì)員下載一些xls、word等類(lèi)型的靜態(tài)文件,但如果對(duì)這些文件的 URL沒(méi)有做權(quán)限限制,一些URL地址一旦泄露,任何人都可以下載,一旦攻擊者知道這些URL命名規(guī)則,則會(huì)對(duì)服務(wù)器的文檔進(jìn)行批量下載。
通過(guò)修改用戶(hù)訪(fǎng)問(wèn)參數(shù)可以產(chǎn)生越權(quán),例如在訪(fǎng)問(wèn)A用戶(hù)信息時(shí),地址欄中會(huì)顯示用戶(hù)A的ID信息,對(duì)用戶(hù)A的ID信息進(jìn)行修改,修改成其他人的ID信息返回其他人的信息,這就產(chǎn)生了越權(quán)。
有些Web應(yīng)用程序管理員會(huì)對(duì)一些管理URL進(jìn)行隱藏,一般用戶(hù)看不到,只有通過(guò)管理員賬戶(hù)才能顯示,這些隱藏的URL利用URL不可見(jiàn)來(lái)實(shí)現(xiàn)訪(fǎng)問(wèn)控制,一旦這些URL地址泄露或被攻擊者猜到后,就會(huì)導(dǎo)致越權(quán)。
多階段功能是一個(gè)功能有多個(gè)階段的實(shí)現(xiàn)。比如修改密碼,可能第一步是驗(yàn)證用戶(hù)身份信息,號(hào)碼驗(yàn)證碼類(lèi)的。當(dāng)驗(yàn)證成功后,跳到第二步,輸入新密碼,很多程序會(huì)在這一步不再驗(yàn)證用戶(hù)身份,導(dǎo)致惡意攻擊者通過(guò)抓包的方式直接修改參數(shù)值,導(dǎo)致可修改任意用戶(hù)密碼。
一些Web應(yīng)用程序會(huì)通過(guò)控件來(lái)限制用戶(hù)的訪(fǎng)問(wèn),例如后臺(tái)地址,普通用戶(hù)不屬于管理員,則不能訪(fǎng)問(wèn),但當(dāng)平臺(tái)配置出現(xiàn)錯(cuò)誤時(shí),也許就會(huì)導(dǎo)致越權(quán)訪(fǎng)問(wèn)。
對(duì)于滲透測(cè)試,可以對(duì)一些請(qǐng)求進(jìn)行抓包操作,或者查看請(qǐng)求的URL地址,對(duì)于關(guān)鍵的參數(shù),修改下值,查看返回結(jié)果來(lái)初步判定。登錄兩個(gè)權(quán)限不同的賬戶(hù),相互輔助來(lái)確定是否存在越權(quán)。
常見(jiàn)的越權(quán)高發(fā)功能點(diǎn)有:依據(jù)訂單號(hào)查找訂單、依據(jù)用戶(hù) ID 查看賬戶(hù)信息、修改/找回密碼等。
對(duì)于代碼審計(jì),可以先查看前端的網(wǎng)頁(yè)源碼,查看一些操作的表單提交的值。查看配置文件和一些過(guò)濾器,看是否對(duì)URL有相關(guān)的篩選操作。最后查看后臺(tái)處理邏輯,是否存在身份驗(yàn)證機(jī)制、邏輯是否異常,有時(shí)的邏輯漏洞也可導(dǎo)致越權(quán)操作。
一般測(cè)試時(shí),需要權(quán)限不同的兩個(gè)賬戶(hù)測(cè)試,大概流程圖如圖1。
越權(quán)的威脅在于一個(gè)賬戶(hù)即可控制全站用戶(hù)數(shù)據(jù),當(dāng)然這些數(shù)據(jù)僅限于存在漏洞功能對(duì)應(yīng)的數(shù)據(jù)。越權(quán)漏洞的成因主要是因?yàn)殚_(kāi)發(fā)人員在對(duì)數(shù)據(jù)進(jìn)行增、刪、改、查詢(xún)時(shí)對(duì)客戶(hù)端請(qǐng)求的數(shù)據(jù)過(guò)分相信而遺漏了權(quán)限的判定。針對(duì)越權(quán)漏洞產(chǎn)生的原因制定出響應(yīng)的防范措施。
(1)通過(guò)采用類(lèi)似spring security等成熟的權(quán)限管理框架,規(guī)范系統(tǒng)的用戶(hù)權(quán)限。
(2)可以從用戶(hù)的加密認(rèn)證cookie中獲取當(dāng)前用戶(hù)id,防止攻擊者對(duì)其修改?;蛟?session、cookie 中加入不可預(yù)測(cè)的 user 信息。
(3)每次頁(yè)面訪(fǎng)問(wèn)時(shí)對(duì)用戶(hù)權(quán)限進(jìn)行驗(yàn)證,采用表單或其他參數(shù)提交用戶(hù)進(jìn)行訪(fǎng)問(wèn)操作的憑證時(shí),應(yīng)盡可能采用難以猜測(cè)的構(gòu)造方式(增加字母及隨機(jī)數(shù)字等)或采用復(fù)雜的加密算法加密后提交,在客戶(hù)端和服務(wù)器端對(duì)提交的憑證或會(huì)話(huà)的權(quán)限進(jìn)行驗(yàn)證。
(4)對(duì)管理功能模塊進(jìn)行嚴(yán)格的權(quán)限驗(yàn)證,如非必要建議不對(duì)互聯(lián)網(wǎng)開(kāi)放或進(jìn)行網(wǎng)絡(luò)層的訪(fǎng)問(wèn)控制。
圖1 測(cè)試流程圖
在5G、大數(shù)據(jù)及物聯(lián)網(wǎng)流行的當(dāng)下,信息數(shù)據(jù)的保護(hù)顯得尤為重要,企業(yè)作為信息數(shù)據(jù)的保管者和運(yùn)營(yíng)者,防止攻擊者利用信息系統(tǒng)存在的安全漏洞對(duì)系統(tǒng)進(jìn)行攻擊是企業(yè)運(yùn)營(yíng)的一個(gè)重要環(huán)節(jié)。越權(quán)漏洞作為Web應(yīng)用中的一種常見(jiàn)安全漏洞,利用簡(jiǎn)單且危害巨大,一旦被利用成功,會(huì)導(dǎo)致企業(yè)大量敏感信息外泄,對(duì)信息系統(tǒng)的機(jī)密性和完整性造成破壞。如何應(yīng)對(duì)安全漏洞的頻發(fā),企業(yè)應(yīng)未雨綢繆,對(duì)重要的數(shù)據(jù)資產(chǎn)服務(wù)器進(jìn)行重點(diǎn)防護(hù)與安全配置檢查,定期進(jìn)行漏洞掃描與評(píng)估等措施,并引入一些數(shù)據(jù)安全新型技術(shù)防止攻擊者利用信息系統(tǒng)的安全漏洞對(duì)企業(yè)信息造成破壞。
[1]趙川,徐雁飛.一種越權(quán)漏洞攻擊方法實(shí)例研究[J].信息安全研究,2019(03).
[2]李艷華,郝艷,李海威.一種改進(jìn)的Web應(yīng)用越權(quán)漏洞自動(dòng)化檢測(cè)方法研究及實(shí)現(xiàn)[J].警察技術(shù),2017(04).