网站合法文件image_upload.php
用于上传文件89471928047.php.jpg
这是将tmp文件复制到同一图片文件夹的简单文件上传表单。
他们如何设法执行它并通过它上传其他文件。有人知道这有可能吗?
PHP version was 5.1.6
正好在小时前更新,或者按计划与主持人5.3.8
进行更新...真是巧合?
答案 0 :(得分:15)
在.htaccess文件中使用AddType
,您可以添加许多其他可以运行PHP的扩展。这通常是如何在仍然使用PHP的情况下使用.html
扩展。所以,是的,这是可能的:
AddType application/x-httpd-php .jpg
如果您愿意,可以测试一下。
AddType application-x-httpd-php .jpg
<?php echo 'foo'; ?>
如果一切按计划进行,“foo”将输出到您的屏幕。如果您愿意,可以对此进行扩展以移动/tmp
个文件。
你肯定要非常小心。
另一种可以做到的方法是通过调用require()
或include()
(或任何_once()
方法)黑客能够加载badfile.php.jpg
<?php
include $_GET["file"];
?>
1}}以无辜形象为幌子上传的文件:
.php.jpg
在上述情况(简化示例)中,黑客可以传入其eval()
文件的路径,并将其内容加载并作为PHP代码处理。
Require,Include及其相关方法并不是处理外部脚本的唯一方法 - 遗憾的是,您也可以使用eval()
。我希望你没有这样做。如果您的服务器上有任何脚本正在使用任何一个文件函数来读取另一个脚本的内容,然后{{1}}将该内容评估为PHP,这也可能会在您的服务器中提供一个巨大的安全漏洞网站。
答案 1 :(得分:8)
您的image_upload.php
不安全,请查看以下内容:
要检查是否是图像,您可以在文件上运行getimagesize,如果图像不是图像,则返回FALSE。
如何执行该文件?首先,您如何知道它已被执行?你有没有看到副作用?
如何查看日志?
检查上传文件的日期和时间,并开始在那里查看可疑活动(查看奇怪的网址参数)。一旦你找到一个或多个IP地址,做恶事,就可以查看那些(那些)IP的日志,看看整个故事。
要了解的另一个重要信息是,您是否编写过该网站或使用CMS 或类似信息,在这种情况下,它是什么版本以及版本是什么?您需要检查已发布的漏洞并进行升级以防万一。
答案 2 :(得分:7)
问题是由您的服务器使用默认的/etc/httpd/conf.d/php.conf引起的:
rpm -ql php-5.1.6-39.el5_8
/etc/httpd/conf.d/php.conf
/usr/lib64/httpd/modules/libphp5-zts.so
/usr/lib64/httpd/modules/libphp5.so
/var/lib/php/session
/var/www/icons/php.gif
/etc/httpd/conf.d/php.conf的内容是:
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
# Use of the "ZTS" build with worker is experimental, and no shared
# modules are supported.
LoadModule php5_module modules/libphp5-zts.so
</IfModule>
#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php
请注意最后一行AddHandler php5-script .php。这导致了这个问题,需要用更安全的配置替换
您可以在此处详细了解它以及如何应用修复程序(请参阅最后的回复):
http://core.trac.wordpress.org/ticket/11122
也看到了这个: