中间件介绍

0x01.定义

Web 服务器:提供 Web 服务器的软件或主机,即 Web 服务器软件或者装有 Web 服务器软件的计算机。

Web 中间件:提供系统软件与应用软件之间连接的软件,Web 中间件是提供 web 应用软件和系统软件连接的软件的总称。

Web 容器:容器是中间件的一种,它给处于其中的应用程序组件提供从一个环境,使应用程序直接与容器中的环境变量进行交互而不必关注其他的系统问题。Web 容器用于给处于其中的应用程序组件提供一个环境。

0x02.常见中间件

2.1.Apache安全

2.1.1 apache配置错误

2.1.1.1 原理

AddHandler application/x-httpd-php .php

AddHandler 为相应的文件扩展名指定处理程序,上述的配置意味着将扩展名为 .php 的文件交给 x-httpd-php 程序处理

Apache 识别文件扩展名是从后往前的,如果遇到了无法识别的扩展名会接着往前识别,遇到第一个可以识别的扩展名作为该文件的扩展名

2.1.1.2 配置

修改conf文件

添加或修改AddHandler语句

创建.htaccess

在kali终端下,

1
/var/www/html# echo AddHandler application/x-httpd-php .php > .htaccess

2.1.1.3 漏洞利用

有多个后缀可通过的情况下,只要有一个文件含有 .php即可,那么可以利用这种 绕过上传白名单的解析漏洞

1
http://exmample.com/index.php.jpg

2.1.2 apache 换行解析漏洞

利用条件

漏洞编号:CVE-2017-15715

影响版本:Apache 2.4.10 - 2.4.29

漏洞利用:文件上传

漏洞名称:换行解析漏洞

原理

%0A表示换行, 0d是回车哈

访问1.php%0A文件->apache找到该文件后->匹配该文件的后缀为.php->使用apache调用解释器解析文件

ps:

因为正则时,匹配的是php$,以.php结尾

漏洞复现

1
2
3
4
5
6
7
8
9
<?php
if(isset($_FILES['file'])) {
$name = basename($_POST['name']);
$ext = pathinfo($name, PATHINFO_EXTENSION);
if(in_array($ext, ['php', 'php3', 'php4', 'php5', 'phtml', 'pht'])) {
exit('bad file');
}
move_uploaded_file($_FILES['file']['tmp_name'], './' . $name);
}

访问.. /1.php%0a,发现不拦截

2.2.Tomcat

Tomcat配置文件

Tomcat任意文件写入(CVE-2017-12615)

影响版本

Apache Tomcat 7.0.0 - 7.0.81

原理

配置文件/conf/web.xml中配置了可写,readonly=false,从而可以使用PUT方法上传远程命令执行代码jsp文件

(tomcat服务器配置默认情况下readonly值为true无法触发漏洞)

1
2
3
4
5
6
7
8
<servlet>
...
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
...
</servlet>

再构造一下payload(POST提交),向服务器上传包含任意文件上传的JSP文件

法一

使用/

斜杠在文件名中是非法的,所以会被去除(Linux和Windows中都适用)

PUT /shell.jsp/ HTTP/1.1

法二

使用空格%20(windows中适用)

Windows下不允许文件名以空格结尾,会被去除

PUT /shell.jsp%20 HTTP/1.1

法三

NTFS流(windows中使用)

PUT /x.jsp::$DATA HTTP/1.1

将文件上传上去后,访问该文件,配合代码的参数进行获取敏感信息

修复
  1. 配置readonly和VirtualDirContext值为True或注释参数,禁止使用PUT方法并重启tomcat
  2. 升级补丁

远程代码执行(CVE-2019-0232)

影响版本

Apache Tomcat 9.0.0.M1 to 9.0.17

Apache Tomcat 8.5.0 to 8.5.39

Apache Tomcat 7.0.0 to 7.0.93

利用条件

系统为windows

启用了CGI Servlet(默认为关闭)

启用了enableCmdLineArguments(Tomcat 9.0.*及官方未来发布版本默认为关闭)

原理

由于使用enableCmdLineArguments在Windows上运行时,远程执行代码漏洞(CVE-2019-0232)驻留在公共网关接口(CGI)Servlet中,java运行时环境(JRE)将命令行参数传递给Windows的方式存在缺陷导致

Tomcat配置错误

Tomcat弱口令

2.3.Nginx

Nginx配置错误

CRLF注入

目录穿越漏洞

Nginx越界读取缓存漏洞

Nginx文件名逻辑漏洞

Nginx解析漏洞

参考链接

Geekby

Nginx学习

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2023-2025 是羽泪云诶
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信