天天看點

阿裡雲ECS phpcms v9 各種注入漏洞更新檔

用阿裡雲ecs伺服器,上傳了用phpcms v9做的項目,沒想到還能幫我查漏洞,于是各種百度,下面記錄下百度到的答案。

<b>1、寬位元組注入漏洞</b>

/phpcms/modules/pay/respond.php 位置約16行

原來代碼

$payment = $this-&gt;get_by_code($_get['code']);

替換為

$payment = $this-&gt;get_by_code(mysql_real_escape_string($_get['code']));

<b>2、phpcms注入漏洞</b>

/phpcms/modules/poster/poster.php 位置約221行

if ($_get['group']) {

之後加上

$_get['group'] = preg_replace('#`#', '', $_get['group']);

<b>3、phpcms前台注入導緻任意檔案讀取漏洞更新檔</b>

/phpcms/modules/content/down.php

(1)位置約17行

parse_str($a_k);

$a_k = safe_replace($a_k); parse_str($a_k);

(2)位置約89行

(3)位置約120行

$filename = date('ymd_his').random(3).'.'.$ext;

$fileurl = str_replace(array('&lt;','&gt;'), '',$fileurl);

<b>4、phpcms注入漏洞 </b>

/phpcms/modules/member/index.php 位置約615行

原來代碼:

$password = isset($_post['password']) &amp;&amp; trim($_post['password']) ? trim($_post['password']) : showmessage(l('password_empty'),http_referer);

替換為:

$password = isset($_post['password']) &amp;&amp; trim($_post['password']) ? addslashes(urldecode(trim($_post['password']))) : showmessage(l('password_empty'), http_referer);

<b>5、phpcms v9.6.2 sql注入漏洞</b>

(1)phpcms/libs/classes/param.class.php 位置約109行

$value = isset($_cookie[$var]) ? sys_auth($_cookie[$var], 'decode') : $default;

$value = isset($_cookie[$var])?addslashes(sys_auth($_cookie[$var],'decode')):$default;

(2)/phpsso_server/phpcms/libs/classes/param.class.php 位置約108行

return isset($_cookie[$var]) ? sys_auth($_cookie[$var], 'decode') : $default;

return isset($_cookie[$var]) ? addslashes(sys_auth($_cookie[$var],'decode')) : $default;

<b>6、phpcms某處邏輯問題導緻getshell</b>

/phpcms/libs/classes/attachment.class.php 位置約143行

function download($field, $value,$watermark = '0',$ext = 'gif|jpg|jpeg|bmp|png', $absurl = '', $basehref = ''){

這樣,加入一個判斷,如果允許的檔案格式是'gif','jpg','jpeg','bmp','png'這些,就繼續,不然就跳出,當然這裡的格式可以根據需要增多幾個。

<b>7、phpcms注入漏洞</b>

/api/phpsso.php 位置約128行

替換為,二合一代碼

<b>8、phpcms authkey生成算法問題導緻authkey洩露</b>

照着下面的函數重新生成一下key值,然後找caches/configs/system.php 裡面把兩個參數替換一下就ok了