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中,如其中一条

    (会执行给定的 shell 命令)

如果没有过滤吧

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

     (会显示给定的文件)

SSI命令语法解析

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

    本文档名称:

    

    现在时间:

    

    显示IP地址:

    

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

    

    

    

    

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

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

    文件最近更新日期:

    

    文件的长度:

    

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

    

    

    

    

⑤一次CTF中用到的指令

    

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

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

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

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

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

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

SSI指令基本格式:

注意:

1.

你可能感兴趣的:(SSI服务器注入)