如何快速找出哪里不符合xml格式_网站入侵:黑客必学知识点 “你所不知道的xxe攻击漏洞”...

news/2024/5/10 11:21:11/文章来源:https://blog.csdn.net/weixin_39817347/article/details/110922132

5f35cca8f85d4194f8195c1405356125.png

1、xxe攻击漏洞的简介

何为XXE漏洞?XXE是指xml外部实体攻击,Xxe漏洞全称xml external entity injection即xml外部实体注入漏洞,xxe漏洞发生在应用程序解析xml输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。那么问题来了,xml又是什么???

xml是一个可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输

喜欢更多知识内容可以关注微信公众号:安界网

2、xml基础

1)、 xml介绍以及用途

xml被设计用来传输和存储数据,它和html最大的区别在html是用来格式和显示数据,而xml是用来传输和存储数据,对比html它是一种层次和嵌套结构,而xml文档形成了一种树结构,它从(文档)”根部”开始(出发),一直扩展到”枝叶”。Xml允许创作者定义自己的标签和自己的文档结构,也就是说咱们可以自己去自定义树的结构以及树上面节点的名称,也就是对应的这个元素。

这个一个简单的一个xml,首先第一行它给出了xml的版本是1.0,和xml的编码是utf-8。

003c0e534ae41c089d13dcc7c8f67e05.png

接下来就是xml的根节点以及下属节点,<to>就是一个节点,里面包含了对应的值,就相当于树状结构当中是这样一个结构

71e1313aa8201494749659009821170f.png

以下是xml的树状结构图,在根部是note,note下有no节点、from节点、heading节点、body节点

2fbb78058fb895c507783b1d93d6c55f.png

2)xml语法规则

(1)、 所有的xml元素(树的节点)都必须有一个关闭标签,否则会出现错误无法解析xml文件

(2)、 Xml标签对大小写敏感,在html当中大小写是不敏感的

(3)、 Xml必须正确嵌套,不能说咱们一这里写个<p1>这样一个标签,在另外一方写个<p2>标签,然后用<p1>闭合该标签,最后又写个<p2>,那这个时候,它就是个错误的格式,咱们必须嵌套,而不能一个标签嵌套了另外一个标签

(4)、 Xml属性值必须加引号,比如说有个p标签,标签里面有个a属性,属性里面有对应的值,那么这个sa值就是需要加引号括起来,如果没有就会报错,然后用</p>标签闭合,<p a=’’ sa‘’></p>

(5)、 实体引用 比如说<p a=’’sa‘’></p>的这些属性中以及对应的值中会出现大于和小于等一些符号,这些符号在xml当中是有聚体含义的,咱们必须使用xml对应的实体进行对应的表示,比如说小于号对应的就是lt后对应的符号,大于号就是gt后对应的符号。

(6)、 在xml中,空格会被保留 比如说<p a=’’ sa‘’></p>中的p标签和p的结束标签,在中间如果有A(空格)B,那这个时候A和B之间的空格就会被保存。

ed1f765d27024d5b0e199dbd6d89a790.png

3)、 xml元素介绍

xml元素是指从(且包括)开始标签直到(且包括)结束标签的部分,每个元素又可以有对应的属性,xml属性必须加引号 ,首先的话note是一个根元素,下面是子元素,子元素里面就是一些嵌套的关系。那么这些元素的名称都可以改变。比如说note修改为m1的一些操作.

ef7cef15ba63055be880bbc95acf970c.png

4)、 Xml DTD介绍

刚才说了关于xml的语法规则以及对应的元素,这样一个灵活存储数据的文件格式,那我们势必要有一些约束规则来使得它符合这个规则,咱们用户定义的这个规则,才能把标明咱们这个数据是正确的,那这个时候我们就用xml DTD进行校验,

拥有正确的语法的xml被称为”形势良好”的xml。通过DTD验证的xml是”合法”的xml

1208711c2ef11e5554b4cdd42dd6cc51.png

74ec0cb0b096486d2db46d2e2390279f.png

5)DTD快速入门

(1)、DTD声明介绍

内部的DCOTYPE声明:<!DOCTYPE root-element [element-declaeations]>

<根元素 [元素声明]>,首先是note根元素,用了方括号括起来了

9256ae33677bd18ad33c9eefd1d78d88.png

这里是对应的子元素

3454136dee37a06b7ba7b55cf81ff706.png

用子元素的描述用的是element,首先描述的是根元素note,然后对应是子元素(用括号括起来的的就是子元素),可以看见to是一个子元素。括号内的就是对应的类型,所以我们称之为内部DTD

b52acd660121e5431ea29afbe86ca497.png

外部文档声明:假如DTD位于xml源文件的外部,那么它应通过下面的语法被封装在一个DOCTYPED定义中:<!DOCTYPE root-element SYSTEM “filename”>

7153b9d3a33d15bdcca513396b1adb59.png

这个是个xml的文件

3d40ecf28e360f7c8eabf460190a32a6.png

首先用了DOCTYPE note根元素,然后用SYSTEM用引用note.dtd

48f4f8018dd4f4ab599d2a7da5eda92d.png

而note.dtd是外部的dtd文件,这个dtd文件以下内容是描述对应的元素,结构首先是根元素note,然后对应的是子元素,接下来都是子元素对应的类型以及名称。都是用ELEMENT进行声明

035d0c6297350b8d7ca78692299f7ff2.png

(2)、DTD数据类型

PCDATAd的意思是被解析的字符数据(parsed character data) PCDATA是会被解析器解析的文本。这些文件将被解析器检查实体以及标记,可以看见这个图。PCDATA是会被解析器作为合法的内容进行解析。

b2296edd877d7b4278e817247150f096.png

CDATA的意思是字符数据(character data)

CDATA是不会解析器解析的文本,在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开,那么只作为一个普通的文本做处理

Pcdata是xml的解析器,可用于识别

Cdata无法进行识别的

(3)、DTD实体介绍

a02dce5242a120e9650dd95d1bd1753f.png

3、Xml注入产生原理

1)Xxe漏洞全称xml external entity injection即xml外部实体注入漏洞,xxe漏洞发生在应用程序解析xml输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。

Xxe/xml漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传的恶意xml文件。

2)、 测试代码介绍

首先要的是file_get_contents()来获取对应的数据流,获取的数据流是一个php://input这样一个可读的数据流,可以通过post的提交方式来将这个流输入对应的内容,通过file_get_contents()读取然后保存到$xml, 然后调用simplexml_load_string()加载$xml存储的字符串,保存到$data,然后用echo进行格式化输出。

b49493239e6ef9a677f67ed4c1a22384.png

3)Xxe漏洞利用-任意文件读取

首先这里是我们的一个靶机,我们用burp进行登录抓包

e3c1e94e588ab81e64c149bda858f5a6.png

可以看见我们的数据包是这样的,其中就有一些xml的一些格式,我们将数据包发送到repeater模块

1e5d7e4bfeb88838ba2e89ddd48567c3.png

这个是我们的读取本地文件的payload,利用file伪协议去读取c盘下的win.ini文件内容

1c4f1d72d989514ff76a6a211c050be9.png

那么我用这个payload读取了d盘下的1.txt文件,并且返回了文本中的内容

29a25a569e89a8d7b3c48d6192174a3e.png

9acd11f9113492c80c1bc51109144ee3.png

4)读取php文件

直接利用file协议读取php文件会出现错误,那么需要使用base64编码来进行读取

那我直接读取了本地的xxe.php内容,并且以base64编码的形式输出,那么我们就可以拿这个编码进行base64解码

2f67bd3b6cc09d5a5eb35af7845cdb00.png

解码出来的就是我们的xxe漏洞的代码

be65dfd69ad7e8e2a0a917c68d538227.png

另外也有不同语言支持不同的协议。

f3bdd22eb5c2190e22a9f7fd224539ad.png

那么xxe漏洞的介绍和操作就介绍到这里,喜欢更多知识内容可以关注微信公众号:安界网 或者加入交流群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_795737.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站经常间歇性访问不了_「干货」IT人员经常访问的国外技术交流网站汇总

搞技术的&#xff0c;如果想更高提升自身技能水平&#xff0c;英语这关是逃不了的。——某位不愿透露姓名的在线翻译loser技术人员经常会在各种技术交流社区游逛&#xff0c;大家互相学习、交流、分享、帮助。互联网拉近了地球人的距离&#xff0c;让全世界的技术人员可以聚集在…

搜索引擎提交工具_如何有效的提高网站在搜索引擎上的收录?

企业建站的目的是为了获取流量&#xff0c;搜索引擎作为网站流量最主要的来源&#xff0c;搜索引擎优化成为了网站最为重要的工作&#xff0c;收录越多的网站获取流量和排名的几率也就会越大&#xff0c;现在做优化就是要想尽各种办法提高网站的收录&#xff0c;随着搜索引擎的…

tensorboard无法访问此网站

元学习论文总结||小样本学习论文总结 2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017-2019 NIPS2017-2019 使用程序网址&#xff1a;http://K12XJM22CBKN6KF:6006 打开网页时&#xff1a; 一个办法&#xff1a;将网址改为&a…

如何解决网站可能存在webshell网页木马,阿里云网站木马后门文件提醒

早上刚上班就有新客户咨询我们Sinesafe安全公司反映说收到一条阿里云的短信过来&#xff0c;内容为&#xff1a;网站木马文件提醒018-06-20 09:20:49尊敬的***网&#xff1a;您的虚拟主机中有文件触发了安全防护报警规则&#xff0c;可能存在webshell网页木马&#xff0c;您可以…

HTTPS时代的到来是大势所趋!阿里云CDN如何助力企业网站进入HTTPS时代

2019独角兽企业重金招聘Python工程师标准>>> 摘要&#xff1a;在2015年&#xff0c;天猫和淘宝已经实现了全站HTTPS&#xff0c;并且在2015年底&#xff0c;阿里云CDN HTTPS产品化并且开始全面对外&#xff0c;并且为越来越多的客户提供HTTPS服务。无论是从阿里内部…

帝国CMS7.2 手机网站使用教程

下面为详细操作步骤&#xff1a;一、设置所有访问端统一的访问地址后台>系统>系统参数设置&#xff1a;网站地址&#xff1a;这个地址一定不要加上域名&#xff0c;比如设置为&#xff1a;/&#xff08;默认安装后也是没有加上域名&#xff0c;如果自行修改过&#xff0c…

python 爬取种子_Python爬虫框架Scrapy 学习笔记 2 ----- 爬取Mininova网站种子文件信息...

1. 任务描述目标网站截图&#xff1a;-------------------------------------可以看到种子文件的列表&#xff0c;这些链接的url可以用正则表达式表示为&#xff1a; /tor/\d详情页截图截图中的&#xff1a;资源名称, 资源大小&#xff0c;和资源描述就是我们要抓取的信息。2. …

基于django的视频点播网站开发-step4-首页功能

在本讲中&#xff0c;我们开始首页功能的开发&#xff0c;在开发过程中&#xff0c;大家将会学习到Django中的通用视图类、分页对象paginator以及foreignKey外键的使用。 效果演示 整体功能 大家可先通过 网站演示地址 浏览一下首页的效果。我们首页呢&#xff0c;比较简洁大方…

连接云服务器_Windows server 2012 云服务器建站教程 (1):远程连接桌面+IIS服务器安装...

服务器&#xff1a;Windows server 2012 阿里云服务器发布网站的过程中&#xff0c;实在是踩了太多的坑了&#xff0c;通过云服务器发布一个http://asp.net真是费劲儿&#xff0c;如果你要是需要访问cshtml格式的网站&#xff0c;会更加费劲儿一点。1.使用远程桌面连接云服务器…

大型网站技术架构(六)网站的伸缩性架构

2019独角兽企业重金招聘Python工程师标准>>> 网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能&#xff0c;通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。 1、网站架构的伸缩性设计 网站的…

linux samba启动连接不上,CentOS中Samba配置后始终连不上解决_Linux教程_Linux公社-Linux系统门户网站 正解...

按照网上的办法改了/etc/samba/smb.conf配置文件&#xff0c;结果在Win7里面就是连不上&#xff0c;后来发现是防火墙的问题。有两个命令必须要执行&#xff1a;1、将SELinux设置成disabled或者permissivesetenforce 02、关闭防火墙服务service iptables stop若SElinux啟用中&a…

php网站在哪儿添加文章_php添加文章时生成静态HTML文章的实现代码

PHP生成静态文章HTML,有批量的生成&#xff0c;但比较标准的应该是在添加文章时就生成HTML文章&#xff0c;编辑时再重新生成HTML文章&#xff0c;删除文章时同样也样删除多余出来的HTML文章&#xff0c;这时批量生成就显得有点力不从心了&#xff0c;下面就介绍一下PHP在添加文…

php多网址文章发布,如何设置发布到多个网站-批量发布文章到站群

软件自定义API接口发布&#xff0c;是针对所有网站类型的发布方法&#xff0c;是最灵活的一种发布模式&#xff0c;当你的网站没有软件上的那几个常用网站程序&#xff0c;就可以考虑这种方法了&#xff0c;此方法通用&#xff0c;但是也需要一定的编程知识。下面跟我一步步设置…

怎么测试本地网页在不同分辨率下电脑显示效果_好的响应式网站应该怎么做?...

响应式网站设计开发&#xff0c;也有叫做响应的Web设计&#xff0c;或着叫响应式网页设计&#xff0c;响应式网站设计开发的目的是为不同设备提供的多种适配的展现形式。一个网站&#xff0c;为了适应不同的用户的不同客户端的查看&#xff0c;通过响应式网站制作过程提供各种适…

jquery导入数据_【Python成长之路】从 零做网站开发 -- 基于Flask和JQuery,实现表格管理平台...

【写在前面】你要开发网站&#xff1f; 嗯。。会Flask吗&#xff1f; 什么东西&#xff0c;没听过。。。会JQuery吗&#xff1f; 是python的库吗 &#xff1f;那你会什么&#xff1f; 我会F12打开网站好吧&#xff0c;那我们来写个简单的表格管理平台。基于Flask框架和JQuery实…

web前端项目实例网站_推荐一个前端开源项目 CDN网站

前面学习到什么是CDN&#xff0c;全称是Content Delivery Network&#xff0c;即内容分发网络。CDN的通俗理解就是网站加速&#xff0c;CPU均衡负载。CDN的基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节&#xff0c;使内容传输的更快、更稳定&#…

win10打不开网络上的计算机,[pc玩家]Windows10中打不开网站的问题怎么解决?

当用户在浏览器中输入网站的域名时&#xff0c;此时将发送请求到DNS服务器以识别连接到该主机名的IP地址&#xff0c;只有正确解析了IP地址才会打开你想要访问的网站。但有时你会收到一个错误消息&#xff0c;告诉你DNS服务器没有响应。要解决这个问题&#xff0c;你可以尝试几…

有域名有服务器没有网站可以备案吗,只有域名没有服务器可以备案吗

只有域名没有服务器可以备案吗 内容精选换一换成功访问网站包含以下两个阶段&#xff0c;这两个阶段缺一不可&#xff0c;需要同时成功才能正常访问网站&#xff0c;如图1所示。阶段一&#xff1a;DNS根据访问请求中的域名解析出对应的IP地址。阶段二&#xff1a;访问网站服务器…

js将图片转换为base64_为网站添加图片 WebP 自动转换功能

最近这几天在网上闲逛时&#xff0c;发现了一个名叫 WebP_Server_Go 的新项目&#xff0c;可以无缝将网站上已有图片转换为 WebP 格式输出&#xff0c;同时不改变原始图片链接&#xff0c;看起来挺适合我个人博客的需求&#xff0c;使用也比较简单。网站使用 WebP 格式图片的好…

为什么linux访问不到文件夹,laravel部署到linux,将public文件夹指定为网站根目录,但是无法访问其子文件夹...

本机使用的是window环境,一切正常,但是部署到linux系统上(配的是nginx),在访问的时候,控制器和方法都能正常执行,页面也可以输出,但是输出的页面却缺少css文件,一查是500错误,已经将请求重定向到public文件夹下,我的目录结构是:public/web/css/css.css域名是:aaa.com直接访问aa…