Apache解析漏洞的构造与加固
一. Apache解析漏洞的构造
1. 实验环境
Windows 10+PHPstudy2014
2. apache解析漏洞原理
apache在解析文件时有一个原则:当碰到不认识的扩展名时,将会从后往前解析,直到遇到认识的扩展名为止如果都不认识将会暴露源码。在apache配置不当的时候就会造成apache解析漏洞。
3. 漏洞构造
打开配置文件httpd.config,添加如下代码。
4. 漏洞详情
首先上传文件 12.php.jpg
文件里添加如下代码:
<?php phpinfo();?>
访问上传的网页,发现直接解析为php网页了。
二.Apache解析漏洞加固
打开apache配置文件httpd.conf再最后添加如下代码
<FilesMatch ".(php.|php3.|php4.|php5.)">
OrderDeny,Allow
Deny from all
</FilesMatch>
然后我们再打开上传的文件网页
解析失败了。
附上index.php源码(同级目录下创建uploadfiles文件夹)
<?php
if (!empty($_FILES)):
$ext = pathinfo($_FILES['file_upload']['name'], PATHINFO_EXTENSION);
if (!in_array($ext, ['gif', 'png', 'jpg', 'jpeg'])) {
die('Unsupported filetype uploaded.');
}
$new_name = __DIR__ . '/uploadfiles/' . $_FILES['file_upload']['name'];
if(!move_uploaded_file($_FILES['file_upload']['tmp_name'], $new_name)){
die('Error uploading file - check destination is writeable.');
}
die('File uploaded successfully: ' . $new_name);
else:
?>
<form method="post" enctype="multipart/form-data">
File: <input type="file" name="file_upload">
<input type="submit">
</form>
<?php
endif;