某天晚上做了一个梦,梦中对一个系统进行渗透测试,漏洞发现,印象深刻,早上起来后,赶紧给记录下来,于是就有了这篇文章。
马上注册,这是瞧不起谁啊,于是乎反手就注册账户登录进去
点击设置,更改资料时,更改头像处未对上传文件后缀做限制,直接getshell。
且在网站目录下发现了备份的网站源代码文件,连接上网站数据库后,在数据库中获取到网站管理后台账户密码。登录后台,在管理后台处发现一处越权漏洞。
正常抓包测试,查询当前账户日志信息,成功获取到当前账户的日志信息
为什么会造成这个漏洞产生???,疑惑的我打开idea 导入源代码进行审计。
首先根据上述抓取的流量信息,查找系统调用的api接口,并去找到对应的Controller层代码
可见 Controller层接收一个 SearchLogV0 实体类对象
我们跟进去看一下SearchLogV0 实体类对象中有那些参数
继续查看Controller层代码。
Controller层未对传入的参数做处理,直接调用Service的searchPage方法,传入参数。
继续跟进到Service层。Service层也未作处理,直接调用Mappe接口方法,传入从Controller层传入过来的参数。
查看Mapper接口方法对应的mapper.xml 数据库配置信息。
Mybatis 动态传参,只对传入的参数做了非空判断,如果传入的参数不为空就代入到条件查询中,如果为空则跳过此条件判断。如果参数都为空,直接返回所有字典属性列表。按照其sql语句查询条件,不传入参数,也可以获取到所有日志信息。
本身这是个Mybatis 正常功能,但是从Controller 层 -》Server层 -》Mappe层 都未对传入参数,以及请求者身份做鉴权处理。直接请求接口,传入参数,就造成了漏洞产生。
本次文章就到这里,主要是针对本次梦中渗透测试过程中的越权漏洞做个分析,了解此越权漏洞产生原因。
白泽数字风险资产图鉴系统是一款高效的安全管理工具,旨在支持网络攻击面的深度管理和外部攻击面的全面管理。通过其先进的功能,用户能够全面探查数字风险,包括自动化评估与验证漏洞、实现漏洞全生命周期管理,并持续跟踪开源数字情报。这一系统为企业提供了强大的安全保障,帮助其更好地应对不断演变的网络威胁。
白泽数字风险资产图鉴系统支持对此类漏洞进行全面检测。
睚眦数字风险全站防御系统支持web全协议安全防护,将安全防护从应用及提升至参数脚本级,实现全方位防御能力,通过"表单字段加密技术",对表单提交参数名及参数值进行加密,使攻击者无法有效分析表单相关字段含义,以及基础waf功能都可以有效防止任意文件上传以及越权漏洞。
云科安信睚眦数字风险全栈防御系统支持对Webshell上传及越权漏洞进行检测及阻断。
原文始发于微信公众号(Seraph安全实验室):重生第九篇之梦境中的越权漏洞分析
评论