用阿裡雲ecs伺服器,上傳了用phpcms v9做的項目,沒想到還能幫我查漏洞,于是各種百度,下面記錄下百度到的答案。
<b>1、寬位元組注入漏洞</b>
/phpcms/modules/pay/respond.php 位置約16行
原來代碼
$payment = $this->get_by_code($_get['code']);
替換為
$payment = $this->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('<','>'), '',$fileurl);
<b>4、phpcms注入漏洞 </b>
/phpcms/modules/member/index.php 位置約615行
原來代碼:
$password = isset($_post['password']) && trim($_post['password']) ? trim($_post['password']) : showmessage(l('password_empty'),http_referer);
替換為:
$password = isset($_post['password']) && 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了