越權漏洞是Web應用程序中一種常見的安全漏洞。它的威脅在于一個賬戶即可控制全站用戶數據。當然這些數據僅限于存在漏洞功能對應的數據。越權漏洞的成因主要是因為開發人員在對數據進行增、刪、改、查詢時對客戶端請求的數據過分相信而遺漏了權限的判定。所以測試越權就是和開發人員拼細心的過程。
上面說過了只要對數據庫進行增、刪、改、查詢的情況都可能存在越權。我們來看一般我們在web應用開發時操作數據庫常會出現的一般語句:
增加:
insert into tablename values(一些字段) where userid/username=12345/用戶名
參考例子:
WooYun: 愛拍越權漏洞及設計不合理漏洞大禮包(妹子哭了)
刪除:
delete from tablename where id=123
參考例子:
WooYun: 百度創意專家某功能平行權限漏洞(可刪除他人素材)
更改:
update 一些字段 tablename set 一些字段 where userid/username=12345/用戶名
查詢:
select * from tablename where id=12345
WooYun: Like團用戶信息泄露+越權漏洞(可獲取大量用戶住址聯系信息)
本人不做開發,sql語句比較弱,大牛勿噴,此處只是為了說明問題。大家可以看到,以上語句都涉及where,而后面的userid或username即是越權的突破口。在操作數據庫時功能請求中往往會帶著一些參數來用于辨別信息的唯一值。而這些參數就是我們越權時需要注意的。
在web開發中判斷用戶身份的字段往往是不會在客戶端傳遞的。用戶登錄系統后,開發人員一般會創建一個session來保存用戶名。當用戶在查看、修改個人信息等需要判定用戶身份時,就直接從session中獲取,而不會在客戶端傳遞,也就避免了篡改。但若出現從客戶端傳遞的話,那么就必須要有一步權限驗證的要求了。所以在測試越權時要用抓包工具截獲請求,細覽下可能存在辨別信息的唯一值,來進行測試。這里要說一點,傳輸的參數并不一定在請求參數中,也有可能存在鏈接等位置。如:
有人可能開始抱怨,請求中那么多參數、而且還可能存在一個請求需要多個辨別參數的可能,再加上鏈接中也有可能,這也太難找了。現提供一個方法可以輕松讓你知道哪里存在越權。喜歡玩XSS的人定會恍然大悟。
相信越權的成因大家都已經理解了,哪些功能可能存在越權大家也心里也有譜了。接下來就是測試了。相信這才是大家最想看的,王尼瑪同學是如何高效測試越權的?
看官莫急,先看基礎測試方法:要測試越權需要注冊兩個賬戶,來互相探測能否影響到對方數據。方法很簡單打開兩個不同的瀏覽器,大小號賬戶各自登錄一個不同瀏覽器。
打開fiddler2按f11,截斷大號上更新用戶信息請求。(查看參數可以選擇fiddler中Inspects下的WebFroms或TextView。只有在截斷的情況下,才可以修改請求。)
判斷出可能辨別用戶身份的參數ulogin。
步驟3:將小號中ulogin的參數值替換為大號的,然后解除fiddler截斷(shift+f11),將請求放過去(),查看下大號用戶信息是否更改。
以上即是常規的測試方法。大家可以看到消耗時間的麻煩在辨別參數上、對比大號和小號請求有何不一樣的參數值上、切換瀏覽器查看數等等。如果遇到更改刪除等功能,還要兩端各自新建出數據、查看id等等、麻煩的要死。
為了避免以上消耗時間的操作其實可以利用fiddler2復制小號瀏覽器中的cookie值,到大號的請求中即可驗證越權。操作就是用fiddler先截獲一個小號的訪問目標站點的請求,在fiddler2的head標簽下將cookie復制出來
小號的瀏覽器就可以不用管了,用Fiddler2截斷大號的請求,把小號的cookie覆蓋大號的cookie,進行測試。如果改變了大號的數據則說明越權,然后在分析是哪個參數造成的。如果未改變,則說明不存在越權,該功能直接越過。小號的cookie一直在剪貼板中的,所以在測其他功能會非常方便。用不了多長時間,即可測試完整個站點下的功能。
我們來看這個方法的優點:1不用去辨別哪個參數是辨別身份的;2不用兩個賬戶同時去創建數據;3不用去查看小號id;4單瀏覽器即可測試,免去切換瀏覽器的煩惱。這就是我常用的方法,個人感覺已經很高效了,是不是覺得跟XSS竊取了cookie后劫持瀏覽器的感覺一樣?但是此方法并不是對所有站點都起作用,有時你會發現小號會把大號擠出去進入大號的瀏覽器或者登陸狀態消失,直接退出。具體什么原因造成的,我現在還不太清楚,估計是服務器端有對cookie的判斷吧,希望大牛們能給出合理的解釋。不過在測試大部分站點時此方法還是很好用的。順便說一下Fiddler2是一個非常好用的抓包工具,熟練使用這個工具也是測試越權時的必要技能。小白們可以自行百度下其使用方法。
越權的危害說輕則輕,說弱則弱,但是還是要求大家不要惡意破壞廠商數據,遵守白帽子原則。