| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> SSTI漏洞初手入门 -> 正文阅读 |
|
[PHP知识库]SSTI漏洞初手入门 |
目录 0x01 什么是SSTI????????SSTI,即服务器端模板注入(Server-Side Template Injection)。攻击者在服务器输入语句,服务端将其作为Web应用模板内容的一部分,在进行目标编译渲染的过程中,进行了语句的拼接,执行了所插入的恶意内容,从而导致信息泄露、代码执行、GetShell等问题。 补充: ????????1)模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的文档,就是将模板文件和数据通过模板引擎生成一个HTML代码。 ????????2)模板注入请不要认为只存在于 Python 中,凡是使用模板的地方都可能会出现 SSTI 的问题,SSTI 不属于任何一种语言,沙盒绕过也不是。 0x02 漏洞存在位置常见的模板引擎:
SSTI 产生实例: 1)PHP 实例
开发者将用户的输入直接放在要渲染的字符串中了,? {}括号实际上只是为了区分变量和字符串常量而已。我们输入{{xxx}}就非常的符合模板的规则,模板引擎未经思考就给解析了,然后服务器就无了。 2)Python 实例
?发现持模板引擎支持的语法,我们就能在URL后面跟上{{ 7*7 }},自然而然就能计算出 49 了。 3)JAVA 实例 在2015年的blackhat 大会上曾讲述了Alfresco 的一个 SSTI 漏洞,简单的payload 分析一下。 <#assign ex="freemarker.template.utility.Execute"?new()>${ ex("id") } 这里面的 ?new() 是其高级内置函数,相当于调用了构造函数创建了一个对象,那么这个 payload 中就是调用的 freemarker 的内置执行命令的对象Execute 结果:uid=119(tomcat7) gid=127(tomcat7) groups=127(tomcat7) 0x03 漏洞如何发掘检测1)如同SQL 注入检测,XSS 检测一样,模板注入漏洞的检测也是传递特定 Payload的参数并根据返回的内容来判断是否存在的。每一个模板引擎都有着自己的语法,就如同 SQL 注入中有着不同的数据库类型一样。 2)可按照下面的图进行测试,从而判断出是那个模板引擎,再去找对应的payload: ?3)注意:有的时候出现 XSS 的时候,也有可能是 SSTI 漏洞,虽说模板引擎在大多数情况下都是使用的xss 过滤的,但是也不排除有些意外情况的出现,比如有的模板引擎(比如 jinja2)在渲染的时候默认只针对特定的文件后缀名的文件(html,xhtml等)进行XSS过滤。 4)提供一个大牛写的 SSTI 的检测工具 tplmap?https://github.com/epinna/tplmap? ? ? ?项目中附带有docker环境,可供学习和熟悉 ----------- tplmap 0x04 漏洞复现用vulhub上的一个环境来复现Flask的SSTI漏洞 1)docker环境搭建 ? ? ? ? cd /vulhub-master/flask/ssti ????????docker-compose up -d 2)注入检测 手工检测: ?上述工具检测: ?3)漏洞利用 官方给的漏洞利用方法:
结果如下: 0X05 防御方法?1)和其他的注入防御一样,绝对不要让用户对传入模板的内容或者模板本身进行控制 2)减少或者放弃直接使用格式化字符串结合字符串拼接的模板渲染方式,使用正规的模板渲染方法 |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 5:16:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |