MEMCACHE未授权访问漏洞利用及修复-泓源视野

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

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

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:

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... Connected to x.x.x.x. Escape character is '^]'. NC: ------------------------------------------------------------ local% nc -vv x.x.x.x 11211 found 0 associations found 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif en7 src x.x.x.x port 55001 dst x.x.x.x port 11211 rank info not available TCP aux info available Connection to x.x.x.x port 11211 [tcp/*] succeeded! stats items memcached agent v0.4 matrix 1 -> x.x.x.x:12000, pool size 1 matrix 2 -> x.x.x.x:12001, pool size 1 END

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

 11211/tcp open memcached | memcached-info: | Process ID 18568 | Uptime 6950 seconds | Server time Sat Dec 31 14:16:10 2011 | Architecture 64 bit | Used CPU (user) 0.172010 | Used CPU (system) 0.200012 | Current connections 10 | Total connections 78 | Maximum connections 1024 | TCP Port 11211 | UDP Port 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服务端口进行过滤。

 

参考链接:

 1. https://zh.wikipedia.org/wiki/Memcached 

2. https://github.com/memcached/memcached/wiki/Commands

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

4. http://blog.elijaa.org/2010/05/21/memcached-telnet-command-summary/

5. http://www.alphadevx.com/a/90-Accessing-Memcached-from-the-command-line

6. http://www.slideshare.net/sensepost/cache-on-delivery/13-Goals_Connect_to_memcached_Find

7. https://www.sensepost.com/blog/2010/blackhat-write-up-go-derper-and-mining-memcaches/

8. https://www.blackhat.com/docs/us-14/materials/us-14-Novikov-The-New-Page-Of-Injections-Book-Memcached-Injections-WP.pdf

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

本文由 泓源视野 作者:admin 发表,其版权均为 泓源视野 所有,文章内容系作者个人观点,不代表 泓源视野 对观点赞同或支持。如需转载,请注明文章来源。
2

发表评论

Protected with IP Blacklist CloudIP Blacklist Cloud
您是第8235966 位访客, 您的IP是:[173.245.54.228]