悦库企业网盘 userlogin.html SQL注入漏洞

悦库企业网盘是一款专为满足企业文件管理,协同办公、文件共享需求而设计的私有部署安全、简单的企业文件管理系统。 登录框接口`/user/login/.html`处存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用SQL注入漏洞获取数据库的数据,还可以写入木马,控制服务器。 ## 二、影响版本

一、漏洞简介

悦库企业网盘是一款专为满足企业文件管理,协同办公、文件共享需求而设计的私有部署安全、简单的企业文件管理系统。

登录框接口/user/login/.html处存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用SQL注入漏洞获取数据库的数据,还可以写入木马,控制服务器。

二、影响版本

版本 < 5.6.8

三、漏洞原理分析

漏洞是在登录的地方,登录参数处未进行过滤,直接进行SQL语句拼接,导致SQL注入漏洞。

image-20240802154145234.png

随便输入账号、密码,进行登录,然后抓包。可以看到接口地址: user/login/.html,请求方法为POST,有如下几个参数account、password、clientId、referer、keepLogin。下边进入代码进行跟踪调试。

image-20240802154233593.png

找到登录处理函数,在入口处设置断点

image-20240802165206288.png

可以看到,我们请求的几个参数

image-20240802165420492.png

OrganizationManager::CheckAccountPassword处,会对认证账号和密码进行检查,我们思考下一般怎么检查?

大部分会拿着web端提交的账号密码,和数据库中保存的账号密码做比较。那么这里就会和数据库进行交互,很有可能就存在sql注入漏洞。

进一步跟踪调试,这里直接把用户,未进行任何处理,直接拼接进sql语句。

image-20240802165659528.png

进入whereRaw查看拼接后的where语句。

image-20240802170128411.png

最终的完整SQL语句如下。

image-20240802170357216.png

尝试构造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

image-20240802171506748.png

五、漏洞复现

输入payloadaccount=admin') AND GTID_SUBSET(CONCAT(0x7e,(SELECT (ELT(666=666,user()))),0x7e),666)-- la0gke用来获取数据库当前用户

image-20240802170909080.png

成功复现

image-20240802171048169.png

六、总结

该漏洞主要是未对登录的用户名进行严格过滤,导致SQL注入的产生。可以采用占位符的方式进行查询,即可修改SQL注入漏洞。

0 条评论