• 妈的,写之前不说,写完了了你说不行.中途我还问你你说对.你真是中国第一Monkey
  • 沃妮马,过的真快!转眼又上班了.等待十月一.
  • 还有1天就是端午节了.过的真快, 在这个公司工作半年啦..
  • 咦~哪个弟弟CC我呢?
  • 简单,简单.我提个思路.
  • 不算今天还有2天就放假了.
  • 一切随缘,随波逐流.
  • 我的天啊,手欠把写了两天的项目删除了,回收站都没有!真是一干二净!心态爆炸!
  • 如果您需要随机数,请使用 random_int(). 如果需要随机字节字符串,请使用 random_bytes(). 所以不要使用 mt_rand(), rand(), 或 uniqid() .
  • 五一过去的真快

利用最新Apache解析漏洞(CVE-2017-15715)绕过上传黑名单解析

Linux KIENG 8个月前 (01-31) 76074次浏览 已收录 0个吐槽 扫描二维码

目标环境

比如,目标存在一个上传的逻辑:

<?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);
}

可见,这里用到了黑名单,如果发现后缀在黑名单中,则进行拦截。

然后,我们用 docker 启动一个默认的 Apache PHP(Apache 版本在 2.4.0 到 2.4.29 即可):

docker run -d -p 8080:80 --name apache php:5.5-apache

绕过黑名单 getshell

正常上传 php 文件,被拦截:
利用最新 Apache 解析漏洞(CVE-2017-15715)绕过上传黑名单解析
可以上传 1.php.xxx,但是不解析,说明老的 Apache 解析漏洞不存在:
利用最新 Apache 解析漏洞(CVE-2017-15715)绕过上传黑名单解析
我们利用 CVE-2017-15715,上传一个包含换行符的文件。注意,只能是\x0A,不能是\x0D\x0A,所以我们用 hex 功能在 1.php 后面添加一个\x0A:
然后访问/1.php%0A,即可发现已经成功 getshell:
利用最新 Apache 解析漏洞(CVE-2017-15715)绕过上传黑名单解析

nginx + php,我进行了测试,发现结果却有些区别:

成功上传后,访问却出现 Access denied 错误。

这也是我预想的结果,fpm 存在一个 security.limit_extensions 配置,默认只解析 php 后缀的文件,多一个换行也不行。


KIENG , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA 4.0协议进行授权
转载请注明原文链接:利用最新 Apache 解析漏洞(CVE-2017-15715)绕过上传黑名单解析
本文章链接:https://blog.kieng.cn/468.html
喜欢 (0)
KIENG
关于作者:
一个热衷网络的Man
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 快速获取昵称
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址