刚学习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漏洞相比较,这只是一个过程而已