Server-Side Includes (SSI) Injection

什么是SSI和SSI注入

SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针。SSI具有强大的功能,只要使用一条简单的SSI 命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI脚本程序等复杂的功能。SSI 可以称得上是那些资金短缺、时间紧张、工作量大的网站开发人员的最佳帮手。本文将主要结合Apache服务器介绍SSI的使用方法。

ps:(Server-side Includes) 服务器端包含提供了一种对现有HTML文档增加动态内容的方法。apache和iis都可以通过配置支持SSI,在网页内容被返回给用户之前,服务器会执行网页内容中的SSI标签。在很多场景中,用户输入的内容可以显示在页面中,比如一个存在反射XSS漏洞的页面,如果输入的payload不是xss代码而是ssi的标签,服务器又开启了ssi支持的话就会存在SSI漏洞

输入表单,lookup之后

核心代码

 1 <div id="main">
2
3 <h1>Server-Side Includes (SSI) Injection</h1>
4
5 <p>What is your IP address? Lookup your IP address... (<a href="http://sourceforge.net/projects/bwapp/files/bee-box/" target="_blank">bee-box</a> only)</p>
6
7 <form action="<?php echo($_SERVER["SCRIPT_NAME"]);?>" method="POST">
8
9 <p><label for="firstname">First name:</label><br /> //firstname表单
10 <input type="text" id="firstname" name="firstname"></p>
11
12 <p><label for="lastname">Last name:</label><br /> //lastname表单
13 <input type="text" id="lastname" name="lastname"></p>
14
15 <button type="submit" name="form" value="submit">Lookup</button>
16
17 </form>
18
19 <br />
20 <?php
21
22 if($field_empty == 1) //这里的PHP只是判断是否有输入
23 {
24
25 echo "<font color=\"red\">Please enter both fields...</font>";
26
27 }
28
29 else
30 {
31
32 echo "";
33
34 }
35
36 ?>
37
38 </div>

防护代码

 1 $field_empty = 0;
2
3 function xss($data)
4 {
5
6 switch($_COOKIE["security_level"])
7 {
8
9 case "0" :
10
11 $data = no_check($data);
12 break;
13
14 case "1" :
15
16 $data = xss_check_4($data);
17 break;
18
19 case "2" :
20
21 $data = xss_check_3($data);
22 break;
23
24 default :
25
26 $data = no_check($data);
27 break;
28
29 }
30
31 return $data;
32
33 }
34
35 if(isset($_POST["form"]))
36 {
37
38 $firstname = ucwords(xss($_POST["firstname"])); //ucwords()首字母大写
39 $lastname = ucwords(xss($_POST["lastname"]));
40
41 if($firstname == "" or $lastname == "")
42 {
43
44 $field_empty = 1;
45
46 }
47
48 else
49 {
50
51 $line = '<p>Hello ' . $firstname . ' ' . $lastname . ',</p><p>Your IP address is:' . '</p><h1><!--#echo var="REMOTE_ADDR" --></h1>';
52
53 // Writes a new line to the file
54 $fp = fopen("ssii.shtml", "w");
55 fputs($fp, $line, 200);
56 fclose($fp);
57
58 header("Location: ssii.shtml");
59
60 exit;
61
62 }
63
64 }
65
66 ?>

1.low

low级别,没有防护

能xss

还能构造这种payload

<!--@echo var ="DOCUMEN_NAME"-->

还能构造成exec

2.medium

function xss_check_4($data)
{ // addslashes - returns a string with backslashes before characters that need to be quoted in database queries etc.
// These characters are single quote ('), double quote ("), backslash (\) and NUL (the NULL byte).
// Do NOT use this for XSS or HTML validations!!! return addslashes($data); }
addslashes()在符号前加反斜线

3.high

 1 function xss_check_3($data, $encoding = "UTF-8")
2 {
3
4 // htmlspecialchars - converts special characters to HTML entities
5 // '&' (ampersand) becomes '&amp;'
6 // '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set
7 // "'" (single quote) becomes ''' (or &apos;) only when ENT_QUOTES is set
8 // '<' (less than) becomes '&lt;'
9 // '>' (greater than) becomes '&gt;'
10
11 return htmlspecialchars($data, ENT_QUOTES, $encoding);
12
13 }

将预定义的字符装换为html实体字符

bWAPP----Server-Side Includes (SSI) Injection的更多相关文章

  1. ssi(Server Side Includes)介绍

    Server Side Includes (SSI) is a simple interpreted server-side scripting language used almost exclus ...

  2. Atitit Server Side Include  ssi服务端包含规范 csi  esi

    Atitit Server Side Include  ssi服务端包含规范 csi  esi 一.CSI (Client Side Includes)  1 1.1. 客户端包含1 1.2. Ang ...

  3. Windows Azure 网站 (WAWS) 中的服务器端包含 (SSI)

     编辑人员注释:本文章由 Windows Azure 网站团队的项目经理Erez Benari 撰写. Windows Azure 网站客户普遍关心的一个问题是关于我们对服务器端包含(Server ...

  4. 动态内容的缓存技术:CSI vs SSI vs ESI

    CDN 中动态内容是不太好解决的,通常需要很麻烦的技术和方法来实现这些功能,比如我设计过一种动态缓存的方法,基于 session 栏接,然后根据热点来做动态缓存时间的控制.目前开放的实现 Cache ...

  5. WEB APPLICATION PENETRATION TESTING NOTES

    此文转载 XXE VALID USE CASE This is a nonmalicious example of how external entities are used: <?xml v ...

  6. 缓存Cache

    转载自  博客futan 这篇文章将全面介绍有关 缓存 ( 互动百科 | 维基百科 )cache以及利用PHP写缓存caching的技术. 什么是缓存Cache? 为什么人们要使用它? 缓存 Cach ...

  7. Caching Tutorial

    for Web Authors and Webmasters This is an informational document. Although technical in nature, it a ...

  8. 115 Java Interview Questions and Answers – The ULTIMATE List--reference

    In this tutorial we will discuss about different types of questions that can be used in a Java inter ...

  9. Nginx - Rewrite Module

    Initially, the purpose of this module (as the name suggests) is to perform URL rewriting. This mecha ...

随机推荐

  1. 第六章 IP基本原理

    一.引入 1.IP是网络层协议,也是当今应用最广泛的网络协议之一 2.IP协议规定了数据的封装方式,网络节点的标识方法,用于网络上数据的端到端的传递. 二.IP协议概述 1.IP及相关协议 2.IP的 ...

  2. sql左连接查询+右表带有条件的实现

    select * from A表 a left join B表 b on a.id=b.a_id and b.字段='/*条件*/' ; 可查出左表所有数据 select * from A表 a le ...

  3. 浅谈ES6——ES6中let、const、var三者的区别

    在了解let.const.var的区别之前,先了解一些什么是es6 Es6 全称ECMAscript 是JavaScript语言的一个标准,其实Es6本质就是JavaScript的一个版本,为什么叫E ...

  4. linux 手动配置ip地址方法

    手工配置静态的IP地址 也就是手工配置IP地址.子网掩码.网关和DNS. 设置方法如下: vi /etc/sysconfig/network-scripts/ifcfg-eth0 编辑本地网卡的配置文 ...

  5. js中!!的运用

    最近在看vue源码. 里面使用Object.defineProperty()中!!吸引眼球 1 export function def (obj: Object, key: string, val: ...

  6. ams1117资料汇总

    AMS1117系列稳压器有可调版与多种固定电压版,设计用于提供1A输出电流且工作压差可低至1V.在最大输出电流时,AMS1117器件的最小压差保证不超过1.3V,并随负载电流的减小而逐渐降低. AMS ...

  7. VMware Workstation Pro 虚拟机安装

    1.简介 虚拟机指通过软件莫比的具体有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. 我们可以通过虚拟机软件,可以在一台物理计算机模拟出一台或多台虚拟的计算机,这些虚拟的计算机完全就像 ...

  8. Spring Cloud 学习笔记 (一)-- Eureka 服务器

    开局一张图,截取了本人学习资料中的一张图,很好地展示了Eureka的架构. Eureka服务器 管理服务的作用.细分为服务注册,服务发现. 所有的客户端在Eureka服务器上注册服务,再从Eureka ...

  9. Kubernetes 配置私有镜像仓库时,没有权限访问的问题

    使用 K8S 部署服务时,如果指定的镜像地址是内部镜像仓库,那么在下载镜像的时候可能会报权限错误.这是由于在 K8S 中部署服务时,K8S 需要到 Harbor 中进行一次验证,这个验证与节点中使用 ...

  10. 在PLC中开关量采集模块的作用

    PLC系统作为工业控制的基础设备在如今的现代化工厂应用中已经非常的广泛.许多工厂应用中,都需要对现场采集来的脉冲信号进行计数统计.如果是使用专用脉冲计数模块的话,价格会非常的昂贵,在很多采集低速脉冲信 ...