前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache HTTPD换行解析漏洞(CVE-2017-15715

Apache HTTPD换行解析漏洞(CVE-2017-15715

作者头像
字节脉搏实验室
发布2020-08-09 17:13:08
3.1K0
发布2020-08-09 17:13:08
举报

文章源自-投稿

作者-南宫十六

Apache HTTPD是一款HTTP服务器,其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。该漏洞属于用户配置不当所产生,与具体中间件版本无关。

漏洞复现:

使用vulhub进行复现,它是一个集成大量漏洞,方便漏洞复现的一个漏洞集合。

l 在具用Docker环境的Linux虚拟机上执行命令:“git clone https://github.com/vulhub/vulhub.git”拉取所需环境。

l 进入漏洞复现的对应目录,输入命令:“cd vulhub-master/httpd/CVE-2017-15715”。

l 启动Docker容器,输入命令:“docker-compose up -d”。

l 查看容器状态,输入命令:“docker ps”并查看对应容器ID。

l 进入容器,输入命令:“docker exec -it 容器id /bin/bash”。

查看index.php内容,代码如下:

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

}

这是一个文件上传的后端PHP代码,除了上传文件外,还要以POST请求方式传入参数name,其值作为文件上传后最后的名字,同时设置了黑名单过滤name值传递的带有黑名单信息的后缀。

再看一下配置文件信息,输入命令“cat /etc/apache2/conf-available/docker-php.conf”,如图所示。

前三行的内容意思是将所有以“.php”为后缀的文件内容当作PHP代码进行解析,但是却使用了“$”进行文件匹配,这就导致了漏洞的产生。这个符号在正则表达式中是匹配字符串中结尾的位置,若存在换行则匹配换行符为结尾,也就是说可以利用换行符使“$”与其匹配从而绕过黑名单机制实现文件上传。

访问http://127.0.0.1:8080会发现页面空白,原因是代码中没有上传文件的表单,自行构造一个文件上传的表单即可,代码如下:

<html>

<head><meta charset="utf-8"></head>

<body>

<form action method="post" enctype="multipart/form-data">

<label for="file">文件名:</label>

<input type="file" name="file" id="file"><br>

<input type="text" name="name" <br>

<input type="submit" name="submit" value="提交">

</form>

</body>

</html>

访问页面后,按“F12”点击查看器,右击HTML标签选择“编辑HTML”,将以上代码写入,保存。如图所示。

在物理机上可通过访问虚拟机IP(192.168.194.165)加Docker开启的8080端口,间接访问漏洞环境,如图所示。

在文本框中写入上传后文件的名字,如:test.php,选择一个带有phpinfo代码的PHP文件,利用BurpSuite抓包上传,按【Ctrl】+【R】快捷键发送至“Repeater”模块,如图所示。

在test.php后插入空格,点击Hex,找到test.php后空格所对应的十六进制:“20”(0x20),将其改为“0a”(0x0a),如图所示。

点击“Go”,访问http://192.168.194.165:8080/test.php%0A,可以看到PHP代码已经被解析,如图所示。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 字节脉搏实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档