安全研究

安全漏洞
PlanetGallery gallery_admin.php任意文件上传漏洞

发布日期:2006-07-20
更新日期:2006-07-21

受影响系统:
PlaNet Concept planetGallery <= 22.05.2006
不受影响系统:
PlaNet Concept planetGallery 14.07.2006
描述:
BUGTRAQ  ID: 19091
CVE(CAN) ID: CVE-2006-3676

PlanetGallery是一个商业PHP脚本,用于发布图库、显示图片描述等。

PlanetGallery在匹配上传文件的名字时存在漏洞,远程攻击者可能利用此漏洞上传可执行的脚本文件从而在服务器上执行任意命令。

PlanetGallery的admin/gallery_admin.php文件中存在错误的正则表达式:

193   $allow_file_types = 'gif|jpg|jpeg|png|bmp';
[...]
197   if (preg_match('#\.'.$allow_file_types.'?#i',
          $_FILES['grafik']['name'][$i])) {
[...]

每个$_FILES['grafik']['name'][$i]变量都包含有上传文件的文件名。仅带有$allow_file_types中所提供的文件名扩展的图形是允许的,但正则表达式还匹配了类似于example.png.php的文件,Webserver将这类文件解释为PHP脚本。这就允许攻击者上传并执行任意PHP脚本。

<*来源:RedTeam (http://www.redteam-pentesting.de/)
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=115341161106490&w=2
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

http://example.com/planetGalleryPath/images/1/evil.png.php

建议:
临时解决方法:

将admin/admin_gallery.php的193行改为:

   $allow_file_types = '(gif|jpg|jpeg|png|bmp)';

并将197行改为:

   if (preg_match('#\.'.$allow_file_types.'$#i',
          $_FILES['grafik']['name'][$i])) {

厂商补丁:

PlaNet Concept
--------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.planetc.de/download/planetgallery/planetgallery.html

浏览次数:3771
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障