memcached-vulnerabilities.png

在最近Memcache服务被利用发动反射型DDoS攻击事件之后,我想到了之前我发现的一例Memcache相关的赏金漏洞,这是一个价值$2500美金的Pornhub网站Memcache漏洞,该漏洞已作为典型,被收录在Peter Yaworski出版的新书《Web Hacking 101》之中。漏洞发现过程很简单,只是一条Nmap扫描命令,但就是这样,只要你能认真仔细,总能发现些什么。

漏洞介绍

难度级别: 低

涉及网站: stage.pornhub.com

漏洞提交地址: https://hackerone.com/reports/119871

漏洞提交日期:2016.3.1

漏洞赏金:$2500美金

前期分析

和大多数漏洞分析和渗透测试一样,对目标范围的前期踩点侦查是必须过程,这里Pornhub给出的测试范围是:

*.pornhub.com

哦,竟然是所有相关域名,这种宽泛的范围真是太好了!配合我的超强百万子域名组合字典,拿出以下DNS工具,来一通子域名扫描。

Sublist3r

Fierce

Enumall

长话短说,不一会工夫,我就收获了将近90个域名,接下来要做的就是用Eyewitness对这些子域名进行资产识别,通过一个URL列表,Eyewitness可自动查询URL对应网站的截图、RDP服务、Open VNC服务器以及一些服务器头部的信息、甚至是可识别的默认凭据等,最终会生成一个详细的html报告。

偶然的端口发现

之后,我用NMAP对一个选定域名stage.pornhub.com进行探测,发现它上面开放了多个端口,这让我非常感兴趣,在使用nslookup命令查看后,发现了其对应IP:

nslookup stage.pornhub.com

Server:         8.8.8.8

Address:        8.8.8.8#53

Non-authoritative answer:

Name:   stage.pornhub.com

Address: 31.192.117.70

好吧,有了IP地址,我们继续来开干吧:

nmap -sSV -p- 31.192.117.70 -oA stage_ph -T4 &

Starting Nmap 6.47 ( http://nmap.org )

 Nmap scan report for 31.192.117.70

 Host is up (0.017s latency).

 Not shown: 65532 closed ports

 PORT    STATE    SERVICE      VERSION

 80/tcp  open     http         nginx

 443/tcp open     http         nginx

 60893/tcp open   memcache

Service detection performed. Please report any incorrect results at  http://nmap.org/submit/ .

 Nmap done: 1 IP address (1 host up) scanned in 22.73 seconds

看到结果了嘛,60893端口对应的memcache是什么鬼?利用github wiki对其了解之后,我对其执行命令和相关信息有了一些认识。

漏洞发现

Memcache是一个高性能的分布式的内存key-value对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、API调用、文件渲染以及数据库检索等结果。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。目前该服务被大量运用于各种云服务中,用于对网站系统进行加速。

这意味着什么呢? 但是有一点,这种服务端口肯定不能暴露在互联网上啊!不如,我连上去看看如何。

好吧,用netcat直连个试试:

nc 31.192.117.70 60893 -v

version

VERSION 2.1.1r-49-gbe05158

stats

STAT pid 8141

–SNIP–

STAT evictions 0

END

我保证没有恶意,仅只是进行了几个简单的命令测试而已。由于该memcache服务能正常响应执行命令,比如能执行某些系统清除命令并可导致溢出错误,因此,我决定赶紧把它上报给Pornhub。最终,获得了Pornhub官方$2500美金奖励。

*参考来源:zsec,FreeBuf小编clouds编译