#知识点
1、PYC文件反编译
2、python-web-SSTI
3、SSTI模板注入利用分析
SSTI 就是服务器端模板注入
(Server-Side Template Injection)
当前使用的一些框架,比如python的flask,php的tp,java的spring等一般都采用成熟的MVC的模式,用户的输入先进入Controller控制器,然后根据请求类型和请求的指令发送给对应Model业务模型进行业务逻辑判断,数据库存取,最后把结果返回给View视图层,经过模板渲染展示给用户。
漏洞成因就是服务端接收了用户的恶意输入以后,未经任何处理就将其作为 Web 应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏模板的语句,因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。其影响范围主要取决于模版引擎的复杂性。
凡是使用模板的地方都可能会出现 SSTI 的问题,SSTI 不属于任何一种语言,沙盒绕过也不是,沙盒绕过只是由于模板引擎发现了很大的安全漏洞,然后模板引擎设计出来的一种防护机制,不允许使用没有定义或者声明的模块,这适用于所有的模板引擎。
SSTI会产生在哪些语言开发应用:
模板(网站显示的样式)通过更改模板更改页面的显示(数据内容不变更改样式)
SSTI漏洞就是模板相关的漏洞
ASPX .net语言(存在DLL反编译)
JAVA(class、jar的等封装好的文件需要进行反编译来查看源码)
Python也存在这种pyc文件
#PY反编译-PYC编译文件反编译源码
pyc文件是py文件编译后生成的字节码文件(byte code),pyc文件经过python解释器最终会生成机器码运行。因此pyc文件是可以跨平台部署的,类似Java的.class文件一般py文件改变后,都会重新生成pyc文件)
真题附件:http://pan.baidu.com/s/1jGpB8DS反编译平台:
https://tool.lu/pyc
http://tools.bugscaner.com/decompyle/反编译工具:https://github.com/wibiti/uncompyle2
#SSTI入门-原理&分类s检测&分析&利用
1、什么是SSTI?有什么漏洞危害?
漏洞成因就是服务端接收了用户的恶意输入以后,未经任何处理就将其作为 web 应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏板的语句,因而可能导致了敏感信息泄露、代码执行、Getshe11 等问题。其影响范围主要取决于模板引擎的复杂性。
2、如何判断检测ssTI漏洞的存在?
-输入的数据会被浏览器利用当前脚本语言调用解析执行 {{中间的会被当成python代码执行}}
3、SSTI会产生在那些语言开发应用?
-见上图
4、sSTI安全问题在生产环境那里产生?-存在模版引用的地方,如404错误页面展示
-存在数据接收引用的地方,如模版解析获取参数数据
#SSTI考点-CTE靶场-[Westexncr]shrine
1、源码分析ssTI考点
2、测试判断sSTI存在
3、分析代码过滤和FLAG存储
4、利用flask两个函数利用获取
https://blog csdn.net/houyanhua1/axticle/details/85470175ux1 fox()函数是用于构建操作指定函数的URL
get_flashed_messages()函数是获取传递过来的数据
/shrine/{(url forglobals_)}/shrine/{{url for _globals_['current_app'].config)}/shrine/{{get flashed messages.globals ))/shxine/{iget _flashed messages,_globals_['current_app'].config))
#SSTI考点-CMS源码-MACCMS 8.x执行
Payload:index.php?m=vod-searcháwd={if-dddd:phpinfo ()}{endi f-dddd
1、根据wd传递的代码找指向文件
2、index->vod->tpl->ifex->eva]
3、构造Payload带入:fex并绕过后执行
参考文章
1. SSTI(模板注入)漏洞(入门篇) - bmjoker - 博客园 (cnblogs.com)