menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right All_wiki chevron_right yougar0.github.io(基于零组公开漏洞库 + PeiQi文库的一些漏洞)-20210715 chevron_right Web安全 chevron_right 齐治堡垒机 chevron_right (CNVD-2019-17294)齐治堡垒机 后台命令执行漏洞.md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    (CNVD-2019-17294)齐治堡垒机 后台命令执行漏洞.md
    2.01 KB / 2021-04-21 09:23:46
        (CNVD-2019-17294)齐治堡垒机 后台命令执行漏洞
    ==============================================
    
    一、漏洞简介
    ------------
    
    二、漏洞影响
    ------------
    
    三、复现过程
    ------------
    
    ### 漏洞分析
    
    首先,定位到/audit/data\_provider.php,直接查找\$\_GET\['service'\]或者\$\_REQUEST\['service'\]都找不到。原来在文件开头包含的common.php中,已有全局配置。
    
    代码如下,不但给变量加了个前缀"req\_",还过滤掉了一些危险字符。
    
    ![1.jpg](./resource/(CNVD-2019-17294)齐治堡垒机后台命令执行漏洞/media/rId25.jpg)
    
    然后,搜索"
    \$req\_service"定位到data\_provider.php文件的第99行。可见,将\$GET\['service'\]赋值到\$service变量中。
    
    ![2.jpg](./resource/(CNVD-2019-17294)齐治堡垒机后台命令执行漏洞/media/rId26.jpg)
    
    然后,跟进\$service来到data\_provider.php文件的第124行。可见,通过字符串拼接,将\$\_GET\['service'\]带入到\$cmd变量中。
    
    ![3.jpg](./resource/(CNVD-2019-17294)齐治堡垒机后台命令执行漏洞/media/rId27.jpg)
    
    然后,跟进\$cmd来到data\_provider.php文件的第133行。可见,\$cmd被带入exec函数中执行。至此,造成远程命令执行漏洞。
    
    ![4.jpg](./resource/(CNVD-2019-17294)齐治堡垒机后台命令执行漏洞/media/rId28.jpg)
    
    漏洞复现
    --------
    
    如下图,通过在传递参数"service=`id`",成功执行命令,并回显命令执行结果。
    
    ![5.png](./resource/(CNVD-2019-17294)齐治堡垒机后台命令执行漏洞/media/rId30.png)
    
    通过反单引号执行命令,写入PHP一句话代码到服务器。
    
    原理如下图所示,这样就可以绕过过滤执行任意命令。实际上,还需要用\${IFS}替换掉空格才行。
    
    ![6.jpg](./resource/(CNVD-2019-17294)齐治堡垒机后台命令执行漏洞/media/rId31.jpg)
    
    所以,最终方案如下。
    
    ![7.jpg](./resource/(CNVD-2019-17294)齐治堡垒机后台命令执行漏洞/media/rId32.jpg)
    
    参考链接
    --------
    
    > https://www.cnblogs.com/StudyCat/p/11197986.html
    
    
    links
    file_download