Memcached是一套分布式的高速缓存系统。它以Key-Value(键值对)形式将数据存储在内存中,这些数据通常是应用读取频繁的。正因为内存中数据的读取远远大于硬盘,因此可以用来加速应用的访问。本文和大家分享的是Memcache中未授权访问漏洞利用及修复相关知识,希望对大家学习Memcache有所帮助。

  漏洞成因:

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

漏洞影响:

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

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

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

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

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

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

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

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

  … …

  漏洞利用:

  漏洞的利用根据所造成二次漏洞的不同,可在缓存变量中构造相应的payload。

  针对memcached未授权访问漏洞缓存数据的抓取,可使用 go-derper工具。

  注: memcached服务器基本操作及go-derper工具使用方法参见链接。

  漏洞攻击DEMO:

  http://niiconsulting.com/checkmate/2013/05/memcache-exploit/


  漏洞检测:

  1、登录机器执行netstat -an | more命令查看端口监听情况。回显0.0.0.0:11211表示在所有网卡进行监听,存在memcached 未授权访问漏洞。

  2、telnet IP 11211, 或 nc -vv11211,提示连接成功表示漏洞存在(telnet连接成功后是一个黑框,执行Memcached命令stats)。

memcache stats命令详解

参数 值 描述
pid 7862 memcache服务器进程ID
uptime 12617972 服务器已运行秒数
time 1320756409 服务器当前Unix时间戳
version 1.4.5 memcache版本
pointer_size 64 操作系统指针大小
rusage_user 1.731736 进程累计用户时间
rusage_system 251.421778 进程累计系统时间
curr_connections 41 当前连接数量
total_connections 848 Memcached运行以来连接总数
connection_structures 46 Memcached分配的连接结构数量
cmd_get 164377 get命令请求次数
cmd_set 58617 set命令请求次数
cmd_flush 0 flush命令请求次数
get_hits 105598 get命令命中次数
get_misses 58779 get命令未命中次数
delete_misses 0 delete命令未命中次数
delete_hits 0 delete命令命中次数
incr_misses 0 incr命令未命中次数
incr_hits 0 incr命令命中次数
decr_misses 0 decr命令未命中次数
decr_hits 0 decr命令命中次数
cas_misses 0 cas命令未命中次数
cas_hits 0 cas命令命中次数
cas_badval 0 使用擦拭次数
auth_cmds 0 认证命令处理的次数
auth_errors 0 认证失败数目
bytes_read 262113283 读取总字节数
bytes_written 460023263 发送总字节数
limit_maxbytes 536870912 分配的内存总大小(字节)
accepting_conns 1 服务器是否达到过最大连接(0/1)
listen_disabled_num 0 失效的监听数
threads 4 当前线程数
conn_yields 0 连接操作主动放弃数目
bytes 1941693 当前存储占用的字节数
curr_items 476 当前存储的数据总数
total_items 58617 启动以来存储的数据总数
evictions 0 LRU释放的对象数目
reclaimed 48830 已过期的数据条目来存储新数据的数目

  3、使用端口扫描工具nmap进行远程扫描:nmap -sV -p 11211 --script=memcached-info IP。

  11211/tcpopen memcached

  | memcached-info:

  | ProcessID 18568

  | Uptime 6950 seconds

  | Servertime SatDec 31 14:16:10 2011

  | Architecture 64 bit

  | UsedCPU (user) 0.172010

  | UsedCPU (system) 0.200012

  | Currentconnections 10

  | Totalconnections 78

  | Maximumconnections 1024

  | TCPPort 11211

  | UDPPort 11211

  |_ Authentication no

  漏洞修复:

  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服务端口 进行过滤。


参考:

http://blog.nsfocus.net/

http://blog.csdn.net/qq_32506555/article/details/53581809

http://gdd.gd/1072.html

https://www.cnblogs.com/Alight/p/3546400.html

memcached 常用命令及使用说明

Memcache未授权访问漏洞利用及修复的更多相关文章

  1. 真实本人亲测Elasticsearch未授权访问漏洞——利用及修复【踩坑指南到脱坑!】

    如要转载请注明出处谢谢: https://www.cnblogs.com/vitalemontea/p/16105490.html 1.前言 某天"发现"了个漏洞,咳咳,原本以为这 ...

  2. Redis未授权访问漏洞复现及修复方案

    首先,第一个复现Redis未授权访问这个漏洞是有原因的,在 2019-07-24 的某一天,我同学的服务器突然特别卡,卡到连不上的那种,通过 top,free,netstat 等命令查看后发现,CPU ...

  3. Memcache未授权访问漏洞

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

  4. ZooKeeper未授权访问漏洞确认与修复

    目录 探测2181 探测四字命令 用安装好zk环境的客户端连接测试 修复 修复步骤一 关闭四字命令 修复步骤二 关闭未授权访问 zookeeper未授权访问测试参考文章: https://www.cn ...

  5. rsync未授权访问漏洞利用

    漏洞描述:rsync是Linux系统下的数据镜像备份工具,使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他ssh,rsync主机同步.也就是说如果你可以连接目标IP的r ...

  6. JBOSS未授权访问漏洞利用

    1. 环境搭建 https://www.cnblogs.com/chengNo1/p/14297387.html 搭建好vulhub平台后 进入对应漏洞目录 cd vulhub/jboss/CVE-2 ...

  7. Memcache未授权访问漏洞简单修复方法

    漏洞描述: memcache是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以开放在外网的memcache服务很容易被攻击者扫描发现,通过命令交互可直接读取memcache中的敏 ...

  8. memcache 未授权访问漏洞

    memcache是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以开放在外网的memcache服务很容易被攻击者扫描发现,通过命令交互可直接读取memcache中的敏感信息. 修 ...

  9. [日常] 研究redis未授权访问漏洞利用过程

    前提:redis允许远程连接,不需要密码 1522057495.583846 [0 123.206.24.121:50084] "set" "dUHkp" &q ...

随机推荐

  1. BZOJ 1579 [Usaco2009 Feb]Revamping Trails 道路升级:dijkstra 分层图【将k条边改为0】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1579 题意: 给你一个无向图,n个点,m条边,每条边有边权w[i]. 你可以将其中的k(k ...

  2. linux 进程学习笔记-进程退出/终止进程

    <!--[if !supportLists]-->Ÿ <!--[endif]-->退出/终止进程 void _exit(int status) 与 void exit(int ...

  3. PowerDesigner根据SQL文件生成PDM数据字典

    当PowerDesigner不能直接连接到数据库的时候,可以用到下面这个方法生成数据字典(直接连接数据库生成数据字典在上次随笔中有介绍). 具体操作步骤截图: ↓↓↓这里选择的sql文件是从数据库导出 ...

  4. [Codeforces 452E] Three Strings

    [题目链接] https://codeforces.com/contest/452/problem/E [算法] 构建后缀数组 用并查集合并答案即可 时间复杂度 : O(NlogN) [代码] #in ...

  5. 数据结构与算法(4)----->链表、二分搜索

    1.  链表的基本概念 链表和数组一样都是一种线性结构; 数组是一段连续的存储空间; 链表空间不一定保证连续,是临时分配的; 链表的分类 按方向: 单链表:每个节点只能通过next指针指向下一个节点; ...

  6. uC/OS-II源码分析(一)

    下载地址:http://www.micrium.com/ 它的特点: 1)开源, 2)可移植性,绝大部分代码用C写,硬件相关部分用汇编写, 3可固化, 4)可剪裁,这通过条件编译实现,使用#defin ...

  7. bzoj 3872 [Poi2014]Ant colony——二分答案

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3872 可以倒推出每个叶子节点可以接受的值域.然后每个叶子二分有多少个区间符合即可. 注意一开 ...

  8. 【转】Pro Android学习笔记(九):了解Content Provider(下下)

    Content provider作为信息的读出,比较常见的还有文件的读写,最基础的就是二进制文件的的读写,例如img文件,音频文件的读写.在数据库中存放了该文件的路径,我们可以通过ContentPro ...

  9. ASP.NET Core依赖注入解读&使用Autofac替代实现【转载】

    ASP.NET Core依赖注入解读&使用Autofac替代实现 1. 前言 2. ASP.NET Core 中的DI方式 3. Autofac实现和自定义实现扩展方法 3.1 安装Autof ...

  10. js中push(),pop(),unshift(),shift()的用法

    js中push(),pop(),unshift(),shift()的用法小结   1.push().pop()和unshift().shift() 这两组同为对数组的操作,并且会改变数组的本身的长度及 ...