freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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

FreeBuf+小程序

FreeBuf+小程序

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

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_361913 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
漏洞复现
FreeBuf_361913 LV.3
这家伙太懒了,还未填写个人描述!
  • 7 文章数
  • 4 关注者
Apache log4j2-RCE 漏洞复现(CVE-2021-44228)
2021-12-14
74cms-v6.0.4-反射型XSS漏洞复现
2021-08-12
域传送漏洞浅析
2021-05-30
文章目录