zoukankan      html  css  js  c++  java
  • Memcached 未授权访问漏洞及加固

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

    漏洞成因:

    由于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  <target>  11211, 或 nc -vv  <target>  11211,提示连接成功表示漏洞存在。

        TELNET:
     
            ------------------------------------------------------------
     
            local% telnet x.x.x.x 11211
     
            Trying x.x.x.x...
     
            Connectedto x.x.x.x.
     
            Escapecharacteris '^]'.
     
            
     
            NC:
     
            ------------------------------------------------------------
     
            local% nc -vv x.x.x.x 11211
     
            found 0 associations
     
            found 1 connections:
     
                1: flags=82<CONNECTED,PREFERRED>
     
            outifen7
     
            src x.x.x.x port 55001
     
            dst x.x.x.x port 11211
     
            rankinfonot available
     
            TCPauxinfoavailable
     
            
     
            Connectionto x.x.x.x port 11211 [tcp/*] succeeded!
     
            statsitems
     
            memcachedagentv0.4
     
            matrix 1 -> x.x.x.x:12000, poolsize 1
     
            matrix 2 -> x.x.x.x:12001, poolsize 1
     
            END
    3、使用端口扫描工具nmap进行远程扫描:nmap -sV -p 11211 –script memcached-info <target>。

            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 #重启服务 (可能会提示11211端口被占用,这时候需要kill对应11211占用的Pid)
    2、当memcached 配置为监听内网IP或公网IP时, 使用主机防火墙(iptalbes、 firewalld等)和 网络防火墙对memcached服务端口 进行过滤。

  • 相关阅读:
    汉诺塔实现笔记
    python-nmap的函数学习
    字符串匹配的KMP算法(转)
    QT下的贪吃蛇
    PentestBox在win10里打不开工具
    Dalvik虚拟机执行流程图
    用dx生成dex时遇到class name does not match path
    python3 小工具
    python3的Cryptodome
    前端学习笔记 day02 CSS
  • 原文地址:https://www.cnblogs.com/sign-ptk/p/6294285.html
Copyright © 2011-2022 走看看