关于SSTI的坑
Posted bighu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于SSTI的坑相关的知识,希望对你有一定的参考价值。
进过几天的CSDN和博客园以及个人博客的查询,我大概讲一下我对SSTI模板注入的理解。
SSTI注入指的是模板注入(应该翻译就是模板注入)
就站在我所了解的知识水平(大概就是大一随便水了一下的c/c++)上简单分析一下
模板大概就相当于c++中的模板类(可以使用模板类来到达多种类,当然还有模板函数),大概就是用模板可以省很多工作量。(虽然这是一个新东西,但我想用一些我了解的东西大概解释一下,以免我就只记下它的一堆概念)
而模板有一个特性(他会执行传给它的参数,实际上你给模板2*3与给它6是一个道理,它会先计算2*3)
怎么看它有没有模板注入
如果来浏览器的网址栏看到明显的一个变量=某个东西(s),而这个东西又被输出到网页上可以试着改一下这个s,看输出变没变。例如
很明显它就把我输的东西给渲染出来了(这就说明存在SSTI)
模板注入在源码上的体现
$output = $twig->render("Hello {{name}}", array("name" => $_GET["name"])
列入上面这句话(这个是不会引起模板注入的)原因是输入是先在后面赋值给name然后在将name带入到前面来。
我想到一个有意思的例子:
将用户的输入比作一个炸弹,那么上面的("name" => $_GET["name"])就是将这个炸弹进行3D打印然后将打印出来的假炸弹传给模板(这样是没问题的)。
在考虑这个:
$output = $twig->render("Hello {$_GET[\'name\']}");
显然这个就是直接将炸弹给模板了,被炸也就很正常了。·
注:这个例子中用户的模板方法是twig(一个开源的项目)
如何进行模板注入
这里我还没屡清楚,推一下我看的几篇博客吧。
https://www.cnblogs.com/bmjoker/p/13508538.html
https://blog.knownsec.com/2015/11/server-side-template-injection-attack-analysis/
最后,这个坑太大了,以我现在的知识储备属实填不过来(以后慢慢填
以上是关于关于SSTI的坑的主要内容,如果未能解决你的问题,请参考以下文章