memcache未授权访问

memcache是国外社区网站Live Journal的开发团队开发的高性能的分布式内存缓存服务器。

一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高扩展性。

memcache的默认端口是11211,不需要密码即可访问,黑客直接访问即可获取数据库中所有信息,造成严重的信息泄露。

漏洞验证

利用telnet 探测目标11211端口

telnet xx.xx.xx.xx 11211

无需用户名密码,可以直接链接memcache服务的11211端口。

stats //查看memcache 服务状态 
stats items //查看所有items 
stats cachedump 32 0 //获得缓存key 
get :state:264861539228401373:261588 //通过key读取相应value ,获得实际缓存内容,造成敏感信息泄露

memcache未授权访问_第1张图片

实际应用

使用treesoft数据库管理系统连接memcache数据库。

memcache未授权访问_第2张图片

 修复方案

memcache无权限控制功能,所以需要对访问来源进行限制。

1.配置访问控制

建立iptables规则,只允许某一ip对memcache的端口进行访问。

iptables -A INPUT -p tcp -s 192.168.0.2 —dport 11211 -j ACCEPT

2.绑定监听ip

memcache如果没有开在外网的必要,可以在memcache启动时绑定ip地址为127.0.0.1.

memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid

3.最小化权限运行

使用普通账号运行,指定memcache用户运行

memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid

4.修改默认端口

修改默认11211监听端口为其他端口

memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11222 -c 1024 -P /tmp/memcached.pid

5.备份数据

为避免数据丢失,升级前做好备份,或ECS建立硬盘快照。

 参数说明:

-d选项是启动一个守护进程;

-m是分配给Memcached使用的内存数量,单位是MB;

-u是运行Memcached的用户,推荐单独普通权限用户:memcached,不要使用root权限账户;

-l是监听的服务器IP地址;

-p是设置Memcached监听的端口,最好是1024以上的端口;

-c选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定;

-P是设置保存Memcached的pid文件,这里是保存在 /tmp/memcached.pid;

 

 

 

 

 

 

你可能感兴趣的:(漏洞)