php5.2.17解析漏洞,apache 解析漏洞(CVE-2017-15715)

本文详细分析了Apache在PHP5.2.17版本中的一个解析漏洞,该漏洞源于正则表达式中'$'符号的特殊行为。在多行模式下,'$'能够匹配字符串结尾的换行符,导致以特定后缀和换行符结尾的文件被误解析为PHP。在Linux环境下,通过构造带有换行符的文件名,可以绕过文件上传的黑名单限制。而在Windows环境中,虽然也能绕过黑名单,但由于文件系统限制,文件创建会失败,产生警告。
摘要由CSDN通过智能技术生成

在p牛博客最近更新的文章,传送门,感觉很有意思,自己在自己本地测试了一下

0x01 正则表达式中的 ‘$’

apache这次解析漏洞的根本原因就是这个 $,正则表达式中,我们都知道$用来匹配字符串结尾位置,我们来看看菜鸟教程中对正则表达符$的解释:

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

那么就明白了,在设置了 RegExp 对象的 Multiline 属性的条件下,$还会匹配到字符串结尾的换行符

0x02 Linux环境

这里本地是debian系的kali linux,apache配置文件路径在/etc/apache2/下,apache2.conf是apache核心配置文件,由于我本地php作为apache的mod方式运行的,所以需要在mods-enabled目录下找到关于apache-php模块的配置:

c36f44dafe4cd7878b294575ae6ce583.png

可以看见php7.0.conf是mods-available/php7.0.conf的软链接,配置如下:

SetHandler application/x-httpd-php

SetHandler application/x-httpd-php-source

# Deny access to raw php sources by defau

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值