• memcache未授权访问漏洞


    一、memcache

    漏洞描述:memcached是一套分布式的高速缓存系统。它以Key-Value(键值对)形式将数据存储在内存中,这些数据通常是应用读取频繁的。正因为内存中数据的读取远远大于硬盘,因此可以用来加速应用的访问。由于memcached安全设计缺陷,客户端连接memcached服务器后无需认证就可读取、修改服务器缓存内容。

    二、手工验证

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

    一般端口11211

     1 Xshell:> telnet 219.94.193.*** 11211
     2 
     3 
     4 Connecting to 219.94.193.***:11211...
     5 Connection established.
     6 Escape character is '^@]'.
     7 stats
     8 STAT pid 2259
     9 STAT uptime 20493827
    10 STAT time 1513170227
    11 STAT version 1.2.6
    12 STAT pointer_size 32
    13 STAT rusage_user 501.860705
    14 STAT rusage_system 482.892589
    15 STAT curr_items 3
    16 STAT total_items 4
    17 STAT bytes 1503803
    18 STAT curr_connections 5
    19 STAT total_connections 362
    20 STAT connection_structures 7
    21 STAT cmd_get 1569
    22 STAT cmd_set 4
    23 STAT get_hits 1569
    24 STAT get_misses 0
    25 STAT evictions 0
    26 STAT bytes_read 1515293
    27 STAT bytes_written 1185375980
    28 STAT limit_maxbytes 67108864
    29 STAT threads 4
    30 END

    漏洞利用

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

    不同的是,在处理前端用户直接输入的数据时一般会接受更多的安全校验,而从memcached中读取的数据则更容易被开发者认为是可信的,或者是已经通过安全校验的,因此更容易导致安全问题。

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

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

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

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

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

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

    修复:

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

    1 [root@local ~]# vim /etc/sysconfig/memcached
    2 OPTIONS="-l 127.0.0.1"  #设置本地为监听
    3 [root@local ~]# /etc/init.d/memcached restart #重启服务

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

    3、最小化权限运行

    使用普通权限账号运行,以下指定memcached 用户运行

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

    4、配置账户、密码

  • 相关阅读:
    ASP.NET批量下载服务器端指定目录文件
    在腾讯云(windows)上搭建node.js服务器
    让站点支持MarkDown语法~(转)
    7-21 JSLINT格式规范工具 Bootstrap组件图标用font-size设置
    JS中的常量
    HTML基础篇(标签和属性整--已剔除不被浏览器支持的部分)
    7-20 jquery遍历节点,bootstrap模态框绑定事件和解绑,mock.js,model.urlroot,id,打基础
    Bootstrap3 多个模态对话框无法显示的问题
    JS题目合集---新技术层出不穷,打好基础才是上策~
    react,react native,webpack,ES6,node.js----------今天上午学了一下node.js
  • 原文地址:https://www.cnblogs.com/KevinGeorge/p/8034936.html
Copyright © 2020-2023  润新知