服务端包含注入(SSI Injection)——古老但致命的命令执行
服务端包含注入(SSI Injection)——古老但致命的命令执行摘要:服务端包含(SSI,Server Side Include)是一种在HTML页面中嵌入动态内容的指令,如<!--#exec cmd="ls" -->。若Web服务器支持SSI且用户可上传包含SSI指令的文件或控制某些输入输出点,黑客可注入指令执行系统命令。本文介绍SSI注入的检测与利用,并给出禁用SSI、内容过滤建议。关键词:黑客网站攻击;SSI注入;渗透测试;命令执行;Web服务器安全一、引言SSI常见于Apache、Nginx及老式IIS。许多论坛或文件上传功能允许用户提供.shtml或.stm文件,如果服务器未正确过滤,攻击者上传包含<!--#exec cmd="id"-->的文件即可执行任意命令。SSI注入如今较少见,但仍有内部系统暴露此类漏洞。二、SSI注入原理2.1 指令示例html<!--#include virtual="/header.html" --><!--#echo var="REMOTE_ADDR" --><!--#exec cmd="ls" -->
2.2 注入场景
[*]文件上传:上传一个.shtml文件,内容为恶意SSI指令。
[*]用户可控输出:如果服务器将用户输入当作SSI指令处理(例如动态生成文件内容并启用SSI解析)。
三、渗透测试与防御黑客会尝试上传带有.shtml后缀的文件,或寻找参数输出未经转义的尖括号。防御方面:
[*]禁用SSI解析(默认多数现代服务器关闭)。
[*]对用户上传文件重命名,不保留.shtml等扩展名。
[*]使用XSS过滤方法移除<!--#标记。
四、总结SSI注入虽然古老,但一旦存在即是高危RCE。最佳防御是彻底关闭服务端包含功能。
页:
[1]