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