Redis遠端命令執行漏洞復現

2020-08-09 00:26:03

因爲圖牀上傳有些麻煩,所以本文沒有圖片,完整版請直接存取我的個人部落格,麻煩各位了!

因爲圖牀上傳有些麻煩,所以本文沒有圖片,完整版請直接存取我的個人部落格,麻煩各位了!

因爲圖牀上傳有些麻煩,所以本文沒有圖片,完整版請直接存取我的個人部落格,麻煩各位了!

前言

Redis簡介

Redis是一個高效能的key-value儲存系統,支援多種value型別,提供了Java, C/C++, C#, PHP, JavaScript, Perl, Object-C, Python, Ruby, Erlang等用戶端。

實驗環境

  • 攻擊機:Kali 192.168.227.128
  • 靶機:Kali 192.168.227.129
  • 影響範圍:Redis4.x、5.x

靶機安裝Redis包

  1. 下載Redis包:

    wget download.redis.io/releases/redis-4.0.11.tar.gz
    

    {% asset_img 001.png %}

  2. 解壓安裝包

    tar xzvf redis-4.0.11.tar.gz
    

    當前目錄下會出現一個名爲``redis-4.0.11`的資料夾。

  3. make安裝

    進入資料夾,在usr/local/redis目錄下安裝redis:

    make PREFIX=/usr/local/redis install
    

    之後命令列刷屏,等待一會後,出現如下提示,安裝結束:

    {% asset_img 002.png %}

  4. 檢查安裝是否有問題

    安裝命令列提示,輸入:

    make test
    

    等待一會兒,若出現以下提示,說明測試通過,安裝已完成:

    {% asset_img 003.png %}

  5. 拷貝原始碼中的redis.conf到/usr/local/redis中

    cp /redis-4.0.11/redis.conf /usr/local/redis
    
  6. 修改redis.conf

    進入/usr/local/redis目錄,開啓redis.conf,做出以下修改:

    • 找到未註釋的bind 127.0.0.1,並註釋掉
    • 修改protected-mode屬性爲no(可通過IP存取)
    • 修改daemonize屬性爲yes(標識redis以後台方式啓動)
  7. 伺服器端啓動服務

    進入/usr/local/redis/bin目錄下,執行如下命令:

    ./redis-server /usr/local/redis/redis.conf
    

    結果如下:

    {% asset_img 004.png %}

  8. 啓動用戶端連線並測試

    同樣在bin目錄下,執行如下命令:

    ./redis-cli
    

    結果如下:

    {% asset_img 005.png %}

攻擊

攻擊機中需要下載RedisModules-ExecuteCommandpoc

  1. 下載RedisModules-ExecuteCommand

    git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand.git
    

    然後進入RedisModules-ExcuteCommand目錄,直接make編譯:

    make
    
  2. 下載poc

    git clone https://s3.ap-northeast-1.wasabisys.com/img.tw511.com/202008/pp{% asset_img 006bzjmb0mbfio.png %}

  3. 安裝需要的庫

    我在執行redis.rce.py時,提示我缺少six這個庫,需要pip安裝。首先安裝pip:

    curl https://s3.ap-northeast-1.wasabisys.com/img.tw511.com/202008/pp{% asset_img 007lppjwnhnatf.png %}