概述
over permission源碼分析
水平越權
登陸lucy賬號,查看個人信息
退出lucy賬號
登陸kobe賬號,查看個人信息
我們發現查看個人信息的url有規律,查看kobe個人信息的的url爲http://localhost/pikachu/vul/overpermission/op1/op1_mem.php?username=kobe&submit=點擊查看個人信息
查看lucy個人信息的的url爲
http://localhost/pikachu/vul/overpermission/op1/op1_mem.php?username=lucy&submit=點擊查看個人信息
現在kobe是登錄狀態,lucy是未登錄,但是在訪問查看lucy個人信息的url,可以看到lucy的個人信息。由此存在水平越權漏洞。
代碼分析
查看信息的頁面:
跟進check_op_login函數,函數只檢查了isset($_SESSION[‘op’][‘username’]) && isset($_SESSION[‘op’][‘password’])再去看看登陸界面的代碼:不管是lucy還是kobe,登陸之後都設置$_SESSION[‘op’][‘username’] 和 $_SESSION[‘op’][‘password’]
以上,存在越權漏洞,因爲在查看信息的界面,只判斷是否登陸,沒有判斷是誰登陸。
垂直越權
先登錄pikachu賬號,發現只有查看權限
登陸admin賬號,發現有查看和添加權限
admin賬號隨意添加一個會員,
這裏是這次添加會員的請求包,之後會用到
現在退出高權限的admin賬號,登陸低權限的pikachu賬號,我們試試能不能用低權限的賬號越權做添加會員用戶的操作。
pikachu賬號登陸之後,重發剛纔添加會員的請求包,但是把cookie改成piakchu賬號的cookie。
發現添加成功
代碼分析
op2_login.php
op2_admin.php
op2_user.php
由admin.php和user.php得知,在只登陸pikachu賬號而未登錄admin賬號時,訪問admin的頁面是訪問不成功的,因爲admin.php有檢驗賬號的level級別。
我們再看看添加賬號的頁面代碼:
沒有檢驗level級別,才導致越權存在。
修復方案
對權限進行嚴格的校驗