您现在的位置是:物联网 >>正文
服务器端模板注入漏洞简介
物联网66人已围观
简介译者 | 刘涛审校 | 重楼服务器端模板注入SSTI)漏洞是网络应用安全中不太为人所知的一种漏洞类型。尽管这些漏洞很少见,但一旦被发现,其影响往往非常严重,通常会导致远程代码执行RCE)。本文旨在揭示 ...
译者 | 刘涛
审校 | 重楼
服务器端模板注入(SSTI)漏洞是服务网络应用安全中不太为人所知的一种漏洞类型 。尽管这些漏洞很少见,器端但一旦被发现,模板其影响往往非常严重,注入通常会导致远程代码执行(RCE)。漏洞

本文旨在揭示这些问题是简介如何产生的 ,并找出它们在现实环境中经常出现的服务地方 。
什么是器端服务器端模板(Server-Side Templates)现代网络严重依赖于大量的用户信息 、产品细节和各种其他类型的模板数据 。服务器租用为了以有意义的注入方式呈现这些信息,就需要在网页上对它们进行有效的漏洞组织 ,这样用户才能快速找到最重要的简介信息;这也是用户从精选的搞笑图片页面中获得快乐的方式。
模板语言和框架引入了特殊的服务语法和结构 ,使开发人员能够创建包含静态内容的器端模板 ,同时提供的模板语法和结构允许动态内容在不需要混合后端和前端代码的情况下呈现。建站模板
安全问题从何而来 ?如果攻击者可以发送请求,从而使服务器的模板引擎把用户的输入当作模板来处理,那么就会产生安全问题。一个好的安全评估在寻找这类漏洞时 ,需要专注考虑以下几个方面:
管理员功能 - 允许管理员定制页面,横幅 ,或者应用程序中的其他可视元素,有时还会提供模版作为一项特色 。一些开发人员甚至可能选择允许访问模板语言 ,从而打开这个漏洞。
未经过滤的输入 - 任何可能返回给用户或显示在另一页上的香港云服务器输入都可能导致SSTI,具体取决于网站的功能。既然理解了模板语言的用例,那么请戴上您的开发帽 ,思考您会在哪些地方使用模板 。
测试SSTI漏洞如果怀疑应用程序存在SSTI漏洞 ,那么在应用程序中可以使用一些模板语言。测试越有针对性 ,效果越好 。如果能够通过侦测确定应用程序的开发语言(如Python/Java/PHP等),则可以为目标语言中常用的模板框架创建测试有效载荷 。免费模板
SSTI Polyglot PayloadSSTI Polyglot有效载荷旨在跨多个框架和语言测试SSTI漏洞 。在源代码未知的情况下,它可以辅助测试。但由于此特定有效载荷很常见,且包含大量特殊字符(如${ { <%[%"}}%) ,所以它更可能被输入过滤( input sanitization)拦截或被防火墙(WAFs)阻断。
可以考虑在请求中使用有效载荷 ,以在目标应用程序上触发某种错误消息。
复制GET/search?query=${ { <%[%"}}%\. Python - Jinja2(Python的一组模板引擎)1.2.一个简单的用于测试应用程序是否正在处理Jinja模板的有效载荷是{ { 7*7}} ,如果应用程序正在处理该模板,高防服务器则页面上将显示49。
为了进一步提升这个有效载荷,您可以尝试使用下面的示例来使用Python的OS包执行date命令。
复制{ { self.__init__.__globals__.__builtins__.__import__(os).popen(date).read()}}1.在使用上述示例时,您正在使用Jinja来执行OS功能,从而执行OS命令,而这些应该包含在应用程序的类路径中。如果应用程序的运行环境特别严格,但您有一个可行的SSTI POC(证明服务器端模板注入漏洞存在漏洞利用代码),您可以考虑深入研究应用程序使用的任何其他Python包 。源码下载例如,您尝试通过SSTI访问常用的requests包以进行进一步地利用 。这类似于您可能在反序列化漏洞中看到的应用开发方式 。
Jinja 过滤器旁路您也应该知道,对于Jinja2 应用防火墙和应用程序过滤器存在绕过方法。过滤器和相关的绕过方法总是在变化 ,但是下面是您可能会看到的常见过滤器。
防火墙可能会拦self.__init__.__globals__.__builtins__.的某些部分。如果是这种情况 ,使用attr()可能会有所帮助,因为它可以直接访问builtins(内置函数)对象。
复制{ { request|attr(builtins)|import(os)|popen(date)|read}}1.深入研究过滤器绕过方法,您可以让Python帮助转换有效载荷 !例如,使用format()可以在处理模板引擎时转换有效载荷 。当某些组合. or_被阻止时 ,这将有所帮助。
复制{ { request|format(%s%sbuiltins%s%s)|import(os)|popen(date)|read}}1. Java模板注入Java有更多的模板框架需要应对 ,可能好坏参半。基于Spring的Web应用程序非常常见,Baeldung有一个很棒的列表,网址如下:https://www.baeldung.com/spring-template-engines
ThymeLeaf(Java服务器端模板引擎)注入这是 Java中常见的一种模板引擎类型,其利用 SSTI漏洞的方法已广为人知。做个简单的测试,看看是否存在模板注入漏洞,可以再次使用${ 7*7}这个方法,如果您在响应中看到49而不是模板,那就意味着存在问题 。
这种RCE有效载荷(一种远程代码执行的有效载荷)有两种变体,Spring Expression Language (SpringEL) 和 Object Graph Navigation Language (OGNL) 。SpringEL比较流行,也比较现代化,但是您可能会发现 OGNL模板仍然被使用 。这里是我们的示例 ,再次执行date命令 。
复制SpringEL ${ T(java.lang.Runtime).getRuntime().exec(‘date’)} OGNL ${ #rt = @java.lang.Runtime@getRuntime(),#rt.exec(‘date’)}1.2. 结束语尽管本文只是一个简单的介绍,但希望您能了解这些漏洞是如何被利用以及它们是如何产生的 。这并没有涵盖所有可能的SSTI有效载荷和框架 ,但我建议您深入研究 。
延伸阅读https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server Side Template Injection/README.md
https://portswigger.net/web-security/server-side-template-injection
译者介绍刘涛 ,51CTO社区编辑 ,某大型央企系统上线检测管控负责人 。
原文标题 :An Introduction to Server Side Template Injection Bugs ,作者:David Neal
Tags:
转载:欢迎各位朋友分享到网络,但转载请说明文章出处“算法与编程”。http://www.bzli.cn/news/925b599069.html
相关文章
IAM成功实施面临七大挑战
物联网近年来,基于身份的攻击和未授权访问已经成为企业最为头疼的安全威胁之一,从Okta、Xfinity到微软,无数知名企业因脆弱的IAM系统被犯罪分子利用,遭受了影响广泛、损失惨重的网络攻击。根据网络风险联 ...
【物联网】
阅读更多两台win10电脑怎么共享文件夹
物联网我们经常会遇见两台电脑共享同一份文件夹的情况,但是大多数人都不知道如何开启这个功能。今天小编带来了详细的教程,下面大家一起来看看吧。两台win10电脑共享文件夹的教程第一步:点击此电脑。第二步:右键单 ...
【物联网】
阅读更多win10镜像如何下载
物联网最近有小伙伴反应win10镜像文件该如何下载,因为市面的镜像文件多如牛毛,想找到正规的文件下载,这可怎么办呢?今天小编带来了下载镜像的链接,详细的解决步骤,具体的一起来看看吧。win10镜像下载教程下 ...
【物联网】
阅读更多
热门文章
最新文章
友情链接
- 数据中心电源的五大趋势
- 神舟k710c评测(体验神舟k710c,畅享高性能办公娱乐利器)
- NVIDIA发布云原生超级计算架构:优化算力结构,赋能业务上云,降低数据中心能耗
- 小米膜的优点和特点(为你的手机屏幕保驾护航)
- 中兴A2015顶配(性能强大,拍照出色,超高性价比引领市场潮流)
- 昇腾AI异构计算架构CANN 6.0全新开放升级,全面释放AI生产力
- 宏基573安装Win7系统教程(详细步骤教您如何在宏基573上安装Windows7)
- M8peg与750比较(一探M8peg和750处理器之间的差异与应用场景选择)
- 以友唱(与好友合唱,畅享音乐的魅力)
- 体验XboxOneX的卓越性能与极致画质(探索一台引领游戏娱乐新纪元的游戏机) 企业服务器亿华云香港物理机云服务器b2b信息平台网站建设源码库