水平越权

指攻击者尝试访问与他拥有相同权限的用户资源。例如,用户A和用户B属于同一角色,拥有相同的权限等级,他们能获取自己的私有数据(数据A和数据B),但如果系统只验证了能访问数据的角色,而没有对数据做细分或者校验,导致用户A能访问到用户B的数据(数据B),那么用户A访问数据B的这种行为就叫做水平越权访问。
image.png

概况

来到了靶场的

http://192.168.182.147/vul/overpermission/op1/op1_mem.php

水平越权测试页面:
image.png

http://192.168.182.147/vul/overpermission/op1/op1_mem.php?username=vince&submit=%E7%82%B9%E5%87%BB%E6%9F%A5%E7%9C%8B%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF

从URL地址,我们可以看到,尽管当前我以vince的身份进行登录了。当url地址栏有个username的参数,依然是以vince的名字带入了参数进行查询。

开脑洞

image.png
尝试把vince的名字换成其他人的名字会如何,假设我认识一个人,他的名字叫: allen 那是否可以尝试把username换成allen会如何?

测试结果
image.png

http://192.168.182.147/vul/overpermission/op1/op1_mem.php?username=allen&submit=%E7%82%B9%E5%87%BB%E6%9F%A5%E7%9C%8B%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF

原来水平越权是真的存在。
image.png


源码分析

image.png