Heim > Artikel > CMS-Tutorial > Verschiedene Patches für PHPCMS-Injection-Schwachstellen
1. Wide-Byte-Injection-Schwachstelle
/phpcms/modules/pay/respond.php bei etwa 16 Zeile
Originalcode
$payment = $this->get_by_code($_GET['code']);
wird ersetzt durch
$payment = $this->get_by_code(mysql_real_escape_string($_GET['code']));
2. phpcms-Injection-Schwachstelle
/phpcms/modules/poster/poster .php befindet sich ungefähr in Zeile 221 von
if ($_GET['group']) {
und fügen Sie dann
$_GET['group'] = preg_replace('#`#', '', $_GET['group']);
3 hinzu. Patch für die Schwachstelle beim Lesen willkürlicher Dateien, die durch die PHPCMS-Frontend-Injection verursacht wird
/phpcms/ module/content/down.php
(1) Ersetzen Sie Zeile 17
parse_str($a_k);
durch
$a_k = safe_replace($a_k); parse_str($a_k);
(2) Zeile 89
parse_str($a_k);
Ersetzen Sie durch
$a_k = safe_replace($a_k); parse_str($a_k);
(3) Fügen Sie
$filename = date('Ymd_his').random(3).'.'.$ext;
nach Zeile 120 von
$fileurl = str_replace(array('<','>'), '',$fileurl);
hinzu. 4. phpcms-Injection-Schwachstelle
/phpcms/ module/member/index.php befindet sich in Zeile 615 Originalcode:$password = isset($_POST['password']) && trim($_POST['password']) ? trim($_POST['password']) : showmessage(L('password_empty'),HTTP_REFERER);Ersetzt durch:
$password = isset($_POST['password']) && trim($_POST['password']) ? addslashes(urldecode(trim($_POST['password'] ))) : showmessage(L('password_empty'), HTTP_REFERER);
5. PHPCMS V9.6.2 SQL-Injection-Schwachstelle
(1) phpcms/libs/classes/param.class.php befindet sich ungefähr in Zeile 109 Der ursprüngliche Code$value = isset($_COOKIE[$var]) ? sys_auth($_COOKIE[$var], 'DECODE') : $default;wird durch
$value = isset($_COOKIE[$var])?addslashes(sys_auth($_COOKIE[$var],'DECODE')):$default;
(2)/phpsso_server/phpcms/libs/classes/param.class.php befindet sich in etwa 108 Zeilen
Der ursprüngliche Code
return isset($_COOKIE[$var]) ? sys_auth($_COOKIE[$var], 'DECODE') : $default;
wird durch
ersetztreturn isset($_COOKIE[$var]) ? addslashes(sys_auth($_COOKIE[$var],'DECODE')) : $default;6. Ein logisches Problem irgendwo in phpcms führte dazu, dass sich getshell
/phpcms/libs/classes/attachment.class.php ungefähr in Zeile 143 nach
function download($field, $value,$watermark = '0',$ext = 'gif|jpg|jpeg|bmp|png', $absurl = '', $basehref = ''){befand
und fügen Sie
$extArray=explode('|',$ext); if(!empty($extArray) && is_array($extArray)){ foreach($extArray as $k => $v){ if(!in_array(strtolower($v), array('gif','jpg','jpeg','bmp','png'))); exit('0');//循环判断如果 有一个不符合,直接返回 0 } }
hinzu. Fügen Sie auf diese Weise ein Urteil hinzu. Wenn die zulässigen Dateiformate „gif“, „jpg“, „jpeg“, „bmp“, „png“ sind, fahren Sie fort, andernfalls Natürlich können die Formate hier beliebig erweitert werden.
7. phpcms-Injection-Schwachstelle/api/phpsso.php befindet sich in etwa 128 Zeilen
Ersetzen Sie den ursprünglichen Code
$arr['uid'] = intval($arr['uid']); $phpssouid = $arr['uid'];
mit , Two-in-One-Code
$phpssouid = intval($arr['uid']);8. Probleme mit dem phpcms-Authentifizierungsschlüssel-Generierungsalgorithmus führen zu Authkey-Lecks
Generieren Sie den Schlüsselwert gemäß der folgenden Funktion neu , und dann Caches/Konfigurationen finden Ersetzen Sie einfach die beiden Parameter in /system.php und es wird gut sein
<?php function random($length, $chars = '0123456789') { $hash = ''; $max = strlen($chars) - 1; for($i = 0; $i < $length; $i++) { $hash .= $chars[mt_rand(0, $max)]; } return $hash; } echo random(20, 'authkey').'<br/>'; echo random(32, 'phpssoauthkey');exit; ?>
PHP Chinesische Website, eine große Anzahl kostenloser
PHPCMS-Tutorials, willkommen zum Lernen online!
Das obige ist der detaillierte Inhalt vonVerschiedene Patches für PHPCMS-Injection-Schwachstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!