一、前言
声明:本文仅供技术交流使用,严禁采用本文的方法进行任何非法活动。
上周新来的同事分享Redis的原理和机制,想起2017年的时候测试环境Redis被攻击,最后只能重新安装服务器,今天试验一把利用Redis漏洞进行攻击,只有理解了别人是怎么攻击的,才能更好地进行防范。
二、被攻击机器环境搭建
IP: 120.55.95.55
OS: Linux CentOS7.6
Redis5.0.9
1、编译安装Redis
注:需要安装tcl,并且在编译时指定MALLOC=libc,否则会各种报错。
2、修改redis.conf
#bind 127.0.0.1
protected-mode no
daemonize yes
注:这里以非保护模式启动Redis,Redis4.0以后版本对安全有所加强,默认安装好后不将保护模式去掉,远程是无法连接的。
3、启动redis
./redis-server ../redis.conf
三、攻击机器环境搭建
IP:118.178.255.158
OS:Red Hat Enterprise7.9
1、安装Redis客户端
2、测试Redis连接是否OK
redis-cli -h 120.55.95.55
四、进行攻击
1、生成本机公钥
ssh-keygen
2、将公钥文件写入Redis
注:第一步将公钥文件公钥内容前后分别加上两个换行,否则上传的公钥无效,第二步将处理后的公钥内容设置到Redis Key为crackit中去。
3、将公钥写入authorized_keys文件
注:上面语句用于动态修改Redis数据存放路径及文件名。
~/.ssh/authorized_keys内容如下
注:数据文件中本来key和value是连着的,但我们写入crackit的值时加了两个换行符,这样公钥不会被key干扰,就是有效的。
4、使用自己的私钥登录被攻击机器
ssh root@120.55.95.55
然后你想做什么都可以了。。。。
五、真实案例
1、2017年时候测试环境安装的是Redis4.0版本(或者更低,记不太清了),默认安装6379端口可以远程访问,然后被黑了,被人家做为挖矿机,他们太狠了,一定要把我CPU耗尽,搞得别的程序都跑不了(这样别人不就发现了吗,不能控制CPU的占用情况吗?),当时只截取了Redis被注入一段代码。
2、刚申请的测试机120.55.95.55立马被其他人黑了
机器Load
Redis被注入:
注:忘记截屏了,重启了Redis,那个注入的key找不到了
信任登录被加了其它公钥
注:这台机器先放着给他用两天,有空再观察一个情况,今天还要做系统发布。