来源:自学PHP网 时间:2015-04-17 13:03 作者: 阅读:次
[导读] 利用条件:缓存开启漏洞文件:./html.php漏洞代码:show sourceif ($_GET [#39;page#39;] == #39;#39;) { $html = $_GET [#39;id#39;] . #39;.html#39;;} else { $html = $_GET [#39;i......
利用条件:缓存开启
漏洞文件:./html.php 漏洞代码: show sourceif ($_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之间的包含 //那么这个包含的内容是什么呢,其实就是小偷调用的来源地址 然后替换成自己的一个模板 //远程地址就是鸡肋的条件之二了 官方包括程序都是用的一个地址 如果修改了地址,一样可以在首页查看到 //现用的地址www.2cto.com 程序是织梦的 如果取得这个站的权限就可以控制内容了 所以肯定很多人觉得这个属于迂回了 //条件就是这么让人蛋疼 echo file_get_contents ( CACHE_FILE ); } } else { echo file_get_contents ( CACHE_FILE ); } } 漏洞利用: www.2cto.com /html.php?id=a.php; 日下远程调用的地址内容和url参数可控制 小BUG 真正条件达到了还是可以getshell 可以无视! 本文来自Frandy's Blog 作者:flower 出处:t00ls |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com