(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、telnet11211,或nc -vv11211,提示连接成功表示漏洞存在。
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
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 。
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