Heim > CMS-Tutorial > PHPCMS > Hauptteil

Sammlung von PHPCMS-Sicherheitslücken

coldplay.xixi
Freigeben: 2020-12-04 16:53:18
nach vorne
14244 Leute haben es durchsucht

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']);
Nach dem Login kopieren

wird durch

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

2, PHPCMS-Injection-Schwachstelle, ersetzt.

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

if ($_GET['group']) {
Nach dem Login kopieren

wird nach

$_GET['group'] = preg_replace('#`#', '', $_GET['group']);
Nach dem Login kopieren

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);
Nach dem Login kopieren

wird ersetzt durch

$a_k = safe_replace($a_k); parse_str($a_k);
Nach dem Login kopieren
Nach dem Login kopieren

(2) Die Position von etwa 89 Zeilen

parse_str($a_k);
Nach dem Login kopieren

wird ersetzt durch.

$a_k = safe_replace($a_k); parse_str($a_k);
Nach dem Login kopieren
Nach dem Login kopieren

【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;
Nach dem Login kopieren

ersetzt durch:

$fileurl = str_replace(array(&#39;<&#39;,&#39;>&#39;), &#39;&#39;,$fileurl);
Nach dem Login kopieren

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);
Nach dem Login kopieren
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);
Nach dem Login kopieren

(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;
Nach dem Login kopieren

Ersetzen durch

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

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;
Nach dem Login kopieren

und fügt dann

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

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;){
Nach dem Login kopieren
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;);
         }
Nach dem Login kopieren
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;];
Nach dem Login kopieren
3. Suchen und ändern Sie auth_key, eine 32-Bit-Zeichenfolge; passen Sie einfach an, was Sie schreiben.
$phpssouid = intval($arr[&#39;uid&#39;]);
Nach dem Login kopieren
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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage