SSTI漏洞获取服务器权限shell漏洞

  • A+
所属分类:网络安全文章
阿里代金券


推广者专属福利,新客户无门槛领取总价值高达2775元代金券,每种代金券限量500张,先到先得。

在本文中,我们将为读者演示如何利用服务器端模板注入(SSTI)漏洞来取得托管应用程序的服务器的Shell。

我们都知道,由于模板引擎支持使用静态模板文件,并在运行时用HTML页面中的实际值替换变量/占位符,从而让HTML页面的设计变得更容易。当前广为人知且广泛应用的模板引擎有Smarty、Twig、Jinja2、FreeMarker和Velocity。

如果攻击者能够把模板指令作为用户输入进行注入,并且这些指令可以在服务器上执行任意代码的话,那么他们离服务器端模板注入攻击也不远了。如果在web页面的源代码中看到了下面的代码片段,那么,就可以大胆断定该应用程序正在使用某些模板引擎来呈现数据。

由于我喜欢体验式学习,对于SSTI攻击也不会例外,所以,我就借助Sanoop Thomas和Saman编写的Xtreme Vulnerable Web Application(XVWA)来练手,因为其中的一项挑战,就是关于SSTI漏洞。我强烈建议大家也不妨动手试一试,大家可以从这里下载该软件。

首先,我注入了探测字符串${{1300+37}},以查看应用程序是否进行了相应的计算。根据服务器响应来看,得到的结果为 $1337 。根据这个响应,我们可以推测这里使用了模板引擎,因为这符合它们对于{{}}的处理方式。

SSTI漏洞获取服务器权限shell漏洞

注入探针字符串

SSTI漏洞获取服务器权限shell漏洞

响应中的数值1337

实际上,页面本身就表明它是一个TWIG模板引擎。那么,除了单纯的数学运算评估之外,我们还能利用这种注入漏洞做些什么呢?这让我想到了詹姆斯•凯特尔(James Kettle)所做的一项令人敬佩的研究。如下所示,这个有效载荷能够恶意利用模板指令执行“id”命令。

SSTI漏洞获取服务器权限shell漏洞

执行代码的载荷

SSTI漏洞获取服务器权限shell漏洞

Meterpreter Shell

对于不同的模板引擎,该漏洞的修复方法会有所不同,但如果在传递给模板指令之前,对用户输入进行安全过滤的话,则可以大大减少这类威胁。此外,另一种防御方法是使用沙箱环境,将危险的指令删除/禁用,或者对系统环境进行安全加固。

CE安全网

发表评论

您必须登录才能发表评论!