Memcache未授权访问漏洞

  Memcached 分布式缓存系统,默认的 11211 端口不需要密码即可访问,黑客直接访问即可获取数据库中所有信息,造成严重的信息泄露。

0X00 Memcache安装

  1. 下载Mencache的windows稳定版,解压放某个盘下面

  2、在cmd命令界面)下输入 'memcached.exe -d install' 进行安装

  3、 启动 memcached.exe -d start。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。

0x01 漏洞验证

telnet 10.9.9.120

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

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

0x02 Python未授权访问脚本

 

#! /usr/bin/env python
# _*_  coding:utf-8 _*_
def Memcache_check(ip, port=11211, timeout=5):
    try:
        socket.setdefaulttimeout(timeout)
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((ip, int(port)))
        s.send("stats\r\n")
        result = s.recv(1024)
        if "STAT version" in result:
            print '[+] Memcache Unauthorized: ' +ip+':'+str(port)
    except Exception, e:
        pass
if __name__ == '__main__':
    Elasticsearch_check("127.0.0.1")                        

0x03 修复方案:

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

方案一:

  如果memcache没有在外网开放的必要,可在memcached启动的时候指定绑定的ip地址为 127.0.0.1。例如:

方案二:(注意:请谨慎配置iptables规则)

  如果memcache服务需要对外提供服务,则可以通过iptables进行访问控制,下面是只允许本机访问:

上述规则的意思是只允许192.168.0.2这个ip对11211端口进行访问。

 

参考链接:

Windows下的Memcache安装  http://kimi.it/258.html