Apache HTTPD 换行解析漏洞(CVE-2017-15715)与拓展(转载)

之前就看了这个漏洞,但是当时没有认真思考叫因为只是一个%0a绕过就OK
没有理解原理,现在来填坑

环境启动与版本漏洞
1.在apache2.40~2.4.29版本中存在这个漏洞
2.这么我使用的是vulhub环境搭建
进入目录编译及运行漏洞环境:
docker-compose build
docker-compose up -d
启动后Apache运行在http://your-ip:8080**

漏洞原理
在该版本的配置中

<FilesMatch .php > S e t H a n d l e r a p p l i c a t i o n / x − h t t p d − p h p < / F i l e s M a t c h > 123 该 部 分 内 容 就 是 只 有 匹 配 上 面 的 正 则 表 达 式 就 可 以 进 行 绕 过 使 用 我 们 在 看 一 看 正 则 表 达 式 中 > SetHandler application/x-httpd-php </FilesMatch> 1 2 3 该部分内容就是只有匹配上面的正则表达式就可以进行绕过 使用我们在看一看正则表达式中 >SetHandlerapplication/xhttpdphp</FilesMatch>123使的意思

匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,请使用 $。

所以如果设置RegExp 对象的 Multiline 属性的条件下,$还会匹配到字符串结尾的换行符(也就是%0a)

实验
上传一个名为1.php的文件,被拦截:

在1.php后面插入一个\x0A(注意,不能是\x0D\x0A,只能是一个\x0A),不再拦截:

访问刚才上传的/1.php%0a,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析漏洞:

总结:
其实主要是$的漏洞
下面是自己出的一个题目

<?php //by Firebasky show_source(__FILE__); //error_reporting(0); include('flag.php'); $a=$_GET['cmd']; if(preg_match('/^php$/im', $a)){ if(preg_match('/^php$/i', $a)){ echo 'hacker'; } else{ echo $flag; } } else{ echo 'nonononono'; } ?>

参考
https://vulhub.org/#/environments/httpd/CVE-2017-15715/
https://www.leavesongs.com/PENETRATION/apache-cve-2017-15715-vulnerability.html

原文链接:https://blog.csdn.net/qq_46091464/article/details/108278486?utm_medium=distribute.pc_feed.none-task-blog-personrec_tag-16.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-personrec_tag-16.nonecase&request_id=5f497e14ad40e5707a41445c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值