目錄
①CVE-2017-15715
②apache_parsing_vulnerability
①CVE-2017-15715
貼出源碼:
<?php
if(isset($_FILES['file'])) {
$name = basename($_POST['name']);
$ext = pathinfo($name,PATHINFO_EXTENSION);
if(in_array($ext, ['php', 'php3', 'php4', 'php5', 'phtml', 'pht'])) {
exit('bad file');
}
move_uploaded_file($_FILES['file']['tmp_name'], './' . $name);
} else {
?>
<!DOCTYPE html>
<html>
<head>
<title>Upload</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data">
<p>
<label>file:<input type="file" name="file"></label>
</p>
<p>
<label>filename:<input type="text" name="name" value="evil.php"></label>
</p>
<input type="submit">
</form>
</body>
</html>
<?php
}
?>
意思就是上傳文件的后綴不能是php,php3,php4,php5,phtml,pht
我們看一下.htaccess配置文件
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
?這段代碼的作用是告訴 Apache 如何處理以 .php
結(jié)尾的請(qǐng)求,確保這些請(qǐng)求能夠被正確地解釋和執(zhí)行 PHP 代碼,并將結(jié)果返回給客戶端。
這個(gè)$我們很熟悉,在非多行模式下,$
會(huì)忽略在句尾的%0a。
之前就利用%0a換行繞過了preg_match
舉個(gè)例子
if (preg_match('/^flag$/', $_GET['a']) && $_GET['a'] !== 'flag') {
echo $flag;
}
只要傳入?a=flag%0a即可?
這里也是一樣的道理
?
?
?繞過過濾,寫馬成功
訪問 ,RCE
②apache_parsing_vulnerability
?
貼出源碼:
<?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;
?原理:
apache通過查看mime.types文件來查看是否能夠識(shí)別上傳文件的文件類型。在/etc/mime.types文件中記錄了大量的文件后綴和mime類型。Apache文件解析漏洞涉及一個(gè)解析文件的特性:Apache默認(rèn)一個(gè)文件可以有多個(gè)以點(diǎn)分隔的后綴,當(dāng)右邊的后綴無法識(shí)別(不在mime.types內(nèi)),則繼續(xù)向左識(shí)別。
如果在Apache 的 配置文件里有這樣一行配置
AddHandler application/x-httpd-php .php
AddHandler不是用正則去匹配后綴的。所以 ,在文件名的任何位置匹配到php后綴,它都會(huì)讓php_module解析 。
在有多個(gè)后綴的情況下,只要一個(gè)文件含有`.php`后綴的文件即將被識(shí)別成PHP文件,沒必要是最后一個(gè)后綴。利用這個(gè)特性,將會(huì)造成一個(gè)可以繞過上傳白名單的解析漏洞
實(shí)操:
改文件后綴,上傳,寫馬成功
?訪問,RCE文章來源:http://www.zghlxwxcb.cn/news/detail-767399.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-767399.html
到了這里,關(guān)于【W(wǎng)eb】vulhub-httpd apache解析漏洞復(fù)現(xiàn)(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!