day4下午-XXE漏洞

xxe漏洞

1.XXE漏洞基本介绍

XML外部实体注入(XML External Entity)简称XXE漏洞,XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。当允许引用外部实体时,通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。XXE漏洞触发的点往往是可以上传XML文件的位置,没有对上传的XML文件进行过滤,导致可上传恶意XML文件。

2.XML文档简单了解

跟HTML文档一样,XML文档的内容结构有一下几个部分构成:
·元素
·属性
·实体
.PCDATA 会被解析器解析的文本
.CDATA 不会被解析器解析的文本
在这里插入图片描述

3.DTD(文档类型定义)基础

DTD(文档类型定义)的作用是定义XML文档的合法构建模块。DTD可以在XML文档内声明,也可以外部引用。

1. DTD实体

DTD实体是用于定义引用普通文本或特殊字符的快捷方式的变量,可以内部声明或外部引用。
●实体又分为一般实体和参数实体
o—般实体的声明语法:<!ENTITY 实体名 "实体内容">引用实体的方式︰&实体名;
。参数实体只能在DTD中使用,参数实体的声明格式:<!ENTITY % 实体名 "实体内容">引用实体的方式∶%实体名;展示如下
在这里插入图片描述
image
image

2.支持的协议

image

4.漏洞利用

xxe练习文件地址:https://github.com/poemThesky/poemThesky.github.io/blob/a8f882ea7f4b056142d9eb63a3714d6f954a461a/%E8%AF%BE%E4%BB%B6%E7%9B%B8%E5%85%B3%E4%BE%8B%E9%A2%98/php_xxe%E7%BB%83%E4%B9%A0.zip

1.读取普通文件

image

这里是bp抓了一个登录的包,发现是xml格式,这里没有验证是否有xxe漏洞,我们直接使用对应的payload读取了文件,但是这里如果文件里是特殊字符的话就读取不成功了。

image

2.读取包含特殊字符文件

image
image

下面这里是演示。对了这里有个不知道为什么的玄学问题,如果不在&前面加数字的话,就是读取不出来文件的内容。我真的哭死。这里提醒一下一定要注意那个文件的路径,因为第三个演示部分使用的地址有点和这里不一样。

image
image

3.读取php文件

image

演示过程。这里注意一下我们读取出来的文件经过伪协议php://filter/read=convert.base64-encode/resoure=文件路径 加密的,要用base64解密一次才行。我这里直接在bp上解密的。

image
image
image

4.无回显的XXE漏洞利用

简单来说就是你直接在bp发送请求包,只能得到基本信息,body部分什么也没有。这里我们用到的是日志检测,简单来说利用日志去显示文件的内容,先提个醒,一定要注意是从谁发到谁去。谁去开启日志服务,还有就是注意格式问题qaq。
image

1)下面是案列,是在一台机器上开启服务同时又发包

构建payload
真实环境是需要云服务器的,在这里我就直接使用虚拟机完成,无回显需要查看服务器的访问日志,当存在访问日志了,那么就可以证明是支持外部实体的,若不存在日志,则证明不支持外部实体,或者被安全设备拦截。

1.在显示文件内容的机器上输入:python3 -m http.server 80

image

2.这里是测试能不能发送的payload

image

3.bp发包

image

4.查看是否收到包。说明可以发送。感觉也可以直接ping一下对应的ip地址。

image

5.这里就是发包显示对应的文件内容了。

image
image
image
image

2)这里是我自己做的演示。我的是本机发包,然后虚拟机kali开启日志。

这里有几个注意事项要说一说。一定要注意ip和端口,然后注意格式,我朋友好像就是ip多了个空格导致一直接收不到包,然后搞清楚是谁给谁发包,也就是dtd文件内容的ip端口,还有bp请求包中的ip也一定要对。然后就是还有一个注意事项,就是dtd文件内容里面读取的文件一定要存在,不存在的话也是不会有日志内容出现。
这里我是本机查询本机的文件内容,然后将结果发送到虚拟机查看。我有个想法是本机发包到虚拟机,然后虚拟机kali解析dtd文件,然后虚拟机kali根据dtd文件查询的路径然后将kali上的文件内容读取,然后再显示到kali开始的日志服务上面,但是好像失败了。我猜测有两种可能性,第一种是
kali解析不了dtd文件,第二种是应该通过服务器去弄。因为我下面的演示利用的是phpstudy搭建的服务器下面的文件去解析dtd文件,然后再发包到kali去查看。不确定是不是。好像是因为开启的路径有问题。如果在kali下解析dtd的话,要注意dtd文件放的位置。

image
image
image
image
image

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
泛微OA是一种常见的企业办公自动化系统,而XXE(XML外部实体注入)漏洞是指攻击者通过注入恶意的外部实体来读取或利用系统中的敏感数据。 泛微OA的XXE漏洞是由于系统对外部XML实体的处理不当所导致的。攻击者可以通过构造恶意的XML实体并将其发送给系统,然后利用系统对外部实体的解析不当来读取系统中的文件,包括敏感的配置文件、数据库信息。攻击者还可以通过XXE漏洞发起钓鱼攻击或者是向系统发送恶意的请求来进一步导致系统的安全漏洞。 为了防范泛微OA的XXE漏洞,建议以下几点: 1. 进行安全审计:对泛微OA系统进行定期的安全审计,通过检测系统中的漏洞和弱点,及时修复存在的XXE漏洞。 2. 模板限制:在处理外部XML实体时,应限制或阻止对外部实体的解析,避免可能的XXE攻击。可以通过设置合适的解析选项,限制对外部实体的访问权限。 3. 输入验证与过滤:对于用户输入的数据,应进行合理的验证和过滤,确保输入的内容符合预期格式,避免恶意的外部实体注入。 4. 更新补丁:定期保持泛微OA系统的更新与升级,及时安装官方发布的补丁和修复漏洞的版本。 5. 安全意识培训:加强企业员工的安全意识培训,提高他们对XXE漏洞及其他安全威胁的认识,避免因无意中点击恶意链接或下载恶意附件而导致漏洞的利用。 通过以上措施,可以有效地减少泛微OA中的XXE漏洞,提升系统的安全性。及早识别并修复漏洞,有助于保护企业的机密信息以及防止潜在的安全威胁发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值