apache
(1).未知拓展名解析漏洞
apache默认一个文件可以有多个以点分割的后缀,当最右边的后缀无法识别,则继续向左识别,直到识别到合法后缀才进行解析
如 aaa.php.ppp 则它会识别成aaa.php
使用module模式与php结合的所有版本apache存在未知拓展名解析漏洞
使用fastcg模式与php结合的说有病吧apache不存在此漏洞
利用此漏洞时必须保证拓展名中至少带有一个.php 不然将默认作为txt/html文档处理
漏洞复现
正则表达式中,$用来匹配字符串结尾位置。如果设置了RegExp对象的Multiline属性的条件下,还会匹
配到字符串结尾的换行符"\n"或"\r"。
重启apache服务
(2)addhandler 导致的解析漏洞
和前面差不多,如果后缀名都不认识会暴露源码
在httpd.conf 把注释去掉,后缀是存在.php .phtml都会解析成php文件
AddType application/x-httpd-php .php .phtml
防御:在httpd.conf 加代码
或者把配置文件修改回来就不会解析php
4.修复建议
解决方案一
在httpd.conf或httpd-vhosts.conf中加入以下语句,从而禁止文件名格式为.php.的访问权限:
<FilesMatch ".(php.|php3.|php4.|php5.)">
Order Deny,Allow
Deny from all
解决方案二
如果需要保留文件名,可以修改程序源代码,替换上传文件名中的“.”为“”:
$filename = str_replace('.', '', $filename);
(3)
目录遍历漏洞
1.原理
原理:当客户端访问到一个目录时,Apache服务器将会默认寻找一个index list中的文件,若文 件不存
在,则会列出当前目录下所有文件或返回403状态码,而列出目录下所有文件的行为称为目录遍历。
防御:在目录文件
httpd.conf 加号改成减号

apache httpd换行解析漏洞
1.漏洞描述
Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在
一个解析漏洞,在解析PHP时,1.php\x0a将被按照PHP后缀进行解析,导致绕过一些服务器的安全策
略。
可以看到这里获取文件名是需要单独post一个name的,因为如果通过 $_FILES['file']['name'] 获
取文件名的话,会把\x0a自动去除,所以 $_FILES['file']['name'] 这种方式获取文件名就不会造成
这个漏洞
在靶机ubuntu
docker ps -a ——存活的进程
sudo docker stop charming_kare
sudo docker rm charming_kare
sudo docker images
sudo docker run -d -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock -e
VUL_IP=0.0.0.0 7ea558c9f385
进入容器
sudo docker exec -it practical_snyder /bin/bash
账号密码:admin
本地新建上传表单html-把action地址改成靶机的地址
4.修复建议
1.升级到最新版本
2.或将上传的文件重命名为为时间戳+随机数+.jpg的格式并禁用上传文件目录执行

浙公网安备 33010602011771号