越权漏洞原理及水平越权案例演示;垂直越权漏洞原理和测试流程案例;php反序列化漏洞

一、越权漏洞原理及水平越权案例演示

(一)越权漏洞概述(摘录)
由于没有用户权限进行严格的判断,
导致低权限的账号(比如普通用户)可以去完成高权限账号(比如超级管理员)范围内的操作。
平行越权:A用户和B用户属于同一级别用户,但各自不能操作对方个人信息,A用户如果越权操作B用户的个人信息的情况称为平行越权操作。
垂直越权:A用户权限高于B用户,B用户越权操作A用户的权限的情况称为垂直越权。
越权漏洞属于逻辑漏洞,是由于权限校验的逻辑不够严谨导致的。
每个应用系统其用户对应的权限是根据其业务功能划分的,而每个企业的业务又都是不一样的。因此越权漏洞很难通过扫描工具发现出来,往往需要通过手动进行测试。
(二)常见越权漏洞演示:前端用户平行越权
使用pikachu平台在平行越权模块进行实验演示操作。
1.首先输入任一正确的个人账号信息登陆。点击查看个人信息。
2.查看点击后提交的数据包,http://127.0.0.1/pikachu/vul/overpermission/op1/op1_mem.php?username=lucy&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
发现是一个简单的get请求,将当前登陆的人的用户名传至后台从而显示后台反馈回来的数据。
3.对get请求中的传至后台的用户名进行简单的更改,
http://127.0.0.1/pikachu/vul/overpermission/op1/op1_mem.php?username=kobe&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
查看反馈结果。
越权漏洞原理及水平越权案例演示;垂直越权漏洞原理和测试流程案例;php反序列化漏洞
越权漏洞原理及水平越权案例演示;垂直越权漏洞原理和测试流程案例;php反序列化漏洞
可见这里存在越权漏洞,查看代码。
越权漏洞原理及水平越权案例演示;垂直越权漏洞原理和测试流程案例;php反序列化漏洞
可见其发起的请求与网页的登陆态并没有进行绑定,并查询查询的用户信息和当前登陆的用户是否一致。需要增加函数进行校验。

二、垂直越权漏洞原理和测试流程案例

在pikachu平台垂直越权模块进行实验操作演示。
1.首先使用超级管理员账号进行登陆,执行添加用户、删除用户等只有超级管理员有权限进行的操作。越权漏洞原理及水平越权案例演示;垂直越权漏洞原理和测试流程案例;php反序列化漏洞
2.将相关操作的数据包进行抓包处理。

越权漏洞原理及水平越权案例演示;垂直越权漏洞原理和测试流程案例;php反序列化漏洞
3.退出超级管理员账号,并使用之前抓取的数据包进行只有超级管理员有权限进行的操作。事实证明不可行。仍然只有最初添加的用户。
越权漏洞原理及水平越权案例演示;垂直越权漏洞原理和测试流程案例;php反序列化漏洞
当超级管理员退出后,登陆态发生了改变,使得相关操作被重定向至登陆界面,需要重新登陆。
4.登陆普通管理员的账号,使用bp获取当前的登陆态,寻找到之前超级管理员添加用户的POST请求。将超级管理员的登陆态换成当前普通用户的登陆态,意为使用普通用户的登录状态来执行超级管理员的权限,刷新后发现用户列表中又出现了一个lzy的用户,可见存在垂直越权漏洞。
越权漏洞原理及水平越权案例演示;垂直越权漏洞原理和测试流程案例;php反序列化漏洞
查看代码可知,后台只是对是否登陆做了判断,并未对当前登陆用户的权限等信息进行核验判断,以至于产生了垂直越权漏洞。

三、php反序列化漏洞

首先了解一下序列化和反序列化两个函数
越权漏洞原理及水平越权案例演示;垂直越权漏洞原理和测试流程案例;php反序列化漏洞
例如:定义一个public变量为pikachu,将其序列化将其序列化之后的结果进行反序列化,这样就可以对其值进行读取。
序列化和反序列化本身没有问题,但是如果反序列化的内容是用户可以控制的,且后台不正当的使用了PHP中的魔法函数,就会导致问题漏洞的产生。
越权漏洞原理及水平越权案例演示;垂直越权漏洞原理和测试流程案例;php反序列化漏洞
在pikachu平台反序列化漏洞模块进行实验演示操作:首先构造一段正确的反序列化内容,例如:
越权漏洞原理及水平越权案例演示;垂直越权漏洞原理和测试流程案例;php反序列化漏洞
在相关端口进行提交,发现xss弹窗,证明存在漏洞。