刚学习PHP代码审核不久,打算下个PHP代码读读,去看了下源码站看到了几张诱惑的美图吸引我了,于是下载看了下,
漏洞鸡肋,这里简单描述下漏洞形成条件:缓存开启,发现这个漏洞跟前几天那个Cond0r发布的小偷程序漏洞有几分相似,看代码
以下是引用片段:
./html.php
if ($_GET ['page'] == '') {
$html = $_GET ['id'] . '.html';
} else {
$html = $_GET ['id'] . '_' . $_GET ['page'] . '.html';
}
if ($cache == 'on')//缓存开启
{
define ( 'CACHE_FILE',VV_CACHE . "/" . $news . $html );// cache/p/
//构造 ?id=a.php; 形成 a.php;.html 文件生成在/cache/p/a.php;.html
//apache iis6可利用 略鸡肋
$filem = @filemtime ( CACHE_FILE );
if (! file_exists ( CACHE_FILE ) or ($filem + ($htmlcache * 3600)) <= time ()) {
if (! file_exists ( VV_CACHE )) {
chmod ( 'cache', 0777 ); //生成一级缓存目录
mkdir ( 'cache', 0777 );
}
if (! file_exists ( VV_CACHE ."/".$news )) {
chmod ( VV_CACHE ."/".$news, 0777 );//生成二级缓存目录
mkdir ( VV_CACHE ."/".$news, 0777 );
}
ob_start ();
include_once (VV_RULE ."/html.php");
include_once (VV_TEMP ."/$template/html.tpl");
$contents = ob_get_contents ();
ob_end_clean ();
if(!empty($body)){
file_put_contents ( CACHE_FILE, $contents );
//这里是写文件 文件名我们已经可以控制了 那么内容呢
//$contents要写的内容就是 ob_start ob_end_clean之间的包含
//那么这个包含的内容是什么呢,其实就是小偷调用的来源地址 然后替换成自己的一个模板
//远程地址就是鸡肋的条件之二了 官方包括程序都是用的一个地址 如果修改了地址,一样可以在首页查看到
//现用的地址 [url]www.juesemm.com[/url] 程序是织梦的 如果取得这个站的权限就可以控制内容了 所以肯定很多人觉得这个属于迂回了
//条件就是这么让人蛋疼
echo file_get_contents ( CACHE_FILE );
}
} else {
echo file_get_contents ( CACHE_FILE );
}
} |
利用方法 www.x.com/html.php?id=a.php; 日下远程调用的地址 内容和url参数可控制
小BUG 真正条件达到了还是可以getshell 可以无视
当然这些都是基础知识,无法跟那些挖dz phpwind dede漏洞相比较,这只是一个过程而已
文章作者
flower
上次更新
2011-11-29
许可协议
Nuclear'Atk(核攻击)网络安全实验室版权所有,转载请注明出处。