ホームページ >php教程 >php手册 >phpBB < 3.0.10 附件物理路径泄露

phpBB < 3.0.10 附件物理路径泄露

WBOY
WBOYオリジナル
2016-06-06 20:07:221899ブラウズ

到目前位置仍有很多站点,包括一些比较出名的站点,他们的服务器仍存在某Nginx FastCGI漏洞,前不久研究了下某编辑器遇到了点问题,到官方论坛去提问,顺手就测试了下,发现该服务器也存在这个漏洞,于是就想再顺手测试下去,我需要一个可以上传的点,然后申

到目前位置仍有很多站点,包括一些比较出名的站点,他们的服务器仍存在某Nginx FastCGI漏洞,前不久研究了下某编辑器遇到了点问题,到官方论坛去提问,顺手就测试了下,发现该服务器也存在这个漏洞,于是就想再顺手测试下去,我需要一个可以上传的点,然后申请了论坛邀请码,注册发帖提问,蹲点了一段时间,后来,就忘记了这回事→_→!

前两天编辑器更新了,今天上论坛去回复管理员的帖子,发现可以上传附件了,于是上传了一张图片,得到的地址类似这样:

http://VICTIM/bb/download/file.php?id=1

这样的地址完全无法利用,看了下论坛程序使用的是phpbb这套程序,搜索了一圈也没有爆物理路径的文章,于是去官方下载了最新的源码(phpBB 3.0.10)来分析,地址:http://www.phpbb.com/downloads/,果然得自己动手丰衣足食啊。

第一目标就是锁定file.php这个文件了,看了下附件文件的URL地址构成:

PHP

1

2

//论坛程序路径+上传目录+文件名

$phpbb_root_path.$config['upload_path'].'/'.$attachment['physical_filename']

最终定位到物理地址是程序下的files目录,但是文件名是一个hash值,这样我无法准确的得到文件的URL,于是继续看源码,发现有个缩略图功能:

PHP

1

2

3

4

5

//判断缩略图是否存在,是的话给定一个缩略图文件名,缩略图文件名为大图文件名前加“thumb_”

if($thumbnail)

{

$attachment['physical_filename']='thumb_'.$attachment['physical_filename'];

}

而我在本地测试了上传,发现默认是没有生成缩略图的,就是说默认没有开启缩略图功能:

PHP

1

2

//默认请求缩略图的参数值是false

$thumbnail=request_var('t',false);

于是,我给地址加上一个t参数,值为true,强制读取缩略图,结果显然会报错

PHP

1

2

3

4

5

if(!$attachment)

{

send_status_line(404,'Not Found');

trigger_error('ERROR_NO_ATTACHMENT');

}

请求:

http://VICTIM/bb/download/file.php?id=1&t=true

页面输出:

The selected attachment does not exist anymore.

The file ./../files/thumb_2_9d6d524bd7abcf38b8fa6bba7caa65fb does not exist.

看到结果大喜有木有,于是在论坛上测试,成功获得之前上传的文件的真实URL,并且利用服务器漏洞入侵成功。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Unserialize与Autoload次の記事:PHP引用以及误区