wordpress 簡(jiǎn)約windows優(yōu)化大師最新版本
概述
如果使用A用戶的權(quán)限去操作B用戶的數(shù)據(jù),A的權(quán)限小于B的權(quán)限,如果能夠成功操作,則稱之為越權(quán)操作。 越權(quán)漏洞形成的原因是后臺(tái)使用了 不合理的權(quán)限校驗(yàn)規(guī)則導(dǎo)致的。
一般越權(quán)漏洞容易出現(xiàn)在權(quán)限頁(yè)面(需要登錄的頁(yè)面)增、刪、改、查的的地方,當(dāng)用戶對(duì)權(quán)限頁(yè)面內(nèi)的信息進(jìn)行這些操作時(shí),后臺(tái)需要對(duì) 對(duì)當(dāng)前用戶的權(quán)限進(jìn)行校驗(yàn),看其是否具備操作的權(quán)限,從而給出響應(yīng),而如果校驗(yàn)的規(guī)則過(guò)于簡(jiǎn)單則容易出現(xiàn)越權(quán)漏洞。
因此,在在權(quán)限管理中應(yīng)該遵守:
1.使用最小權(quán)限原則對(duì)用戶進(jìn)行賦權(quán);
2.使用合理(嚴(yán)格)的權(quán)限校驗(yàn)規(guī)則;
3.使用后臺(tái)登錄態(tài)作為條件進(jìn)行權(quán)限判斷,別動(dòng)不動(dòng)就瞎用前端傳進(jìn)來(lái)的條件;
水平越權(quán)
抓個(gè)包看一下,一般不是get請(qǐng)求,post為多,不過(guò)都一樣,開個(gè)代理抓個(gè)包看看
?登錄后,點(diǎn)擊“查看個(gè)人信息”可以看到自己的信息。
修改地址欄中的數(shù)據(jù),將username=kobe,修改為lili。結(jié)果看到了lili的信息。即水平越權(quán)。
以后找越權(quán)就是這么找,自己登錄個(gè)賬號(hào),自己測(cè)試可以注冊(cè)兩個(gè)賬號(hào)
那么可以猜測(cè)源碼里是什么限制都沒(méi)做的,傳什么數(shù)據(jù)進(jìn)來(lái)就搜什么數(shù)據(jù),造成越權(quán)的原因
水平越權(quán)的防護(hù):
有個(gè)小技巧,例如找escape這個(gè)函數(shù)不清楚它的作用,在PHP手冊(cè)、百度等查不到,那么可能是自定義的函數(shù),或者去公用的函數(shù)庫(kù)里面去查找
由此可知它的作用是? ? ? ? ?//這里如果不對(duì)獲取的cookie進(jìn)行轉(zhuǎn)義,則會(huì)存在SQL注入漏洞,也會(huì)導(dǎo)致驗(yàn)證被繞過(guò)
它的作用是SQL注入防御的那么就先不管他了,接下來(lái)繼續(xù)看越權(quán)
想看登錄的代碼怎么寫那就看這兒
$_SESSION['op']['username']=$username; $_SESSION['op']['password']=sha1(md5($password));
將用戶名和密碼的SHA1哈希值存儲(chǔ)到會(huì)話變量中。這里使用了雙重哈希(先MD5再SHA1)來(lái)存儲(chǔ)密碼,這是一種安全措施。
if(mysqli_num_rows($result)==1){
檢查查詢結(jié)果是否有且僅有一條記錄,這表示用戶名和密碼匹配。
$_SESSION['op']['username'] ?這是一個(gè)二維數(shù)組,數(shù)組里面套數(shù)組
改源代碼:
if($_SESSION['op']['username']!=$username){$username = $_SESSION['op']['username'];}
?保存后去測(cè)試一下就懂了
垂直越權(quán)
1、打開burp,抓取“添加用戶”的數(shù)據(jù)包
登錄admin的先抓admin添加用戶的包,再登pikachu的普通賬號(hào)抓;分別給該包添加一個(gè)高亮顯示(等會(huì)好找)
?
2、抓取普通用戶的Cookie
不同的cookie代表了不同的權(quán)限
3、使用普通用戶的Cookie(普通用戶權(quán)限)發(fā)送添加用戶的數(shù)據(jù)包
將添加用戶的包發(fā)送Repeater
點(diǎn)擊GO,發(fā)送數(shù)據(jù)包(可以嘗試多點(diǎn)幾次)
?
?
發(fā)現(xiàn)多了好多bbb用戶,說(shuō)明使用普通用戶權(quán)限,成功添加了賬號(hào),即垂直越權(quán)漏洞。
防御方式:
找到源代碼增加以下,或者自行手敲
if($_SESSION['op2']['level']!=1){ //垂直越權(quán)防御代碼header("location:op2_login.php"); //調(diào)整到登錄頁(yè)exit(); //退出程序
}
代碼生效了,跳轉(zhuǎn)到登錄頁(yè)了,且添加數(shù)據(jù)頁(yè)不成功了
測(cè)試:
挖越權(quán)的漏洞可以找類似開源的CMS,源碼下載下來(lái),自己部署一下,自己注冊(cè)兩賬號(hào),用相同的方式測(cè)試一下,提交漏洞拿到賞金