作者:
小川
·
2013/11/04 10:40
0x00 越權漏洞
越權漏洞是Web應用程式中一種常見的安全漏洞。它的威脅在於一個賬戶即可控制全站使用者資料。當然這些資料僅限於存在漏洞功能對應的資料。越權漏洞的成因主要是因為開發人員在對資料進行增、刪、改、查詢時對客戶端請求的資料過分相信而遺漏了許可權的判定。所以測試越權就是和開發人員拼細心的過程。
0x01 分析可能存在越權的位置
上面說過了只要對資料庫進行增、刪、改、查詢的情況都可能存在越權。我們來看一般我們在web應用開發時運算元據庫常會出現的一般語句:
增加:
insert into tablename values(一些欄位) where userid/username=12345/使用者名稱
參考例子:
WooYun: 愛拍越權漏洞及設計不合理漏洞大禮包(妹子哭了)
刪除:
delete from tablename where id=123
參考例子:
WooYun: 百度創意專家某功能平行許可權漏洞(可刪除他人素材)
更改:
update 一些欄位 tablename set 一些欄位 where userid/username=12345/使用者名稱
WooYun: 搜狐白社會任意使用者資訊修改漏洞
查詢:
select * from tablename where id=12345
WooYun: Like團使用者資訊洩露+越權漏洞(可獲取大量使用者住址聯絡資訊)
本人不做開發,sql語句比較弱,大牛勿噴,此處只是為了說明問題。大家可以看到,以上語句都涉及where,而後面的userid或username即是越權的突破口。在運算元據庫時功能請求中往往會帶著一些引數來用於辨別資訊的唯一值。而這些引數就是我們越權時需要注意的。
在web開發中判斷使用者身份的欄位往往是不會在客戶端傳遞的。使用者登入系統後,開發人員一般會建立一個session來儲存使用者名稱。當使用者在檢視、修改個人資訊等需要判定使用者身份時,就直接從session中獲取,而不會在客戶端傳遞,也就避免了篡改。但若出現從客戶端傳遞的話,那麼就必須要有一步許可權驗證的要求了。所以在測試越權時要用抓包工具截獲請求,細覽下可能存在辨別資訊的唯一值,來進行測試。這裡要說一點,傳輸的引數並不一定在請求引數中,也有可能存在連結等位置。如:
WooYun: 蝦米網送娃娃漏洞(平行許可權漏洞)
有人可能開始抱怨,請求中那麼多引數、而且還可能存在一個請求需要多個辨別引數的可能,再加上鍊接中也有可能,這也太難找了。現提供一個方法可以輕鬆讓你知道哪裡存在越權。喜歡玩XSS的人定會恍然大悟。
0x02 測試越權技巧
相信越權的成因大家都已經理解了,哪些功能可能存在越權大家也心裡也有譜了。接下來就是測試了。相信這才是大家最想看的,王尼瑪同學是如何高效測試越權的?
看官莫急,先看基礎測試方法:要測試越權需要註冊兩個賬戶,來互相探測能否影響到對方資料。方法很簡單開啟兩個不同的瀏覽器,大小號賬戶各自登入一個不同瀏覽器。
步驟一:
開啟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是一個非常好用的抓包工具,熟練使用這個工具也是測試越權時的必要技能。小白們可以自行百度下其使用方法。
0x03 遵守的白帽子原則
越權的危害說輕則輕,說弱則弱,但是還是要求大家不要惡意破壞廠商資料,遵守白帽子原則。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!