悦库企业网盘是一款专为满足企业文件管理,协同办公、文件共享需求而设计的私有部署安全、简单的企业文件管理系统。
登录框接口/user/login/.html处存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用SQL注入漏洞获取数据库的数据,还可以写入木马,控制服务器。
版本 < 5.6.8
漏洞是在登录的地方,登录参数处未进行过滤,直接进行SQL语句拼接,导致SQL注入漏洞。
随便输入账号、密码,进行登录,然后抓包。可以看到接口地址: user/login/.html,请求方法为POST,有如下几个参数account、password、clientId、referer、keepLogin。下边进入代码进行跟踪调试。
找到登录处理函数,在入口处设置断点
可以看到,我们请求的几个参数
在OrganizationManager::CheckAccountPassword处,会对认证账号和密码进行检查,我们思考下一般怎么检查?
大部分会拿着web端提交的账号密码,和数据库中保存的账号密码做比较。那么这里就会和数据库进行交互,很有可能就存在sql注入漏洞。
进一步跟踪调试,这里直接把用户,未进行任何处理,直接拼接进sql语句。
进入whereRaw查看拼接后的where语句。
最终的完整SQL语句如下。
尝试构造SQL注入PAYLAOD
"SELECT password FROM ydisk\_user WHERE ( account = BINARY '
// 可控部分
admin') AND GTID_SUBSET(CONCAT(0x7e,(SELECT (ELT(666=666,user()))),0x7e),666)-- la0gke
' ) LIMIT 1 "
其他几个参数并未参与漏洞利用,也不是必须参数,验证的时候直接忽略即可。
查看官方文档,有详细的环境搭建步骤
https://demo.ydisk.cn:1443/manual/docs/manager/installServer/windows
输入payloadaccount=admin') AND GTID_SUBSET(CONCAT(0x7e,(SELECT (ELT(666=666,user()))),0x7e),666)-- la0gke用来获取数据库当前用户
成功复现
该漏洞主要是未对登录的用户名进行严格过滤,导致SQL注入的产生。可以采用占位符的方式进行查询,即可修改SQL注入漏洞。