Heim >CMS-Tutorial >PHPCMS >Sammlung von PHPCMS-Sicherheitslücken

Sammlung von PHPCMS-Sicherheitslücken

coldplay.xixi
coldplay.xixinach vorne
2020-12-04 16:53:1814292Durchsuche

phpcms-TutorialEinführung in häufige PHPCMS-Sicherheitslücken

Sammlung von PHPCMS-Sicherheitslücken

Empfohlen (kostenlos): phpcms-Tutorial

1. Wide-Byte-Injection-Schwachstelle

/phpcms/modules Der Speicherort von /pay/respond.php ist etwa 16 Zeilen lang.

$payment = $this->get_by_code($_GET['code']);

wird durch

$payment = $this->get_by_code(mysql_real_escape_string($_GET['code']));

2, PHPCMS-Injection-Schwachstelle, ersetzt.

/phpcms/modules /Poster/Poster .php-Speicherort Über Zeile 221

if ($_GET['group']) {

wird nach

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

3 hinzugefügt. Die phpcms-Front-End-Injection führt zu einem willkürlichen Dateilese-Schwachstellen-Patch

/phpcms/modules/content/down.php

(1) Die Position von etwa 17 Zeilen

parse_str($a_k);

wird ersetzt durch

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

(2) Die Position von etwa 89 Zeilen

parse_str($a_k);

wird ersetzt durch.

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

【Das Obige In Version 6.3 wurden zwei Probleme behoben. phpcms/modules/ member/index.php ist etwa 615 Zeilen lang.

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

ersetzt durch:

$fileurl = str_replace(array(&#39;<&#39;,&#39;>&#39;), &#39;&#39;,$fileurl);

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

$password = isset($_POST[&#39;password&#39;]) && trim($_POST[&#39;password&#39;]) ? trim($_POST[&#39;password&#39;]) : showmessage(L(&#39;password_empty&#39;),HTTP_REFERER);
wird durch
$password = isset($_POST[&#39;password&#39;]) && trim($_POST[&#39;password&#39;]) ? addslashes(urldecode(trim($_POST[&#39;password&#39;]))) : showmessage(L(&#39;password_empty&#39;), HTTP_REFERER);

(2)/phpsso_server/phpcms/libs/classes/param.class ersetzt. php etwa in Zeile 108

Originalcode

$value = isset($_COOKIE[$var]) ? sys_auth($_COOKIE[$var], &#39;DECODE&#39;) : $default;

Ersetzen durch

$value = isset($_COOKIE[$var])?addslashes(sys_auth($_COOKIE[$var],&#39;DECODE&#39;)):$default;

6. Ein Logikproblem irgendwo in phpcms verursachte getshell

/phpcms/libs/classes/atta chment.class. php befindet sich in etwa 143 Zeilen

return isset($_COOKIE[$var]) ? sys_auth($_COOKIE[$var], &#39;DECODE&#39;) : $default;

und fügt dann

return isset($_COOKIE[$var]) ? addslashes(sys_auth($_COOKIE[$var],&#39;DECODE&#39;)) : $default;

7 hinzu. phpcms-Injection-Schwachstelle

/api/phpsso.php befindet sich in etwa 128 Zeilen

Originalcode

function download($field, $value,$watermark = &#39;0&#39;,$ext = &#39;gif|jpg|jpeg|bmp|png&#39;, $absurl = &#39;&#39;, $basehref = &#39;&#39;){
ersetzt durch Two-in-One-Code

// 此处增加类型的判断
         if($ext !== &#39;gif|jpg|jpeg|bmp|png&#39;){
             if(!in_array(strtoupper($ext),array(&#39;JPG&#39;,&#39;GIF&#39;,&#39;BMP&#39;,&#39;PNG&#39;,&#39;JPEG&#39;))) exit(&#39;附加扩展名必须为gif、jpg、jpeg、bmp、png&#39;);
         }
8.phpcms Authkey-Generierung Algorithmusprobleme führen zu Authkey-Leckage

1. Fügen Sie in /caches/configs/system.php den ersten Parameter hinzu:

'alivulfix' => 'yes',

Nach der Änderung sieht der Code-Screenshot wie folgt aus:

2. Suchen und ändern Sie auth_key, eine 20-stellige Zeichenfolge, passen Sie einfach an, was Sie schreiben.

$arr[&#39;uid&#39;] = intval($arr[&#39;uid&#39;]);
$phpssouid = $arr[&#39;uid&#39;];
3. Suchen und ändern Sie auth_key, eine 32-Bit-Zeichenfolge; passen Sie einfach an, was Sie schreiben.
$phpssouid = intval($arr[&#39;uid&#39;]);

Hinweis: In diesem Schritt ist es dasselbe wie bei der Cloud Knight-Reparatur mit einem Klick von Alibaba Cloud.

Es ist nur so, dass Website-Benutzer sich vorerst nicht anmelden können, und als nächstes kommt der wichtigste Schritt. 4. Melden Sie sich im Hintergrund beim phpsso-Verwaltungscenter an. Bearbeiten Sie den „Kommunikationsschlüssel“ auf den in Schritt 3 festgelegten Wert „phpsso_auth_key“. Klicken Sie auf Senden.

Screenshots der wichtigsten Schritte sind wie folgt:


Nach der Übermittlung zeigt die Seite eine erfolgreiche Kommunikation an, wie unten dargestellt.



Wenn Sie mehr über das Programmieren erfahren möchten, achten Sie bitte auf die Rubrik php-Schulung!

Das obige ist der detaillierte Inhalt vonSammlung von PHPCMS-Sicherheitslücken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen