phpcms注入漏洞 phpsso.php
打开phpsso.php文件
搜索 $phpssouid = $arr['uid'];
定位大概在129行
代码
$phpssouid = $arr['uid'];
改为
$phpssouid = intval($arr['uid']);
phpcms某处逻辑问题导致getshell
修改/phpcms/libs/classes/attachment.class.php文件143行左右的download方法,在方法开始位置加入:
$extarr = explode('|',strtolower($ext));
$allow_extarr = array('gif','jpg','jpeg','bmp','png');
foreach ($extarr as $theext) {
if(!in_array(strtolower($theext),$allow_extarr)){
exit('the file ext is not allowed');
exit(0);
}
}
PHPCMS V9.6.2 SQL注入漏洞
找到 /phpcms/libs/classes/param.class.php 文件 get_cookie 方法,大概109行:
$value = isset($_COOKIE[$var])?addslashes(sys_auth($_COOKIE[$var],'DECODE')):$default;
phpcms前台注入导致任意文件读取漏洞
打开down.php ,搜索
file_down($fileurl, $filename);
定位到/phpcms/modules/content/down.php 大概128行
phpcms前台注入导致任意文件读取漏洞
在代码 file_down($fileurl, $filename);
上方添加
改为:
$fileurl = str_replace(array('<','>'), '', $fileurl);
phpcmsv9宽字节注入
1.打开 www/phpcms/modules/pay/respond.php , 代码第14行左右 ;
找到 respond_get() 替换成下面的代码,代码如下:
public function respond_get() { if ($_GET['code']){ $code = mysql_real_escape_string($_GET['code']);//注意修改 $payment = $this->get_by_code($code);//注意修改 if(!$payment) showmessage(L('payment_failed')); $cfg = unserialize_config($payment['config']); $pay_name = ucwords($payment['pay_code']); pc_base::load_app_class('pay_factory','',0); $payment_handler = new pay_factory($pay_name, $cfg); $return_data = $payment_handler->receive(); if($return_data) { if($return_data['order_status'] == 0) { $this->update_member_amount_by_sn($return_data['order_id']); } $this->update_recode_status_by_sn($return_data['order_id'],$return_data['order_status']); showmessage(L('pay_success'),APP_PATH.'index.php?m=pay&c=deposit'); } else { showmessage(L('pay_failed'),APP_PATH.'index.php?m=pay&c=deposit'); } } else { showmessage(L('pay_success')); } }
phpcms注入漏洞 poster.php
打开文件www/phpcms/modules/poster/poster.php , 找到第221行左右;
修改代码,在代码if ($_GET['group']) {
的后面,添加如下代码:
$ _GET['group'] = preg_replace('#`#', '', $_GET['group']);
PHPCMS V9.6.2 SQL注入漏洞 param.class.php
同上面的param.class.php