1.1漏洞介绍
CVE-2017-15715漏洞可能允许攻击者通过构造特定的恶意文件名来绕过服务器对文件上传的安全限制。在Apache HTTP Server的某些版本中,
攻击者可以利用这个漏洞在服务器上上传恶意文件。例如,如果服务器阻止了某些文件的上传,但允许上传的文件名以"$"字符结尾,攻击者可以构造一个恶意文件名,使其在匹配
为了修复该漏洞,Apache HTTP Server的维护者发布了更新版本(2.4.33),其中修复了
受影响版本:Apache HTTP Server的2.4.0至2.4.29版本。
详细利用方式:Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.phpx0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
利用条件:网站需要提供上传功能,通过burpsuite抓包构建,绕过拦截,然后获取上传的文件地址,通过文件名称+%0a来进行访问。
1.2漏洞环境搭建
这里采用Vulhub(https://vulhub.org/)一键搭建漏洞测试靶场,来进行漏洞复现。本次用到的所有测试环境在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端口,直接访问虚拟机http://192.168.19.134: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.访问文件
这里访问地址http://192.168.19.134:8080/evil.php%0a即可。
图8执行效果
防御措施:升级到最新版本
原文始发于微信公众号(小兵搞安全):Apache HTTPD 换行解析漏洞(CVE-2017-15715)复现及利用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论