一. Apache解析漏洞的構(gòu)造
1. 實(shí)驗(yàn)環(huán)境
????Windows 10+PHPstudy2014
2. apache解析漏洞原理
? ? apache在解析文件時(shí)有一個(gè)原則:當(dāng)碰到不認(rèn)識(shí)的擴(kuò)展名時(shí),將會(huì)從后往前解析,直到遇到認(rèn)識(shí)的擴(kuò)展名為止如果都不認(rèn)識(shí)將會(huì)暴露源碼瘦棋。在apache配置不當(dāng)?shù)臅r(shí)候就會(huì)造成apache解析漏洞葛虐。
3. 漏洞構(gòu)造
????打開(kāi)配置文件httpd.config骇陈,添加如下代碼雳旅。
4. 漏洞詳情
????首先上傳文件? 12.php.jpg
? ? 文件里添加如下代碼:
? ??????????<?php phpinfo();?>
訪問(wèn)上傳的網(wǎng)頁(yè)贾虽,發(fā)現(xiàn)直接解析為php網(wǎng)頁(yè)了。
二.Apache解析漏洞加固
打開(kāi)apache配置文件httpd.conf再最后添加如下代碼
<FilesMatch ".(php.|php3.|php4.|php5.)">
OrderDeny,Allow
Deny from all
</FilesMatch>
然后我們?cè)俅蜷_(kāi)上傳的文件網(wǎng)頁(yè)
解析失敗了捷绑。
附上index.php源碼(同級(jí)目錄下創(chuàng)建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;