龙空技术网

Apache HTTPD 换行解析漏洞(CVE-2017-15715)复现及利用

小兵搞安全 148

前言:

眼前兄弟们对“apachehttpd启动”大致比较注意,我们都想要学习一些“apachehttpd启动”的相关资讯。那么小编同时在网摘上搜集了一些有关“apachehttpd启动””的相关内容,希望大家能喜欢,你们快快来了解一下吧!

1.1漏洞介绍

CVE-2017-15715漏洞可能允许攻击者通过构造特定的恶意文件名来绕过服务器对文件上传的安全限制。在Apache HTTP Server的某些版本中,<FilesMatch>指令用于匹配文件名模式并执行相应的操作。然而,在某些情况下,该指令可能会错误地将""字符解释为文件名的一部分,而不是将其视为表示文件名结束的特殊字符。这可能导致服务器错误地匹配到包含""字符的文件名,即使该文件名后面还有更多的字符。

攻击者可以利用这个漏洞在服务器上上传恶意文件。例如,如果服务器阻止了某些文件的上传,但允许上传的文件名以"$"字符结尾,攻击者可以构造一个恶意文件名,使其在匹配<FilesMatch>指令时仅匹配到文件名的末尾部分。这样,攻击者就可以绕过服务器的安全限制,并成功上传恶意文件。

为了修复该漏洞,Apache HTTP Server的维护者发布了更新版本(2.4.33),其中修复了<FilesMatch>指令对""字符的解释方式。现在,""字符将被正确地解释为表示文件名结束的特殊字符,从而避免了潜在的攻击。

受影响版本:Apache HTTP Server的2.4.0至2.4.29版本。

详细利用方式:Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

利用条件:网站需要提供上传功能,通过burpsuite抓包构建,绕过拦截,然后获取上传的文件地址,通过文件名称+%0a来进行访问。

1.2漏洞环境搭建

这里采用Vulhub()一键搭建漏洞测试靶场,来进行漏洞复现。本次用到的所有测试环境在httpd目录下,如图1所示。

图1 所有漏洞测试环境信息

1.启动漏洞docker环境

(1)到漏洞docker所在环境

cd /opt/vulhub/httpd/CVE-2017-15715

(2)构建 Docker Compose 文件中定义的服务的镜像

docker-compose build

(3)启动在docker-compose.yml文件中定义的服务容器

docker-compose up –d

图2 启动docker

如果前面存在docker,则需要停止前面docker。

docker ps

docker dockerid stop

2.访问漏洞环境

可以通过docker ps命令查看docker开启的端口,在本例中默认开启8080端口,直接访问虚拟机,如图3所示,显示漏洞存在的页面。

图3 漏洞存在页面

1.3漏洞复现

1.拦截测试

启动burpsuite2022版本,打开默认的调试浏览器,输入前面地址地址,单击上传,如图4所示,正常上传php文件就会出现上传失败提示“bad file”。

图4 上传错误提示

2.绕过上传限制

在BurpSuite的历史记录中将该页发送到重放攻击“Send to Repeater”中,如图5所示。

图5 发送到重放攻击

在重放攻击页面中单击“16进制(hex)”找到上传文件的名称evil.php处,然后单击“insert byte”,如图6所示。

图6寻找文件上传名称地址

在evil.php后面插入一个\x0A这里只需要选中0d,右击选择insert byte…后,输入0a即可插入至里面,如图7所示,确定然后发送包。对比其值的变化前期值为“70 0d 0a 2d 2d”更改后为“70 0a 0d 0a 2d”。

图7 构建特殊文件名称

3.访问文件

这里访问地址即可。

图8执行效果

防御措施:升级到最新版本

标签: #apachehttpd启动