• 跟bWAPP学WEB安全(PHP代码)--SSL(Server-Side-Include)漏洞


    什么是Server-Side-Include漏洞


    服务端包含漏洞是指发送指令到服务器,服务器会将指令运行完,把运行结果包含在返回文件中发送给你。利用这种漏洞可以获取服务端的信息甚至执行命令,这样的指令是构造在HTML注释中发过去的。当然,因为包含SSI指令的文件要求特殊处理,所以必须为所有SSI文件赋予 SSI文件扩展名。默认扩展名是 .stm、.shtm和 .shtml。

    指令类型


    • 显示服务端变量<!--#echo var="PATH"-->
    • 将文本内容添加到文档<!--#include file="phpi.php"-->
    • 执行命令<!--#exec cmd="ping -c 4 172.16.204.1"-->
    • 还有其他的,类似<!--#config xx=xxx--><!--#flastmod #fsize-->等等

    burp扫描展示可以确认:


    代码分析原理和防御


    function xss($data)
    {
    
        switch($_COOKIE["security_level"])
        {
    
            case "0" :
    
                $data = no_check($data);
                break;
    
            case "1" :
    
                $data = xss_check_4($data);
                break;
    
            case "2" :
    
                $data = xss_check_3($data);
                break;
    
            default :
    
                $data = no_check($data);
                break;
    
        }
    
        return $data;
    
    }
    

    本质是代码在shtml里面就会被执行,那么没啥,来看防御嘛,从代码来看,应该还是过滤,我们来测试测试中级尝试绕过办法。

    绕过


    无防御时候的payload尝试【失败】:<!--#echo var="PATH"-->


    编码了<> 测试失败


    看来转义了",编码"测试<!--#echo var=%22PATH%22-->


    都编码测试一下也失败


    burp没有问题

    其实还是可以
    使用<!--#printenv-->可以获取信息

    高级


    水平太菜,无能为力

    防御


    • 1、配置禁止ssi和xssi
    //例如Nginx的配置文件中
    ssi on;//修改为ssi off;
    
    • 2、输入过滤严格,使用htmlspecialchars函数。
  • 相关阅读:
    JavaScript高级程序设计
    昨天听了林某的建议,开了自己的博客
    Unity是什么?
    依赖注入
    NHibernate 01 [简述]
    C#Delegate.Invoke、Delegate.BeginInvoke And Control.Invoke、Control.BeginInvoke
    C#调用http请求,HttpWebRequest添加http请求头信息
    JUnit入门笔记
    Spring:利用ApplicationContextAware装配Bean
    Java线程安全synchronize学习
  • 原文地址:https://www.cnblogs.com/KevinGeorge/p/10246103.html
Copyright © 2020-2023  润新知