Web安全漏洞及代码审计(第2版):靶机XML外部实体注入漏洞与审计PPT教学课件.pptxVIP

  • 0
  • 0
  • 约3.26千字
  • 约 22页
  • 2026-01-22 发布于浙江
  • 举报

Web安全漏洞及代码审计(第2版):靶机XML外部实体注入漏洞与审计PPT教学课件.pptx

项目8

靶机XML外部实

体注入漏洞与审计

Web安全漏洞及代码审计(第2版)(微课版);

项目知识准备

漏洞介绍

XML外部实体注入

主要是应用程序在解析XML输入时,允许对外部恶意实体类进行解析所引发的安全问题,可以造成任意文件读取、命令执行、端口检测等攻击。;

项目知识准备

基础知识

1.XML文档

首先是XML声明,也可以将这个声明简单地写为?xml?,或者包含XML版本(如?xmlversion=

1.0?)甚至包含字符编码的形式(如针对Unicode的?xmlversion=1.0encoding=utf-

8?)。其次在文档类型定义(DocumentTypeDefinition,DTD)或模式(schema)中定义规则,这时就需要在XML文件中引用DTD(DTD可以在XML文档内声明,也可以从外部引用)或schema文件,定义XML文档的合法构建模块。这里需要强调DTD,它可以快速定义XML文档的合法构建模块,使用一系列合法的元素定义文档的结构。最后是一些文档元素,由于定义了文档根元素为English,以及子元素为A、

B、C、D,因此在文档元素中必须填写内容。示例代码如下:

!--文档元素--

English

AAAAAA/A

BBBBBB/B

CCCCCC/C?

DDDDDD/DEnglish?;

项目知识准备

基础知识

2.DTD

DTD可以被成行地声明于XML文档中(内部引用),也可以被当作一个外部引用。DTD文档中的关键字有DOCTYPE(DTD声明)、ENTITY(实体声明)、SYSTEM/PUBLIC(外部资源申请)。

参数实体的声明需要在实体名称前面加“%”,而一般实体的声明则不需要。引用参数实体时需要在实体名称前面添加“%”并以分号结束,而引用一般实体时则需要在实体名称前面添加“”并以分号结束。内部实体、外部实体、参数实体的声明语法如表8-1所示。

J;

01项目知识准备

基础知识

2.DTD

对于实体名称为xxe的外部实体,通过File协议读取/etc/passwd,在username中引入外部实体,示例代码如下:

!DOCTYPEa

→IENTITYxxeSYSTEM·file://etc/passwd?

user

→usernamexxe;username

→passwordpassword/password?

user;

01项目知识准备

审计思路

XML外部实体注入

漏洞往往出现在上传XML文档的位置,原因是程序对XML文档数据没有进行校验,因此需要重点关注处理XML文档的函数,如simplexml_load_string()、loadXML()、SimpleXMLElement()等。;

02任务1XML外部实体注入漏洞分析;

任务1XML外部实体注入漏洞分析

任务实施

1.simplexml_load_string()函数

以读取任意文件为例,读取C盘Windows文件夹下的win.ini文件,将下面的Payload进行URL编码后,即可读取文件,示例代码如下:;

任务1XML外部实体注入漏洞分析

任务实施

2.DOM解析器函数

内建的DOM解析器函数是PHP的核心组成部分,可以在PHP中处理XML文档。初始化XML解析器,加载

XML文档,并将它输出,测试代码如下。读取C盘Windows文件夹下的win.ini文件,测试结果如图8-2所示。

?php?

Sxml=file_get_contents(php://input);?

$dom=newDOMDocument();

$dom-loadXML(Sxml);?

var_dump($dom);;

任务1XML外部实体注入漏洞分析

任务实施;

任务2XML外部实

体注入漏洞代码审计;

03任务2XML外部实体注入漏洞代码审计

任务目标

能够进行XML外部实体注入漏洞的代码审计

警惕虚假投资理财的电信网络诈骗形式。

任务实施

1.环境搭建

郸人topd

本任务使用CLTPHP5.5.3,在部署好源代码后,在

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档