正文
可以通过 netcat 或者 nmap script 检测。
利用暂略。
漏洞成因
由于 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工具使用方法参见链接。
检测指南(无服务器权限)
|
|
Nmap NSE script
|
|
-n 不做反向DNS解析,以加快扫描速度
|
|
常见 memcached 协议的命令
http://securityer.lofter.com/post/1d0f3ee7_79e25bb
|
|
检测指南(有服务器权限)
|
|
登录机器执行 netstat -an | more
命令查看端口监听情况。回显0.0.0.0:11211表示在所有网卡进行监听,存在memcached未授权访问漏洞。
漏洞修复
1、配置 memcached 监听本地回环地址 127.0.0.1。
|
|
2、当 memcached 配置为监听内网IP或公网IP时,使用主机防火墙(iptalbes、firewalld等)和网络防火墙对 memcached 服务端口进行过滤。
|
|
参考资料
http://blog.nsfocus.net/memcache-unauthorized-access-exploit/
http://niiconsulting.com/checkmate/2013/05/memcache-exploit/