web渗透xxe漏洞

xxe
xml external entity 外部实体注入,用户输入恶意 xml 被后台解析了恶意语句
owasptop10-- 不安全的配置
xml 是什么??
XML 指可扩展标记语言( EXtensible Markup Language )。
XML 是一种很像 HTML 的标记语言。
XML 的设计宗旨是传输数据,而不是显示数据。
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
语法
<?xml version="1.0" encoding="UTF-8"?>
<a>
<b> 1 </b>
<c> 2 </c>
</a>
①需要根节点
②标签用一 一对应的形式呈现,即每个标签需闭合
xml 声明(可选)
xml 对大小写敏感
⑤便签尽量不已 xml 开头
⑥名称中不包含空格
⑦不能以特殊符号开头
作用
①数据传输
②存储数据
xml 的合法性
xml 语法正确仅是格式、型正确
通过 dtd 验证 xml 是否合法
DTD(DOCUMENT TYPE DEFINITION) 文档类型定义
内部 DTD
DTD 文件包含于 xml
例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user[<!ELEMENT user (username,password,age,class,school)>
<!ELEMENT username (#PCDATA)>
<!ELEMENT password (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT class (#PCDATA)>
<!ELEMENT school (#PCDATA)>]>
<user>
<username> zhang san </username>
<password> abc@123 </password>
<age> 1.9 </age>
<class> 家里蹲 </class>
<school> 1+1 </school>
</user>
!DOCTYPE 定义此文档为 user 类型文档
!ELEMENT 声明 user 中有那些元素,
!ELEMENT 声明元素类型,
PCDATA: 可被解析器解释的文本;
CDATA: 不会被解析器解释
外部 DTD
<!DOCTYPE root-element SYSTEM "filename">
例:
test.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user SYSTEM "test.dtd">
<user>
<username> zhang san </username>
<password> abc@123 </password>
<age> 1.9 </age>
<class> 家里蹲 </class>
<school> 1+1 </school>
</user>
test.dtd
<!ELEMENT user (username,password,age,class,school)>
<!ELEMENT username (#PCDATA)>
<!ELEMENT password (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT class (#PCDATA)>
<!ELEMENT school (#PCDATA)>
DTD 实体
定义文本内容的变量
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE student[
<!ELEMENT student (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ENTITY a "zhangsan">
<!ENTITY b "8">
]>
<student>
<name> &a; </name>
<age> &b; </age>
</student>
注: & 实体名 ;
a b 相当于变量但以实体的方式表示 , 实体如: < 等,但在 xml 中实体名是可以自由定义的
还可以不定义元素直接写实体
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE student[
<!ENTITY a "zhangsan">
]>
<student>
<name> &a; </name>
</student>
外部实体
<!DOCTYPE root-element[<!ENTITY entity-name SYSTEM " 资源位置 ">]>
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE student[
<!ENTITY a SYSTEM "file://D:\phpstudy_pro\WWW\xxe\test4.dtd">
]>
<student>
<name> &a; </name>
</student>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY[
<!ENTITY a SYSTEM "file://D:\phpstudy_pro\WWW\xxe\test4.dtd">
]>
<name> &a; </name>
在外部 dtd 的基础上新增一个实体的约束即可
参数实体
<!ENTITY % 实体名称 " 实体值 ">
<!ENTITY % 实体名称 SYSTEM "URI">
例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY[
<!ENTITY % a SYSTEM "http://127.0.0.1/test.dtd">
%a;
]>
<name> &s; </name>
test.dtd
<!ENTITY s SYSTEM "file://xxxx">
为例 pikachu
pikachu 设置了一个通过 php 解析 xml 文件内容的页面
传入 xml 如下,通过参数实体获取敏感信息

相关推荐

  1. Xxe漏洞

    2024-04-23 19:36:04       38 阅读
  2. <span style='color:red;'>XXE</span><span style='color:red;'>漏洞</span>

    XXE漏洞

    2024-04-23 19:36:04      36 阅读
  3. web渗透测试漏洞流程:目标资产测绘收集方法

    2024-04-23 19:36:04       38 阅读
  4. Web 安全之 VAPT (漏洞评估与渗透测试)详解

    2024-04-23 19:36:04       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 19:36:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 19:36:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 19:36:04       82 阅读
  4. Python语言-面向对象

    2024-04-23 19:36:04       91 阅读

热门阅读

  1. 02_c/c++开源库 json解析jsoncpp库

    2024-04-23 19:36:04       37 阅读
  2. Linux中安装MySQL数据库(Red Hat7.9安装MySQL5.7数据库)

    2024-04-23 19:36:04       31 阅读
  3. K8s: 在Pod中将configmap数据注入容器

    2024-04-23 19:36:04       34 阅读
  4. iOS 将字符串分割成单个字符| 字符串转成数组

    2024-04-23 19:36:04       28 阅读
  5. flink on k8s部署

    2024-04-23 19:36:04       34 阅读
  6. C# winform 阿特拉斯fp6000拧紧枪开发

    2024-04-23 19:36:04       37 阅读
  7. Go学习路线

    2024-04-23 19:36:04       30 阅读