SSI的介绍及语法


1. 介绍


SSI:Server Side Includes,服务器端包含。

SSI是前乳HTML页面中的指令,在页面被提供时,由服务器进行运算,以对现有html页面增加动态生成的内容,而无需通过CGI程序提供整个页面,或者使用其他动态技术。

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



2. 配置使用


2.1 启用SSI


  1. apache

    默认apache不开启SSI,SSI这种技术很少使用了。如果应用中没有用到SSI,关闭服务器对SSI的支持就可以。

  2. IIS

    IIS也可以开启SSI功能。

  3. Nginx

    在http段加入下面内容:

    ssi on;
    ssi_silent_errors off;
    ssi_types text/shtml;
    


2.2 SSI语法


SHTML文件:

在SHTML文件中使用SSI指令(#incldue)引用其他的HTML文件,此时服务器会将SHTML中包含的SSI指令解释,再传送给客户端。此时的HTML中就不再含有SSI指令了。

  1. <#echo>:显示服务器端环境变量
    1. 本文档名称:<!--#echo var="DOCUMENT_NAME"-->
    2. 现在时间:<!--#echo var="DATE_LOCAL"-->
    3. 显示IP地址:<! #echo var="REMOTE_ADDR"-->
  2. <#include>:将文本内容直接插入到文档中
    1. file包含文件:<!--#include file="文件名称"-->
    2. virtual包含文件:<!--#include virtual="文件名称”-->
    3. file包含文件可以再同一级目录或者其子目录中,但是不能在上一级目录中;virtual包含文件可以是web站点上的虚拟目录的完整路径。
  3. 显示web文档相关信息
    1. 文件最近更新日期:<!--#flastmod file="文件名称"-->
    2. 文件的长度:<!--#fsize file="文件名称"–--
  4. <#exec>:直接执行服务器上的各种程序
    1. 其他可执行程序:<!--#exec cmd="cat /etc/passd"-->
    2. CGI:<!--#exec cgi="/cgi-bin/access_log.cgi"-->
    3. 将某一个外部程序的输出插入到页面中,可以插入CGI程序或者是常规应用程序的输入,这取决于参数是cmd还是cgi。



3. SSI注入


SSI注入的条件:

  1. web服务器支持SSI。
  2. web应用程序未对相关SSI关键字做过滤。
  3. web应用程序在返回响应的HTML页面时,嵌入用户输入。

漏洞场景:

在很多业务中,用户输入的内容会展示在页面中。

比如:一个存在反射型XSS漏洞的页面,如果输入的payload不是xss代码,而是SSI的标签,同事服务器又开启了对SSI的支持的话,就会存在SSI漏洞。



  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值