Apache HTTPD 换行解析漏洞(CVE-2017-15715)学习笔记

本文档详细阐述了Apache 2.4.0至2.4.29版本的换行解析漏洞,通过PHP代码实例解析漏洞原理,演示如何利用换行绕过安全检查上传恶意文件,并提供了复现步骤。了解这个漏洞有助于提升Web应用的安全防护措施。
摘要由CSDN通过智能技术生成

Apache HTTPD 换行解析漏洞(CVE-2017-15715)学习笔记

漏洞范围:
Apache 2.4.0~2.4.29

源代码:

<?php
if(isset($_FILES['file'])) {                   //检查变量是否设置
    $name = basename($_POST['name']);          //basename:返回路径中文件名部分
    $ext = pathinfo($name,PATHINFO_EXTENSION); //pathinfo:以数组的性式返回文件路径信息
    									   //PATHINFO_EXTENSION:只返回 extension(文件名后缀)
    if(in_array($ext, ['php', 'php3', 'php4', 'php5', 'phtml', 'pht'])) {  //黑名单检查
        exit('bad file');
    }
    move_uploaded_file($_FILES['file']['tmp_name'], './' . $name); 
                                                //tmp_name:文件上传到服务器的临时文件夹
                                                //moce_uploaded_file:将文件上传到指定的目录
} else {
    
?>

漏洞成因:

正则表达式中,$用来屁匹配字符串的结尾位置。菜鸟写道

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

意味着我们在上传的文件后面加上换行符。正则匹配到的是 extension\n 与黑名单的内容(extension)不匹配。所以能够上传成功。但是在文件进行解析的时候,会被正确的解析。这就造成了绕过。

漏洞复现:

可以看到上传失败。
在这里插入图片描述
添加0a后上传成功。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值