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

1.漏洞原理

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

可以看到这里获取文件名是需要单独post一个name的,因为如果通过 $FILES'file' 获 取文件名的话,会把\x0a自动去除,所以 $FILES'file' 这种方式获取文件名就不会造成 这个漏洞.

2.影响版本范围

apache :2.4.0~2.4.29版本

3.漏洞复现

在这里我自己搭建了Vulfocus漏洞复现平台

3.1 前提:会使用docker的基本命令(哔站上的教程的挺多的)

3.2 拉取vulfocus镜像:docker pull vulfocus/vulfocus:latest

3.3 运行拉下来的镜像:docker run -d -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=0.0.0.0 8e55f85571c8

 

 

 3.4 访问页面

 

 

 3.5 开启靶场

 

 

 

3.6 设置burp代理,将浏览器的流量代理到burp上,进行拦截(在这里我使用的是SwitchyOmega火狐插件)

 

 

 

 

 

 

 自己写个表单,用来向服务器上传webshell

 

 

 3.7 访问该静态网页,这里上传如下webshell,对流量进行抓包

 

 

 <?php phpinfo();?>

 

 

 

3.8 后台源码进行分析

<?php if(isset($FILES['file'])){ #1.php php $name =basename($POST['name']); $ext = pathinfo($name,PATHINFO_EXTENSION); $array=array('php','php3','php4','php5','phtml','pht'); if(in_array($ext,$array)){ exit('bad file'); } move_uploaded_file($_FILES'file','./'.$name); } ?>

后台是通过黑名单方式过滤了php后缀的文件,根据最开始的知识,什么样的文件算是php文件呢?在 有定义,这句话的意思是以php结尾的文件都算php文件,在正则中表示匹配输入字符串的结尾位置。 如果设置了 RegExp对象的 Multiline属性,则也匹配 \n 或 \r 恰好,我们在文件末尾加了0x0a(n),所以被匹配成功了。

a.0x0d \r CR这三者代表是回车,是同一个东西,回车的作用只是移动光标至该行的起始位置

b.0x0a \n CL这三者代表换行,是同一个东西,换行至下一行行首起始位置;

3.9发送到repeater进行修改重发

 

 

 直接访问:http://192.168.4.157:31071/a.php%0a 上传上去的webshell执行成功

 

 ctrl+F 查找flag

 

 

 

4.修复的建议

1.升级到最新版本

2.或将上传的文件重命名为为时间戳+随机数+.jpg的格式并禁用上传文件目录执行

5.闲谈

2022年已经过去了,在2022年经历了很多事情,虽然过得不算如意,但都挺过来了,一路走来,从没放弃过对安全的追求,安全是我最痴迷的。那段记忆既让我留恋,又使我害怕,不要活在过去,大步向前,没有什么可以难倒我的,大学生涯也快结束了,有时真的感叹时间的飞逝啊,愿你我安好。拿出魄力去做自己热爱的事情,去追求自己的安全,好好安排好2023的计划,2023静心让自己的安全技术再突破,为以后的发展做好准备。时刻准备着,网安人,你绝对不平凡,相信自己,加油!

 

 

 

 

 

 

 

 

 



 

posted @ 2023-01-04 00:27  kalibb  阅读(563)  评论(0编辑  收藏  举报