良精集团拍卖(良精阀门商标图片)

影响范围

良精商城网店购物系统 1.13

漏洞类型

逻辑设计缺陷

利用条件

影响范围应用

漏洞概述

经测试与分析,发现良精商城网店购物系统的oa管理系统模块登陆功能底层sql语句执行存在设计缺陷,导致使用admin用户名+任意密码即可登录。

漏洞分析

ljcmsshop_v1.13\\\\oa.php

第一次访问时页面加载处理逻辑:获得c(Public)、a(login)参数,之后定义三个php文件路径信息,在L24判断该处理类是否存在,如果存在则再L27~33行包含进指定的三个php文件,之后拼接一个method——>action_login,之后判断该方法是否存在,且参数a的第一个字符不为”_”,如果存在则调用该方法:

此处调用的方法为:Public类下的action_login方法:

ljcmsshop_v1.13\\\\source\\\\control\\\\oa\\\\Public.php

良精集团拍卖(良精阀门商标图片)

之后这里转向了$this->cptpl . \\’login.tpl\\’,此处的this->cptpl为“tpl/oa/”,这一点在文件:ljcmsshop_v1.13\\\\source\\\\control\\\\oabase.php中有说明:

良精集团拍卖(良精阀门商标图片)

ljcmsshop_v1.13\\\\tpl\\\\oa\\\\login.tpl

之后转向tpl/oa/login.tpl中,在这里是一个登陆处理表单逻辑,具体代码如下:

良精集团拍卖(良精阀门商标图片)

最后会将以上填写的信息,提交到oa页面,同时赋予a(check_login)和c(Public)不同的参数值:

良精集团拍卖(良精阀门商标图片)

之后再次转向oa.php文件,再次回到之前的逻辑,最后在L34调用public类的action_check_login函数:

良精集团拍卖(良精阀门商标图片)

ljcmsshop_v1.13\\\\source\\\\control\\\\oa\\\\Public.php  action_check_login函数逻辑设计:首先检测验证码是否为空,如果不为空则进行检查,魏国则跳过,之后检测账号是否为空,如果不为空则检测密码是否为空,之后如果账号名为”admin”则直接赋予” $_SESSION[\\’ADMIN_AUTH_KEY\\’] = true;”,之后的if(false)条件语句直接跳过,之后进入到else中,之后定义map存储当前登陆用户的信息,之后调用check_login函数进行检查:

良精集团拍卖(良精阀门商标图片)

ljcmsshop_v1.13\\\\source\\\\model\\\\oa\\\\model.login.php  check_login函数处理逻辑设计:

良精集团拍卖(良精阀门商标图片)

在这里会首先获取map数组中的信息,之后通过拼接进SQL语句中执行,但是需要注意的是这里的sql语句中使用了一个OR导致后面对于密码的检测失效,不管后面的密码是否正确都会返回信息,这一点在Mysql中进行了验证,不管密码为什么都会成功完成查询到用户的信息数据:

良精集团拍卖(良精阀门商标图片)

之后进入后面的if判断语句中,在这里由于sql语句执行的结果不为空,使得最后直接进入else语句中,之后将数据库中的信息报错到session中

良精集团拍卖(良精阀门商标图片)

最后重定向到oa.php中,重新赋予c、a数值,之后在L15调用importPlugin导入配置信息:  ljcmsshop_v1.13\\\\source\\\\core\\\\ljphp.php

良精集团拍卖(良精阀门商标图片)

之后再加载各种配置信息~

漏洞复现

访问一下URL,之后输入admin/sjdkgljsdkgjdkg:

http://192.168.174.160/oa.php?c=Public&a=login

良精集团拍卖(良精阀门商标图片)

成功登陆:

良精集团拍卖(良精阀门商标图片)

之后退出,并使用admin/s@#@#SDGSDGDS:成功登陆

安全建议  

修改后台SQL执行语句~

原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34238.html

(0)
七芒星实验室's avatar七芒星实验室
上一篇 2024年4月17日 下午2:37
下一篇 2024年4月17日 下午2:39

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注