freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Apache HTTPD 换行解析漏洞分析与复现(CVE-2017-15715)
2021-04-23 17:50:50

0x00 漏洞简介

1.Apache HTTPD是美国阿帕奇(Apache)软件基金会的一款专为现代操作系统开发和维护的开源HTTP服务器。 Apache HTTPD 2.4.0版本至2.4.29版本中存在安全漏洞。

2.Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。在解析PHP时,xx.php\x0A将被按照PHP后缀进行解析,导致可以绕过一些服务器的安全策略。

3.解析漏洞是指服务器应用程序在解析某些精心构造的后缀文件时,会将其解析成网页脚本,从而导致网站的沦陷。大部分解析漏洞的产生都是由应用程序本身的漏洞导致的。

0x01 影响版本

HTTPD的版本2.4.0~2.4.29都有可能存在该漏洞

0x02 漏洞原理

靶场源代码:

1619168080_60828b505336ff522746e.png!small?1619168080919

看完上面的源代码我们很容易就能知道我们上传xx.php%0a和xx.php是不一样的,我们上传xx.php%0a就可以对文件上传的黑名单进行了绕过

另外在该版本的配置中,存在这么一段配置

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

只要满足这么一个正则匹配,就会告知Apache将这个满足匹配的文件按PHP文件来解析

但是不巧的是这里还有一个东西就是$这个东西,它是用来匹配字符串结尾位置的,而且如果设置了RegExp 对象(正则表达式)的 Multiline(/m) 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。

所以如果我们设置了RegExp 对象的 Multiline 属性(\m)的条件下,$还会匹配到字符串结尾的换行符(也就是%0a),于是也就产生了这么一个换行解析漏洞

0x03 漏洞复现

靶场:掌控安全Apache HTTPD 换行解析漏洞靶场

进入靶场后我们看到的是这个样子,只有一个简单的上传页面

1619169200_60828fb0b56a18e0d3d5b.png!small?1619169201177

然后我们选择一个本地的一句话木马上传进行抓包

1619169237_60828fd5878aea38e1eaa.png!small?1619169238087

1619170006_608292d6e03a556d7bad6.png!small?1619170009191

这里有一点需要注意,我们不能直接在xj.php文件名后面加上%0a,因为Get传参他是有URL的编码解码的,但是我们这里是POST传参,他没有,所以我们通过Hex编码的方式手动给他加上

我们先加一个a(我们都知道a的16进制编码是61),然后我们去找到这个61进行替换就好了

1619170007_608292d7b7f736166b902.png!small?1619170009191

我们替换成0a

1619170008_608292d86e6dfe2ff6f4d.png!small?1619170009192

然后放包过去

然后我们去访问一下我们上传的文件(一般是同级目录)

http://httpd_two.tp5.lab2.aqlab.cn/xj.php%0a

然后我们进行phpinfo()传参

1619170045_608292fd3a1103aee9f66.png!small?1619170045845

然后我们甚至可以用蚁剑去进行连接

1619170589_6082951de94526a9b0e54.png!small?1619170590498

至此,我们就已经完成了这个漏洞的复现

0x04 漏洞修复

1.升级到最新版本

2.将上传的文件重命名为时间戳+随机数+.jpg的格式并禁用上传文件目录执行脚本权限

0x05 总结

这个漏洞需要有以下利用条件:

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

2、Apache版本为2.4.0到2.4.29

3、服务器必须是linux系统,因为windows环境下不支持后缀名带有换行符\x0a

总体上而言,只要取$FILES[‘file’][‘name’]作为文件名,就可以无视该解析漏洞,所以该漏洞总体来说实际用处不大,但是由于漏洞根本成因在于$,在以后的其他某些漏洞可能会有利用到的地方,所以这个作为一种姿势学习一下还是很有趣的。

# 漏洞分析与复现
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录