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