Apache HTTPD 换行解析(CVE-2017-15715)

httpd是Apache超文本传输协议(HTTP)服务器的主程序。Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。httpd和apache关系,简单理解就是apache2以上版本改称为httpd。

Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

复现过程

环境启动后,我们通过虚拟机地址访问
1665656155369
1665656183334

抓包,上传一句话马,直接上传发现被拦截了

在php名称后面添加%0a,然后选中%0a右键选择Convert selection ---> URL ---> URL-decode,将%0aurl编码后再上传


浏览器访问刚刚上传的文件,后缀名要加上%0a

使用蚁剑连接成功

原理

参考:利用Apache解析漏洞(CVE-2017-15715)绕过文件上传限制getshell

在ubuntu下,Apache的配置文件在etc/apache2/apache2.conf,查看一下这个文件,发现包含了conf-enabled下的所有.conf配置文件

conf-enabled下都是conf-available中文件的链接,所以真正的配置文件在conf-available

该conf-available目录下的docker-php.conf配置不当造成未知后缀解析漏洞

$ 匹配输入字符串的结尾位置。这个解析漏洞的根本原因就是这个$。我们知道$在正则表达式中用来匹配字符串结尾位置。

$是可以匹配到字符串结尾的换行符,也就是说,如果我们此时有个文件后缀名为:.php\n,Apache是会将其作为php文件进行解析的。

修复方案

  • 修改正则
  • 升级版本
  • 重命名上传文件
  • 将上传文件与服务器分离

总结
这个漏洞利用的条件如下:

  • 获取文件名时不能用$_FILES['file']['name'],因为他会自动把换行去掉,这一点有点鸡肋
  • Apache版本为2.4.0到2.4.29
  • 服务器必须是linux系统,因为windows环境下不支持后缀名带有换行符\x0a
  • 总体上而言,只要取FILES[file][name],在以后的其他某些漏洞可以还有利用到的地方。
posted @   太簇十三  阅读(231)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示