用云服务器挖矿 告诉我黑客是如何侵入服务器实现批量挖矿的?
用云服务器挖矿 告诉我黑客是如何侵入服务器实现批量挖矿的?
一、 漏洞和危害
1.首先,什么是Redis未授权访问漏洞?
Redis 默认绑定在 0.0.0.0:6379。如果不采取相关策略用云服务器挖矿,例如添加防火墙规则,避免来自其他不可信来源的 IP 访问,Redis 服务将暴露于公网。如果没有设置密码认证(通常为空),会导致任何用户如果可以访问目标服务器,就无法访问Redis并读取Redis数据。在未经授权访问 Redis 的情况下,攻击者可以使用 Redis 提供的命令写入文件。攻击者可以成功地将自己的ssh公钥写入目标服务器/root/.ssh文件夹下的文件中。 ,然后就可以使用对应的私钥直接使用ssh服务登录目标服务器了。
简单来说,漏洞的发生有两个条件:
(1)Redis绑定0.0.0.0:6379,不加防火墙规则用云服务器挖矿,避免其他不可信源ip访问等相关安全策略用云服务器挖矿,直接暴露于公网;
(2)无需密码认证(一般为空),无需密码即可远程登录Redis服务。
2.漏洞的危险
(1)攻击者无需认证即可访问内部数据,可能导致敏感信息泄露,黑客还可以执行恶意执行清除所有数据;
(2)攻击者可以通过EVAL执行lua代码,或者通过数据备份功能将后门文件写入磁盘;
(3)最严重的情况下,如果Redis以root身份运行,黑客可以将SSH公钥文件写入root账户,直接通过SSH登录受害服务器
二、漏洞的复制和利用
1.SSH免密码登录原理介绍
在正式开始介绍复现过程之前,先说明一下我复现的是最严重的情况,即以root登录redis服务,写入ssh公钥登录受害者主机使用 ssh 免密码。现在来解释一下SSH免密码登录的原理(已经知道的童鞋可以直接跳过hhh):
SSH提供了两种登录验证方式用云服务器挖矿,一种是密码验证,也就是账号密码登录,另一种是密钥验证,也就是我们想要的免密码登录。这里我只简单说一下密钥验证。原则。
所谓密钥认证,其实是一种基于公钥密码学的认证。它使用公钥加密和私钥解密。公钥可以公开并放置在服务器端。您可以将相同的公钥放在您想使用 SSH 远程登录的所有服务器中,私钥是保密的,只有您知道。用公钥加密的消息只能用私钥解密。大致流程如下:
(1)客户端生成私钥和公钥,并将公钥复制到服务器;
(2)客户端发起登录请求,发送自己的信息;
(3)服务器根据客户端发送的信息检查客户端的公钥是否存在,如果不拒绝登录,则生成一个随机数并与公钥加密密钥并将其发送给客户端。;
(4)客户端收到服务器发来的密文后用云服务器挖矿,使用私钥对密文进行解密,并将解密结果发送给服务器进行验证;
(5)服务端收到客户端发来的解密结果,与刚刚生成的随机数进行比较,相同则允许登录,不同则拒绝登录。
2.漏洞环境搭建:
Kali linux 2016 及更高版本
(1)官网下载源码压缩包
.redis.io//redis-3.2.11.tar.gz
(2)解压压缩包
tar xzf redis-3.2.11.tar.gz
(3)进入解压目录:cd redis-3.2.11,输入make执行;
(4)make结束后进入src目录:cd src,将redis-和redis-cli复制到/usr/bin目录下(这样就不需要进入redis-和redis-cli每次启动安装目录):
cp redis- /usr/bin
cp redis-cli /usr/bin
(5)返回目录redis-3.2.11用云服务器挖矿,复制redis.conf到/etc/目录:
cp redis.conf /etc
(6)在etc中编辑redis配置文件redis.conf
vi /etc/redis.conf
(7)去掉ip绑定,允许本地以外的主机远程登录redis服务:
关闭保护模式并允许远程连接到redis服务:
(8)使用/etc目录下redis.conf文件中的配置启动redis服务
redis- /etc/redis.conf
(9)启动ssh服务
在 Kali 中安装了 ssh 服务用云服务器挖矿,但默认不启动。需要使用 ssh start 命令启动 ssh 服务。
(10)复制虚拟机,一台作为目标机,一台作为攻击方,至此漏洞环境已经搭建完成,此时可以远程登录redis服务为没有密码的root用户。
将其中一个作为目标A(192.168.227.129),另一个作为攻击B(192.16 8.227.130)
打开A中的redis服务:redis-/etc/redis.conf;
在主机A执行mkdir /root/.ssh命令创建ssh公钥存储目录(A作为ssh服务器);在B中生成ssh公钥和私钥,密码设置为空:
p>
进入.ssh目录:cd .ssh/,将生成的公钥保存到1.txt:
攻击终端ping目标主机ip,或者在目标计算机上ping攻击终端,保证两台计算机之间的网络通信
将1.txt写入redis(使用redis-cli -h ip命令连接主机A并写入文件):
远程登录主机A的redis服务:redis-cli -h 192.168.227.129(目标机器),使用GET dir命令获取redis备份的路径:
将redis备份路径改为ssh公钥存放目录(一般默认为/root/.ssh):
设置上传公钥的备份文件名为:
检查是否更改成功(检查是否有文件),如果没有问题则保存退出,至此成功将ssh公钥写入目标机器:
启动主机A和主机B的ssh服务(kali默认ssh服务是关闭的),命令是ssh start
在主机B上使用ssh免密码登录主机A:ssh -i root@192.168.227.129,登录成功:
至此,我们已经成功利用redis未授权访问漏洞实现ssh免密码登录目标服务器,接下来就可以使用ssh服务进行下一次穿透了。
3.使用搜索引擎查找漏洞
Redis暴露在公网(即绑定到0.0.0.0:6379,可以访问目标IP公网),以及相关的认证和相关安全策略未启用这种情况可能会受到影响并导致被利用。
搜索结果显示,公网可以直接访问的Redis服务有97707个。
根据检测,未认证直接使用Redis的全球分布如下:
全球无需验证即可直接使用Redis TOP 10国家和地区:
如果你觉得文笔不错,请给个赞支持昂_(:з」∠)_