速看!又一个 Redis 高危漏洞,可植入隐秘后门允许命令执行

公众号关注 「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !

b91d39843b833baa7b2d721cb57eada7.jpeg

被研究人员称之为Redigo的一种基于Go的新的恶意软件,它一直针对有CVE-2022-0543漏洞的Redis服务器并植入一个隐秘的后门允许命令执行。

CVE-2022-0543是Redis(远程字典服务器)软件中的一个关键漏洞,具有非常高的威胁性。它在2022年2月被发现并修复。修复几个月后,仍有攻击者继续在未打补丁的机器上利用它。针对于此漏洞的恶意软件的名称Redigo则是由它的目标机器和构建它的编程语言创造的。

AquaSec报告说,其易受CVE-2022-0543影响的Redis蜜罐捕获了一个新的恶意软件,该恶意软件并没有被Virus Total上的安全软件检测到。

efbc2469f0829adc7eedc50bf0fc177e.jpeg

Redigo攻击

AquaSec说,Redigo攻击从6379端口的扫描开始,以定位暴露在开放网络上的Redis服务器。找到目标端点后,atacker连接并运行以下命令:

INFO - 检查Redis的版本,以确定服务器是否有CVE-2022-0543的漏洞。

SLAVEOF - 创建一个攻击服务器的副本。

REPLCONF - 配置从攻击服务器到新创建副本的连接。

PSYNC - 启动复制流并下载服务器磁盘上的共享库 "exp_lin.so"。

MODULE LOAD - 从下载的动态库中加载模块,该模块能够执行任意命令并利用CVE-2022-0543。

SLAVEOF NO ONE - 将有漏洞的Redis服务器转变成主服务器。

27ba2634ad17cfb3b226141c8275fedd.jpeg

利用植入后门的命令执行能力,攻击者收集主机的硬件信息,然后下载Redigo(redis-1.2-SNAPSHOT)。该恶意软件在升级权限后被执行。

攻击者通过6379端口模拟正常的Redis通信,以逃避网络分析工具的检测,同时试图隐藏来自Redigo的命令和控制服务器的流量。

由于AquaSec公司蜜罐的攻击时间限制,其分析师无法确定Redigo在环境中站稳脚跟后到底做了什么。

aaee786ff7583f941dbab12e64b33b4e.jpeg

AquaSec表示,Redigo的最终目标很可能是将易受攻击的服务器作为机器人加入网络,进行分布式拒绝服务(DDoS)攻击,或者在被攻击的系统上运行加密货币矿工。

此外,由于Redis是一个数据库,访问数据并窃取它也可能是Redigo攻击的目的。

参考来源:

https://www.bleepingcomputer.com/news/security/new-redigo-malware-drops-stealthy-backdoor-on-redis-servers/

本文转载自:「FreeBuf」,原文:https://url.hi-linux.com/5cp1c,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。

01ae121de6fa6be95442dfdb5087ea61.gif

最近,我们建立了一个技术交流微信群。目前群里已加入了不少行业内的大神,有兴趣的同学可以加入和我们一起交流技术,在 「奇妙的 Linux 世界」 公众号直接回复 「加群」 邀请你入群。

e67ca09bbaa5f2f9b37b603f72cc4cca.png

你可能还喜欢

点击下方图片即可阅读

3b9b89c73e270e222669d3c2bed0a6aa.jpeg

最懂中文的人工智能聊天机器人 ChatGPT 国内用户注册攻略(内附万能接码神技)

416fefb58909434ec4b77d2fcf5f86ab.png
点击上方图片,『美团|饿了么』外卖红包天天免费领

a749ddee5de1f49c7f07ab10b0f8f398.png

更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要导入Jedis和Socket相关的包: ```java import redis.clients.jedis.Jedis; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; ``` 然后,创建一个RedisSocket类,其中包括连接Redis的方法和执行Redis命令的方法: ```java public class RedisSocket { private String host; // Redis主机名 private int port; // Redis端口号 public RedisSocket(String host, int port) { this.host = host; this.port = port; } /** * 连接Redis */ public Jedis connect() { return new Jedis(host, port); } /** * 执行Redis命令 * * @param command Redis命令 * @return 执行结果 */ public String execute(String command) { Socket socket = null; BufferedReader in = null; PrintWriter out = null; try { // 创建Socket连接 socket = new Socket(host, port); // 创建输入输出流 in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(socket.getOutputStream(), true); // 发送Redis命令 out.println(command); // 读取Redis返回值 String result = in.readLine(); // 返回结果 return result; } catch (Exception e) { e.printStackTrace(); return null; } finally { try { if (in != null) { in.close(); } if (out != null) { out.close(); } if (socket != null) { socket.close(); } } catch (Exception e) { e.printStackTrace(); } } } } ``` 这个RedisSocket类支持连接单个Redis实例,也支持通过Socket连接Redis集群。可以通过connect方法获取一个Jedis对象,然后使用Jedis对象执行Redis命令;也可以使用execute方法直接执行Redis命令并获取返回值。 示例: ```java public class TestRedisSocket { public static void main(String[] args) { // 连接单个Redis实例 RedisSocket redisSocket = new RedisSocket("localhost", 6379); Jedis jedis = redisSocket.connect(); jedis.set("key", "value"); String result = jedis.get("key"); System.out.println(result); // 连接Redis集群 RedisSocket redisSocketCluster = new RedisSocket("localhost", 7000); String resultCluster = redisSocketCluster.execute("set key value"); System.out.println(resultCluster); } } ``` 这个例子中,首先连接了单个Redis实例,然后使用Jedis对象执行Redis命令,并获取返回值;然后连接了Redis集群,使用execute方法执行Redis命令,并获取返回值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值