码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • XXE漏洞复现实操


    文章目录

    • 一、漏洞原理
    • 二、验证payload
    • 三、没有回显时的验证
    • 四、漏洞特征
    • 五、读取文件
    • 六、Base64加密读取
    • 七、端口检测
    • 八、使用php检测端口
    • 九、dtd外部实体读取文件
    • 十、Xxe漏洞防御

    一、漏洞原理

    (1)XXE漏洞全称XML External Entity Injection,即xmI外部实体注入漏洞, XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害,XML(也是一种语言)被设计用来传输和存储数据
    (2)也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致漏洞
    实验环境:windows pikachu xxe漏洞

    二、验证payload

    
    DOCTYPE note [
        <!ENTITY hacker "test">
    ]>
    <name>&hacker;name>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    三、没有回显时的验证

    
    DOCTYPE ANY [
        
    ]>
    <x>&xxe;x>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    四、漏洞特征

    Accept里有application/xml的格式
    在这里插入图片描述

    五、读取文件

     DOCTYPE ANY [      ]> <x>&f;x>
    
    • 1

    在这里插入图片描述

    六、Base64加密读取

     DOCTYPE ANY [      ]> <x>&f;x>
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    或则读取linux的/etc/passwd

     DOCTYPE ANY [      ]> <x>&f;x>
    
    • 1

    七、端口检测

    ncat -lvp 4000(端口可自定义)
    使用以下语句尝试是否能够建立连接

    DOCTYPE ANY [
        
    ]><x>&xxe;x>r>
    
    • 1
    • 2
    • 3

    如果能够建立连接,那么服务器端的ncat会收到相应的请求信息。
    在这里插入图片描述

    八、使用php检测端口

    
    $xml=<<<EOF
    
    
    ]>
    &xxe;
    EOF;
    $data=simplexml_load_string($xml);
    print_r($data);
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    端口关闭的情况如下
    在这里插入图片描述

    开启时
    在这里插入图片描述

    九、dtd外部实体读取文件

    DOCTYPE note 
    [%d;]>
    <c>&eviltest;c>
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    十、Xxe漏洞防御

    1、使用开发语言提供的禁用外部实体的方法
    1.PHP:
    libxml_disable_entity_loader(true);
    2.JAVA:
    DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
    dbf.setExpandEntityReferences(false);
    3.Python:
    from lxml import etree
    xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

  • 相关阅读:
    JUC并发编程系列详解篇四(线程基础理论)
    vscode + conda+ ffmpeg + numpy 的安装方式
    《深度探索C++对象模型》阅读笔记 第六章 执行期语意学
    FreeRTOS学习笔记-任务
    在雷电模拟器9上安装magisk并安装LSPosed模块以及其Manager管理器(一)
    【java_wxid项目】【第十三章】【Elasticsearch集成】
    中国亚克力户外地板行业盈利动态与销售趋势预测报告2022-2028年
    Android12之H264、H265、H266视频编码标准总结(四十八)
    10 # 手写 every 方法
    SFI立昌在IP CAM网络摄相机的方案与应用
  • 原文地址:https://blog.csdn.net/wutiangui/article/details/133808211
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号