SSI服务器注入

什么是SSI

全程:server side includes injection 服务器端包含注入

SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针。SSI具有强大的功能,只要使用一条简单的SSI 命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI脚本程序等复杂的功能。它与CGI类似,不同之处在于SSI用于在加载当前页面之前或在页面可视化时执行某些操作。 为此,Web服务器在将页面提供给用户之前分析SSI

从技术角度上来说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针,即允许通过在HTML页面注入脚本或远程执行任意代码。

在很多场景中,用户输入的内容可以显示在页面中,比如一个存在反射XSS漏洞的页面,如果输入的payload不是xss代码而是ssi的标签,服务器又开启了ssi支持的话就会存在SSI漏洞

一种对于这类漏洞的挖掘方式即是查看.stm,.shtm和.shtml的页面是否存在,但是缺少这些类型的页面并不意味着不存在SSI攻击。

SSI漏洞产生的条件

用户存在可控输入,并且未过滤,并且还能回显嵌入到html中,如其中一条

    <!--#exec cmd=""...""-->(会执行给定的 shell 命令)

如果没有过滤吧

通常存在XSS的地方如果开启了SSI服务,那么就会造成服务器注入

     <!--#include file=""...""-->(会显示给定的文件)

SSI命令语法解析

①显示服务器端环境变量<#echo>

    本文档名称:

    <!--#echo var="DOCUMENT_NAME"-->

    现在时间:

    <!--#echo var="DATE_LOCAL"-->

    显示IP地址:

    <!--#echo var="REMOTE_ADDR"-->

②将文本内容直接插入到文档中<#include>

    <!--#include file="文件名称"-->

    <!--#include virtual="index.html" -->

    <!--#include virtual="文件名称"-->

    <!--#include virtual="/www/footer.html" -->

注:file包含文件可以在同一级目录或其子目录中,但不能在上一级目录中,virtual包含文件可以是Web站点上的虚拟目录的完整路径

③显示WEB文档相关信息<#flastmod><#fsize>(如文件制作日期/大小等)

    文件最近更新日期:

    <!--#flastmod file="文件名称"-->

    文件的长度:

    <!--#fsize file="文件名称"-->

④直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)

    <!--#exec cmd="文件名称"-->

    <!--#exec cmd="cat /etc/passwd"-->

    <!--#exec cgi="文件名称"-->

    <!--#exec cgi="/cgi-bin/access_log.cgi"-->

⑤一次CTF中用到的指令

    <!--%23include virtual="flag" -->

1、显示服务器端环境变量<#echo>

2、将文本内容直接插入到文档中<#include>

3、显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)

4、直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)

5、设置SSI信息显示格式<#config>(如文件制作日期/大小显示方式)

高级SSI可设置变量使用if条件语句。

SSI指令基本格式:

注意:

1.<!--与#号间无空格,只有SSI指令与参数间存在空格。  

2.上面的标点="",一个也不能少。

3.SSI指令是大小写敏感的,因此参数必须是小写才会起作用。

有的时候可使用`来绕过对"的过滤//有时候 有时候,

SSI命令:

https://www.owasp.org/index.php/Server-Side_Includes_%28SSI%29_Injection

https://www.cnblogs.com/wqhwe/p/5442612.html

CTF实战SSI

[EIS-2018ctf挑战赛](https://shuaizhupeiqi.github.io/2018/11/16/2018%20%E9%AB%98%E6%A0%A1%E7%BD%91%E7%BB%9C%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8%E7%AE%A1%E7%90%86%E8%BF%90%E7%BB%B4%E6%8C%91%E6%88%98%E8%B5%9B/)

SSI漏洞挖掘

SSI漏洞,一般存在xss的地方都值得一试。

并非所有文件中的SSI指令都会被解析,必须告诉Apache应该解析哪些文件。有两种方法使Apache解析带有特定后缀名的文件,比如:.shtml ,配置如下:

    AddType text/html .shtml

    AddOutputFilter INCLUDES .shtml

.stm,.shtm和.shtml的页面是否存在文件后缀名是用来表明网页文件是否包含SSI指令的,因此如果该网站使用了.shtml文件,那说明该网站支持SSI指令。然而.shtml后缀名并非是强制规定的,因此如果没有发现任何.shtml文件,并不意味着目标网站没有受到SSI注入攻击的可能。

SSI防护

默认apache不开启ssi,ssi这种技术已经比较少用了。如果应用没有使用到ssi,关闭服务器对ssi的支持即可。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容