0x00漏洞描述
SSI是英文Server Side Include的缩写,翻译成中文就是服务器端包含的意思。从技术上讲,SSI 是HTML 文件中的命令或指针,可以通过插入注释来调用。 SSI 具有强大的功能,允许您使用简单的SSI 命令更新整个网站的内容、动态显示时间和日期以及运行shell 和CGI 脚本程序等复杂功能。对于资金短缺、时间紧迫、工作量大的网站开发者来说,SSI 可以成为完美的帮手。
服务器端包含提供了一种将动态内容添加到现有HTML 文档的方法。 Apache和IIS都可以配置为支持SSI,服务器在网页内容返回给用户之前执行网页内容中的SSI标记。在很多场景下,如果输入的有效负载是SSI标签而不是XSS代码,并且服务器打开了SSI支持,则用户输入的内容可能会显示在页面上。存在SSI 漏洞。
0x01检测条件
1. Web服务器已经支持SSI。
2. Web 应用程序在返回HTML 页面时嵌入用户输入。
3.参数值未输入清理。
0x02检测方法
黑盒测试。
通过信息收集技术,我们了解目标正在运行什么样的Web服务器,并通过.shtml文件扩展名来指示该网页是否支持,您可以通过检查网站内容来推断是否支持SSI。对于网站,该文件包含SSI 指令。如果使用.shtml文件,则表示该网站支持SSI命令。不过,shtml 后缀不是必需的,因此缺少.shtml 文件并不意味着目标网站不会受到SSI 注入的攻击。
下一步是确定是否可能发生SSI 注入攻击以及可以在何处注入恶意代码。搜索接受用户输入的所有页面,并确保您的应用程序正确验证提交的输入,相反,数据完全按照输入显示(错误消息、论坛帖子等),您需要确保存在。除了通常的用户指定数据之外,还考虑HTTP 请求标头和cookie 内容。
例子:
获取/HTTP/1.0
Referer:–#exec cmd=\’/bin/psax\’–
User-Agent:–#virtualinclude=\’/proc/version\’–
白盒测试。
1. 是否使用SSI命令。使用时,Web 服务器启动SSI 支持。这使得SSI 注入成为一个至少应该调查的潜在问题。
2. 处理用户输入、cookie 内容和HTTP 标头的位置。
3. 如何处理输入,使用什么过滤方法,应用程序中不允许使用哪些字符,以及考虑多少种编码方法。按照以下步骤使用grep 在源代码中查找正确的关键字,例如SSI 指令、CGI 环境变量、带有用户输入的变量任务和过滤器函数。
0x03案例演示
buuctf主题:[BJDCTF2020]EasySearch 1
更多信息请参见CSDN文章《分析渗透测试练习7(CTF Web)问题1》。
文章内容支持.shtml,并作为输入输出。在用户名文本框中输入恶意代码,因为有多种迹象表明网站容易受到SSI 注入。
!–#exec cmd=\’id\’ —
SSI 注入还可用于执行反弹shell。
0x04防御方法
1. 清除用户输入并禁用可能支持SSI 的模式。
2. 过滤( , # , – , \’ , \’ )等敏感字符。
以上#SSI注入漏洞相关内容摘自网络,仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92324.html