坑死爹 Apache 背锅的解析漏洞(CVE-2017-15715)

Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,`1.php\x0A`将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
 
据说是官方修复 Apache背锅的多后缀解析漏洞 后新被人研究出来的漏洞 不知真假 不过很鸡肋 

原理

<FilesMatch>中指定的表达式可以将'$'与恶意文件名中的换行符匹配,而不是仅匹配文件名的末尾。这可以在一些文件的上传被外部阻止的环境中被利用,但只能通过匹配文件名的尾部来实现。
 

插曲

这里使用的是 vulhub-master 的http源码

<?php
var_dump($_FILES);
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');
    }	

	$new_name =  '/root/Desktop/uploadfiles/' . $name;

	#var_dump($new_name);
	#if(!move_uploaded_file($_FILES['file']['tmp_name'], $name)){
	    #die('Error uploading file - check destination is writeable.');
	#}
	if(move_uploaded_file($_FILES['file']['tmp_name'],'./' . $name)){
	  var_dump("success");
	}else{
	  var_dump("failed");
	}
}
?>
妈的老子研究半天 一个上传页面也木有 弄了个上传模板 一个是 name 一个是file
<meta charset="utf-8">
<html>
    <head>upload</head>
    <body>
        <form action="" method='post' enctype='multipart/form-data'>
            <input type='file' name='file'>
            <input type='text' name='name'>
            <input type='submit'>
        </form>
    </body>
</html>
 
马隔壁一直在第一个名字那纠结 怎么加%0a都不管用 日了狗了  而且文件完全不知道传哪去了 每改动下代码就要重启docker环境
 
sb.png
mengbi.png
快尼玛崩溃的时候,翻了一篇文章 感觉最有水准的 其他都尼玛千篇一律 
才突然想起来麻痹的 name表单可以写入的 我还几把找了一段js 将file文件自动读取到name表单中 真是煞笔了 
 

复现

绕过黑名单 在php文件名后面塞个0x0a 表示换行符

0a.png

访问 av.php%0a

4.png

 

鸡肋

1、只能绕过黑名单

if(!in_array($ext,['jpg','png','gif','bmp'])){
exit('fuck86.com you are sb');        
}

2、获取文件名时不能用$_FILES['file']['name'],因为他会自动把换行去掉

本博客所有文章如无特别注明均为原创。作者:odaycaogen复制或转载请以超链接形式注明转自 123``blog
原文地址《坑死爹 Apache 背锅的解析漏洞(CVE-2017-15715)

郑重声明:本文只做技术交流学习使用,请尊重当地法规法律,勿对企业或个人网站及app进行破坏。如产生连带法律责任 123``blog 作者本人概不负责。

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)