网络安全之XXE漏洞

XXE漏洞

1.XML基础知识

eXtensible Markup Language可扩展标记语言

用途

配置文件

 

交换数据

 

XML内容

xml声明

 

XML格式要求

  • XML文档必须有根元素

  • XML文档必须有关闭标签

  • XML标签对大小写敏感

  • XML元素必须被正确的嵌套

  • XML属性必须被加引号

XML格式校验

DTD(Document Type Definition)文档类型定义

DTD内容之元素

 

元素 ELEMENT

DTD内容之实体

 

实体 ENTITY

实体ENTITY的使用

 

内部实体

 

外部实体

 

外部实体引用:协议

协议使用方法
filefile:///etc//passwd
phpphp://filter/read=convert.base64encode/resource=index.php
http页面不存在_百度搜索

不同语言支持的协议

Libxml2PHPJava.NET
file , http, ftpfile, http, ftp, php, compress.zlib, compress.bzip2, data, glob, pharfile, http, https, ftp, jar, netdoc, mailto, gopher*file, http, https,ftp

PHP扩展

 

完整的XML内容

 

XML声明部分

文档类型定义

文档元素

2.什么是XXE

 

XML外部实体注入(XML External Entity Injection)

XXE定义

如果Web应用的脚本代码没有限制XML引入外部实体,从而导致用户可以插入一个外部实体,并且其中的内容会被服务器端执行,插入的代码可能导致任意文件读取,系统命令执行,内网端口探测,攻击内网网站等危害。

3.XXE利用方式

<!DOCTYPE a[
<!ENTITY xxe SYSTEM "file:///C:/Windows/system.ini">
]>

盲打-http接口参数,写入文件

 

4.XXE防御

1.禁用外部实体

Java

DocumentBuilderFactory dbf
=DocumentBuilderFactory.newlnstance();
dbf.setExpandEntityReferences(false);
​

2.过滤用户提交的XML数据

'
“
"(two apostrophe)
""
<
>
]]>
]]>>
<!--/-->
/-->
-->
<!--
<!
<![CDATA[/]]>

3.WAF

以mod_security为例

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渗透者:'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值