网络安全零基础入门(第九章-4)XXE-实体注入

  • 每日一句:仅做脚本小子是不行的,必须具有一定的代码能力(能看懂代码就行)
  • 本篇内容:什么是XXE
         XML结构
         XXE原理
         实战注意

一、什么是XXE

1.本质
    简单的说,就是XML外部实体注入攻击
       
    分解一下
      注入:将用户输入的内容当作代码执行
      sql注入:将用户输入的内容当作sql代码执行
      
    XML
      一种类似HTML的语言
      主要是存储传输数据的
      没有预定义标签
      
    实体:简单的理解为变量,可以存储一些东西
    
    定义:XXE,就是XML引用的数据当作代码被执行,即XML外部实体注入攻击

二、XML结构

1.结构:
    第一部分是声明,主要定义XML使用版本和使用编码
    
    第二部分是DTD部分,主要是约束作用,简单的说,给内容部分定规矩
      DTD约束的三种形式即:
        内部DTD:<!DOCTYPE 根节点 [DTD的代码]>
        外部DTD:<!DOCTYPE 根节点 "DTD的地址">
        网络DTD:<!DOCTYPE 根节点 PUBLIC "DTD的名称" "DTD的地址">
        
    第三部分是内容
    
2.举例:

		 //外部DTD:
			<?xml version="1.0" encoding="UTF-8"?>
			<!DOCTYPE书架  SYSTEM "book.dtd">
			<书架>
					<书>
							<书名>葵花宝典</书名>
							<作者>东方不败</作者>
							<售价>88.00元</售价>
					</书>
			</书架>
			
		 //内部DTD:
			<?xml version="1.0" encoding="UTF-8"?>					
			<!DOCTYPE 书架 [
					<!ELEMENT 书架 (书+)>
					<!ELEMENT 书 (书名,作者,售价)>
					<!ELEMENT 书名 (#PCDATA)>
					<!ELEMENT 作者 (#PCDATA)>
					<!ELEMENT 售价 (#PCDATA)>
			]>
			<书架>
					<书>
							<书名>葵花宝典</书名>
							<作者>东方不败</作者>
							<售价>88.00元</售价>
					</书>
					。。。
			</书架>

三、XXE原理

1.工作过程原理
    DTD部分去读取敏感的信息
    将读取到的信息赋值到实体当中   //实体名字随便起
    XML部分使用的过程中,将实体内容输出
    
2.如何检测xxe
  可以在http头的content-type中查看,也可以根据url一些常见的关键字进行判断测试,例如wsdl(web服务描述语言).或者一些常见的采用xml的java服务配置文件(spring,struts2).不过现实中存在的大多数xxe漏洞都是blind,即不可见的,必须采用带外通道进行返回信息的记录,这里简单来说就是攻击者必须具有一台具有公网ip的主机。
    
3.补充
    XML本身没有危害,他就是一个存储数据的;但是在一些动态语言脚本里边,
    例如:php中,它可以利用simplexml_load_string函数,将XML转化为对象
    
    注意:Java中什么是类?什么是对象?
       ~类就是具备某些共同特征的实体的集合
       ~对象就是一个真实世界中的物体
       
    举例:
       “人”就是一个类,他有吃饭、睡觉的属性,
       而张三这个人,就是“人”这个类的对象
       
4.不足及解决
    很多时候后端语言解析了XML后其实并不会给你输出,
    难道这样子我们就不能进行XXE了?
    
    办法:
      我们可以使用一个类型接收平台一样的接收器。
      XML读取数据然后发送到接受的平台,然后接受平台存储,
      我们再去接受平台查看就可以了。
      
      很类似反弹注入
    
    步骤:
      公网上建一个web环境 [1.xml 2.php 3.txt]
      1.xml 负责 读取我们想要的内容
      2.php 负责收集1.xml的传参,并将参数内容保存到3.txt中
      3.txt 保存传参数据,方便我们查看

四、实战注意

1.
  黑盒比较难挖掘
  白盒审计较容易
  平时挖掘src时,比较少
  但是,扫描器漏扫一些网站较为容易扫出
  
2.危害
    ~读取任意文件
    ~执行系统命令
    ~探测内网端口
    ~攻击内网网站
    ~导致DDOS攻击
    
3.防御
    ~使用开发语言提供的禁用外部实体的方法
      如:PHP:
          libxml_disable_loader(ture);
          
    其他语言:
    https://owasp.org/www-project-cheat-           sheets/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html
  
    ~过滤用户提交的XML数据
    关键词:SYSTEM和PUBLIC

五、总结

  • 明白XXE原理和防御方法
  • 多多实战
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值