前言:复现的时候被某个实验室写的漏洞文章坑了,插桩插了半天也没见断下来,睡了一觉自己去审才发现那篇文章漏洞点找错了........
一.漏洞点
前台的一个漏洞点在
里面的第310行ajaxlogin里面
单看url是个伪静态
最重要的是在这里
用户的传参被变为数组直接传入where方法进行拼接,并且用find方法返回一条数据,没有经过I方法的安全处理
二.利用
可以直接二采用thinkphp 3.2.3 exp(表达式)注入
上面的漏洞点是处理account的,我们直接设置传参把account[0]=exp,这样account[1]=后面的句子就会被解析
下面是示例,数据库里面的字段全部被回显出来了.....显错也是可以的
还能用where函数查找一些没有被过滤的传参
比如第一个,虽然用了函数,
但是括号实现的闭合并不影响恶意语句的执行
也就是没对括号进行过滤,导致sql注入
进一步看这cms的配置文件
I函数默认是用了htmlspeciachars的
参考:
ThinkPHP函数详解:I方法 - ThinkPHP框架
ThinkPHP CURD方法之where方法详解 - ThinkPHP框架
Thinkphp3 漏洞总结 - Y4er的博客
YxtCMF后台的注入和getshell分析 - 腾讯云开发者社区-腾讯云
5.3更新
上面列举的两处注入都是可以堆叠的(都用了find函数,意味着都行?)
这意味着在secure_file_priv做了对文件的导入/导出限制之后,可以用其他方法getshell
比如说在数据表中插入恶意数据配合文件包含
或者直接进行日志getshell
如果觉得《YxtCMF SQL注入 漏洞复现》对你有帮助,请点赞、收藏,并留下你的观点哦!