apache中间件漏洞总结

apache介绍

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。并且能支持基础的HTML、PHP、Perl、Python等语言。

未知后缀解析漏洞

过程:用户上传文件->apache匹配mime类型(/etc/mime.types)->php.conf正则匹配。

漏洞产生原因

开发者增加了Addhandler配置:Apache默认一个文件可以有多个以点分隔的后缀,当右边的后缀无法 识别(不在mime.types内),则继续向左识别,直到可识别后缀为止;

漏洞危害

该解析漏洞可以使得入侵者绕过服务端waf的检测,进而getshell。

漏洞复现

这里使用Apache和upload-labs第三关环境来进行试验
当直接上传php后缀文件的时候,提示不允许上传.asp,.aspx,.php,.jsp后缀文件!为白名单验证

1594801314879

之后上传一个phpinfo.php.aaa文件,成功上传并解析

1594801365402

在upload-labs的3-10关均可以使用该方法进行利用

漏洞修复

  • 在apache配置文件中,禁止.php.这样的文件执行,配置文件里面加入
1
2
3
4
<Files ".(php.|php3.)"> 
Order Allow,Deny
Deny from all
</Files>
  • 用伪静态能解决这个问题,重写类似.php.*这类文件,打开apache的httpd.conf找到LoadModule rewrite_module modules/mod_rewrite.so把#号去掉,重启apache,在网站根目录下建立.htaccess文件,代 码如下:
1
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule .(php.|php3.) /index.php RewriteRule .(pHp.|pHp3.) /index.php RewriteRule .(phP.|phP3.) /index.php RewriteRule .(Php.|Php3.) /index.php RewriteRule .(PHp.|PHp3.) /index.php RewriteRule .(PhP.|PhP3.) /index.php RewriteRule .(pHP.|pHP3.) /index.php RewriteRule .(PHP.|PHP3.) /index.php </IfModule>

HTTPD换行解析漏洞

CVE-2017-15715

漏洞产生原因

apache这个解析漏洞的根本原因就是这个 $ ,在设置了 RegExp 对象的 Multiline 属性的条件下, $ 还会匹配到字符串结尾的换行符。默认的apache配置即可利用,因为默认apache配置使用了 <FileMatch>:
在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略

漏洞危害

该解析漏洞可以使得入侵者绕过服务端waf的检测,进而getshell。

漏洞利用条件

1,Apache版本在2.4.0到2.4.29

2,获取文件名时不能使用 $_FILES[‘file’][‘name’] ,因为他会自动去掉换行。

漏洞复现

这个环境直接使用docker快速搭建
https://github.com/vulhub/vulhub/tree/master/httpd/CVE-2017-15715

1
2
3
4
5
6
cd vulhub-master/httpd/CVE-2017-15715
docker-compose build
docker-compose up -d

#进入容器
docker exec -it ee2df0163165 /bin/bash

访问8080端口即可

1594808887742

先上传一个phpinfo.php用burp抓包

1594809217516

添加一个+号进行占位,之后再hex中将2b改为0a,也就是将+改为换行

1594809306138

上传成功后访问phpinfo.php%0a发现成功解析PHP代码

1594809375557

*Apache目录遍历漏洞 *

漏洞产生

配置错误导致的目录遍历

漏洞危害

可以查看网页目录,下载数据库等重要文件

漏洞复现

直接访问靶机ip即可看到目录遍历漏洞

1594809889345

漏洞修复

  • apache配置文件httpd.conf找到Options Indexs FollowSymLinks 修改为:Options FollowSymLinks

  • 添加.htaccess文件

SSI远程命令执行漏洞

漏洞原理

当目标服务器开启了SSI与CGI支持,我们就可以上传shtml,利用<!--#exec cmd="id" -->语法执行命令。

使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为”服务器端嵌入”或者叫”服务器端包含”,是一种类似于ASP的基于服务器的网页制作技术。默认扩展名是 .stm、.shtm 和 .shtml。
SSI可以完成查看时间、文件修改时间、CGI程序执行结果、执行系统命令、连接数据库等操作,功能非常强大。

影响版本:Apache全版本(支持SSI与CGI)

影响说明:绕过服务器策略,上传webshell

环境说明:PHP7.1 、 Apache2.4.25

漏洞复现

依然使用vulhub搭建环境

1
2
3
4
5
6
cd vulhub-master/httpd/ssi-rce
docker-compose build
docker-compose up -d

#进入容器
docker exec -it ee2df0163165 /bin/bash

搭建成功后访问http://xxxxx:8080/upload.php即可看到一个文件上传页面

当正常上传一个php文件显示Unsupported filetype uploaded.
上传一个后缀为shtml的文件,其内容为:

<!–#exec cmd=”id” –>

能正常上传并且执行了id命令,存在远程命令执行漏洞
1594816187716

漏洞修复

1
2
3
1、可以关闭SSI服务。

2、过滤<、>、-、#、!等字符。
文章作者:CyzCc
最后更新:2020年12月07日 15:12:10
原始链接:https://cyzcc.vip/2020/07/23/apache%E4%B8%AD%E9%97%B4%E4%BB%B6/
版权声明:转载请注明出处!
您的支持就是我的动力!
-------------    本文结束  感谢您的阅读    -------------