Apache HTTPD 换行解析漏洞

漏洞介绍:

Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。

影响版本:Apache 2.4.0~2.4.29 存在一个解析漏洞;在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

漏洞产生分析:

我们查看相关配置:读取配置文件,前三行的意思是把以 .php 结尾的文件当成 PHP 文件执行。问题就在它使用的是 $ 符号匹配的,我们都知道这个符号在正则表达式中的意思是匹配字符串的末尾,是会匹配换行符的,那么漏洞就这样产生了。

 进入容器里,打开index.php,发现如果文件后缀名为 php、php3、php4、php5、phptml、pht都会返回为:bad file ;也就是说,过滤掉了那些后缀名,通过上图发现;我们可以通过换行符拉进行绕过。

docker   exec -it c6bc05f11c7d /bin/bash

 漏洞复现:

1、我们正常上传文件1.php;发现出现bad  file;那就是说将我们的php文件给过滤掉了

2、打开我们的bp工具;上传文件抓包并在文件名后面增加一个 0a 也就是换行符;

访问成功,不再是bad file;我们修改后不会被过滤;

 打开我们的浏览器,加入1.php%0a路径

 漏洞复现成功!

这个漏洞还需要其他条件:
1、如果获取文件名的是 $_FILES['file']['name'] ,而不是 $_POST['name'],这个漏洞就不会产生,因为前者会自动去掉换行。
2、服务器要是 linux,因为 windows 不支持带有换行符后缀的文件。

总结:对于程序而言,后缀名为 php%0a ;而不是php了,就不会拦截了;但对于mod_php而言,就会舍弃该换行符,因此会被过滤;该漏洞危害性不是很大,通过升级版本便可修复。

相关文章

可以认为OpenFeign是Feign的增强版,不同的是OpenFeign支持S...
为进一步规范小程序交易生态、提升用户购物体验、满足用户在...
云原生之使用Docker部署Dashdot服务器仪表盘
本文主要描述TensorFlow之回归模型的基本原理
1.漏洞描述Apache Druid 是一个集时间序列数据库、数据仓库和...
内部类(当作类中的一个普通成员变量,只不过此成员变量是cl...