seacms v9.92变量覆盖导致越权
漏洞详情
seacms v9.92 及以前版本均存在全局的变量覆盖漏洞,在common.php文件中未对注册的全局变量做完整的安全检查。这里参考:https://xz.aliyun.com/t/6192和https://www.freebuf.com/articles/web/210902.html 对变量覆盖实现越权操作,来学习代码审计,文章使用的是v9.92版本。
漏洞审计分析
在披露这处变量覆盖导致越权的漏洞之前,其实官方就对这里注册变量加强了安全检查。v9.92版本这里漏掉了 _SESSION、_FILES两类。
在common.php中,先在_RunMagicQuotes将用户提交的参数及其值注册为变量和变量值

然后提交到foreach函数中检查,过滤掉一些非法类型的变量。在v9.92版本仅仅是漏掉了SESSION、FILES。而在之前的版本中就只过滤了cfg、GLOBALS
v9.92

v9.2

我这里没找到V9.92的源码,以V9.2版本演示了
common.php文件有很多页面都包含了,其中的注册全局变量的功能可以说非常常用,加上安全过滤时漏掉SESSION类的变量,只要找到使用 session_start 并包含 include/common.php 文件的地方,就可以覆盖 session
找到cms对管理员登录验证的地方

这里会对两个参数进行校验,有趣的是用了一个0R,我们只要满足一个条件就可以了
$_SESSION[‘hashstr’]的值是用管理员密码、数据库名和密码在采用MD5加密形成的,这个不好猜(我要是知道就直接登录了,还越权干嘛)
那就只剩下$cuserLogin->getUserID(),跟进这个函数


文章详细介绍了SeacmsV9.92版本存在的全局变量覆盖漏洞,该漏洞允许攻击者通过覆盖SESSION和FILES类的变量实现越权,包括如何利用该漏洞修改管理员ID和用户组ID以获取管理员权限。漏洞源于common.php文件的安全检查疏漏,修复方法是完善变量过滤机制。
最低0.47元/天 解锁文章
469

被折叠的 条评论
为什么被折叠?



