解析XSLT服务器端注入攻击 (解析xsd文件,生成规则)

教程大全 2025-07-09 04:25:40 浏览

写在前面的话

可扩展样式表转换语言(XSLT)漏洞可以给受影响的应用程序带来严重的安全隐患,一般来说,这种漏洞将允许攻击者在目标设备上实现远程代码执行。目前已公开的XSLT远程代码执行漏洞可利用样本有CVE-2012-5357(影响.Net Ektron CMS)、CVE-2012-1592(影响Apache Struts 2.0)和CVE-2005-3757(影响Google搜索工具)。

从上面这几个漏洞样本中我们可以看到,XSLT漏洞已经存在已久了,虽然它不像XML注入、SQL注入或XSS漏洞一样常见,但是我们经常能够在安全审计的过程中发现这种漏洞。不过,目前还没有多少人真正了解针对这种漏洞的利用技术。

在这篇文章中,我们将跟大家分享一些针对XSLT的攻击案例,并让大家了解到这项技术的安全缺陷。简而言之,这种类型的漏洞将允许攻击者实现远程代码执行、从远程系统中窃取数据、执行网络扫描、访问目标用户内部网络资源等恶意活动

除此之外,我们还提供了一个包含了相关XSLT漏洞的简单应用,并在文章结尾给出了针对此漏洞的缓解方案。

XSLT是什么?

XSL(可扩展样式表语言)是一种用于转换XML文档的语言,XSLT表示的就是XSL转换,而XSL转换指的就是XML文档本身。转换后得到的一般都是不同的XML文档或其他类型文档,例如HTML文档、CSV文件以及明文文本文件等等。

一般来说,应用程序或模板引擎在处理不同文件类型时需要使用XSLT来进行数据转换。很多企业级应用比较喜欢使用XSLT,比如说,多用户发票应用程序可以使用XSLT来允许客户自定义它们的发票,客户可以根据自己的需求来修改发票信息以及格式。

其他常见应用:

在介绍攻击技术之前,我们先来看一看数据转换的实例。下面这个XML文件包含有多个水果名称(fruits)以及相关描述:

接下来,我们可以使用下面这种XSL转换技术来将XML文档转换为明文文本文件:

转换之后的明文文本文件内容如下:

利用XSLT 服务器 端注入漏洞

在这一部分,我们将跟大家介绍如何发现并利用应用程序中的XSLT漏洞。下面的样本使用了微软的System.Xml XSLT实现,不过类似的技术也应用到了很多类似Libxslt、Saxon和Xalan等常见代码库上。

寻找漏洞切入点

首先我们需要识别出应用程序包含漏洞的部分,一般来说这种漏洞会存在于应用程序允许上传任意XSLT文件的地方。除此之外,如果应用程序存在这种漏洞的话,它很可能会使用不受信任的用户输入来动态生成XSL转换后的XML文档。

比如说,应用程序可以生成下列XSLT文档,而字符串“Your Company Name Here”来自于不受信任的用户输入。

为了确认应用程序是否存在这个漏洞,我们可以向其注入一些类似双引号、单引号以及破折号等特殊字符,因为这类字符可以让XML文档中的语句失效。如果服务器返回了错误,那么这个应用就很有可能存在漏洞。需要注意的是,这种方法同样适用于XML注入漏洞。

为了方便演示,我们假设下面给出的样本允许我们提交任意XSLT文档。

system-property()函数

不同的代码库所实现的XSLT功能也不同,代码库A实现了的功能代码库B不一定会实现,而且就算实现的是相同的功能,不同代码库的实现方式也不同。一般来说,旧版本的代码库默认会开启很多危险的功能,而新版本代码库的很多功能往往需要开发人员去手动开启。

我们可以使用system-property()函数来查看代码库的开发者名称,该功能符合XSLT v1.0标准,所有的代码库都实现了这种功能。

有效参数:

下列转换可以用来确定代码库的开发者(vendor):

由于我们的测试目标使用的是Microsoft .Net System.xml实现,因此返回的结果为“Microsoft”:

XXE与数据提取

除了常见的XML攻击之外,XXE攻击同样可以影响XSLT。在下面的样本中,我们使用一个外部实体读取出了“C:\secretfruit.txt”文件的内容:

ENTITY元素将文件内容存储在了“ext_file”引用中,随后我们可以用“&ext_file;”语句将内容存储在了主文档中。输出数据则包含了文件中的秘密内容(“Golden Apple”):

这项技术可以用来远程获取存储在本地Web服务器中的文件内容,这些文件可以是包含了凭证数据的配置文件或者是包含了敏感信息的文件等等。除此之外,攻击者还可以通过UNC (\\servername\share\file)路径或者URL (来获取目标内部网络系统中托管的文件。

Import和Include

import和include标签可以用来合并多个XSLT文档,如果我们只能在XSLT文档中间注入内容的话,我们也许就不能直接使用XML外部实体(XXE)攻击或脚本来进行攻击了,因为这些攻击技术要求我们在文档头部实现内容注入。

解析xsd文件

我们还是使用之前那个XSLT文档来进行演示:

我们需要include下面这个名为“external_transform.xslt”的外部XSLT文件:

但是这里有一个问题,即“xsl:include”标签无法包含在一个“xsl:template”标签中,而且生成的文件必须是XML文档。

因此,我们首先需要闭合“xsl:template”标签,然后添加“xsl:include”标签,最终的Payload如下:

注入完成之后,生成的XSLT文档如下:

转换结果如下:

注:在XXE和document()函数的帮助下,“include”和“import”标签同样可以用来进行提取数据以及端口扫描等操作。

可用于测试XSLT漏洞的App

为了给大家提供一种快速测试Payload的方法,我们专门开发了一款包含XSLT漏洞的小型.Net应用,这款应用使用了.Net的System.Xml实现。

下面给出的是应用的源代码,你可以使用Microsoft Visual Studio对其进行编译。应用程序的源代码以及编译版本可点击【这里】获取。源代码如下:

注:该应用要求当前工作目录中存储data.xml和transformation.xslt文件。

缓解方案

如果你的应用程序使用了XSLT,那我建议你可以考虑以下缓解方案:

如果你想了解更多关于热门XSLT代码库的功能以及相应的默认配置,可以参考Emanuel Duss 和Roland Bischofberger发布的文档【参考文献】。

总结

对于很多应用程序来说,XSLT虽然是一种功能强大的工具,但它也有很多不为人知的弱点。不良的编码习惯将有可能让应用程序出现安全漏洞,而这些漏洞将有可能允许攻击者远程控制你的应用程序并从中提取数据。


如何检查Linux服务器受到DDOS攻击

登录到你的服务器以root用户执行下面的命令,使用它你可以检查你的服务器是在DDOS攻击与否: netstat -anp |grep tcp\|udp | awk {print $5} | cut -d: -f1 | sort | uniq -c | sort –n 该命令将显示已登录的是连接到服务器的最大数量的IP的...

网络攻击DoS.Generic.SYNFlood:TCP来自XXXXXXXXX到本地端口

您可以吧防火墙的局域网和互联网安全等级调成中级而且按此设置不影响主机的网络安全SYN-Flood是目前最流行的DDoS攻击手段,早先的DoS的手段在向分布式这一阶段发展的时候也经历了浪里淘沙的过程。 SYN-Flood的攻击效果最好,应该是众黑客不约而同选择它的原因吧。 那么我们一起来看看SYN-Flood的详细情况. Syn Flood利用了TCP/IP协议的固有漏洞.面向连接的TCP三次握手是Syn Flood存在的基础 .假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。 实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称做:服务器端受到了SYN Flood攻击(SYN洪水攻击)我复制过来的,大概看了下,没什么,不用担心。 如果嫌这个报警烦人的话,可以把安全级别设置的稍微低些。

网站和服务器遇到CC攻击或者DDOS攻击怎么办

|服务器页面攻击解决?抗ddos攻击服务器租用 防御cc攻击之网站代码需要注意之处: cc的防御要从代码做起,其实一个好的页面代码都应该注意每ip连接数,查询次数等这些东西,还有sql注入,不光是一个入侵工具,更是一个ddos缺口,大家都应该在代码中注意。 某服务器,开动了5000线的cc攻击,没有一点反应,因为它所有的访问数据库请求都必须一个随机参数在session里面,全是静态页面,没有效果。 突然发现它有一个请求会和外面的服务器联系获得,需要较长的时间,而且没有什么认证,开800线攻击,服务器马上满负荷了。 对于大流量cc攻击的最佳解决方案:大流量cc攻击无论是网站页面代码设置还是软件防火墙设置都不能很好的解决被攻击问题,对于这一问题美景互联同美国芝加哥机房合作搭建丹佛vip服务器区专业防御cc类型的硬件防火墙具体介绍如下:专一cc防御:丹佛vip服务器全美唯一配置硬件cc防火墙区:专一防御cc、syn、ack碎片攻击,公司直接操控防火墙,硬防策略设置可以精确到每台服务器。 远程故障解决:重做系统等常见问题都无需通过机房技术操作,公司技术支持直接通过kvm远程管理卡处理故障。 提供故障解决。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐