Redis非授权访问获取webshell及相关问题

      最近,在乌云上看到有人利用Redis非授权访问获取webshell的案例。其实,之前在安全论坛上有看到相关的介绍文章。好吧,我也打算试用一把,在测试过程中把遇到的问题及解决办法记录一下。指不定有些朋友可以用的上,当然,仅作交流,请勿用于非法途径

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

      我主要在自己的kali虚拟机上测试,之前没有安装Redis相关的程序,第一步肯定是安装了。具体可以参考官网链接:http://redis.io/download。用SHODAN搜索了一下,找个案例实验一下。

      为了保护隐私,文章后续涉及到具体IP地址,我都会打上马赛克。

      如下图所示,我找到了一个非授权访问的Redis数据库。具体就是使用redis-cli命令来进行连接。

      连上之后,我们看下数据库中的key值。具体命令如下:

keys *

      得到如下图所示结果:

      可以看到,有2167项内容。咱们开始获取webshell的过程。在这里,我们需要知道web服务器的解析路径。这个可以猜测或者比较幸运的是主站正好有类似phpinfo这样的网页可以访问。在这里我找到一个info.php的页面,正好得到网站路径的绝对地址。

      执行webshell的几条命令如下:(我得到的网站路径的绝对地址为/data/www/ecstore/)

config set dir /data/www/ecstore/
config set dbfilename chopper.php
set webshell "<?php phpinfo(); ?>"
save

      命令执行完成之后,一般情况下就可以访问webshell了,也不排除特殊情况,如下图所示:

      这个是什么问题呢?我后续写入了一个test.txt的文件,然后下载发现,Redis数据库执行save后会把内存中存在的所有数据都会保存到磁盘,这样就导致想要保存的webshell文件过大,然后不能执行了。那么,有什么好办法解决?可以先把Redis数据库中的内容全部清除,再写入webshell。这样就可以成功了。注意一点,还是首先备份一下Redis数据库中的内容,然后写入webshell成功后,再次恢复Redis数据库中的内容。本着不破坏的原则,应该是要这么做的。

      在这里推荐备份和恢复Redis数据库的工具redis-dump,具体可以参看GitHub上的地址:https://github.com/delano/redis-dump

      首先来个备份,保存的是json格式。如下图所示:

      接下来清空Redis数据库,然后执行webshell写入过程。清空Redis数据库的命令如下:

FLUSHALL

      最后,再次恢复Redis数据库中的内容:

      这次,得到的webshell就可以执行了。最后需要注意的地方,webshell上传成功且可以执行之后,如果恢复Redis数据库,你会发现之前能够成功执行的webshell又不能执行了。貌似恢复的Redis数据库中的内容会覆盖webshell中的内容。所以,先上传个小马,然后再用小马上传个大马,这样小马不行了,还可以用大马。

      参考链接:

      http://www.secpulse.com/archives/5357.html

      http://www.secpulse.com/archives/5366.html

 

 

时间: 2024-10-12 02:19:38

Redis非授权访问获取webshell及相关问题的相关文章

redis非授权访问的查毒过程

排查及处理过程 2016年9月26日晚,阿里云后台报告有一台服务器在异地登录的告警,初步怀疑是被入侵了,临时采取关闭这台服务器的方法避免对集群中的其他主机造成危害. 第二天,开始排查原因. 首先在服务器上发现一个额外的计划任务(下图是解决过程中被我注释掉了) 联想到这个机器上跑有redis,基本断定是redis的未加密码导致的非授权访问. 根据以往经验,linux上的这个病毒通常是DDOS或者挖矿程序.下面来慢慢分析. 我们根据crontab里面的网址,我们到chrome里面输入这个链接下载下看

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

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

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

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

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

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

原作者:Cream 文章出处: 贝塔安全实验室 0x01 Redis未授权访问反弹shell Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持.从2013年5月开始,Redis的开发由Pivotal赞助. Redis因配置不当可以未授权访问(窃取数据.反弹shell.数据备份操作主从复制.命令执行).攻击者无需认证访问到内部数据,可导致敏感信息

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.

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未授权访问漏洞分析

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 的数据.攻击者在未授权访