UCloud某处信息泄露可控制数万服务器

Feei <feei#feei.cn> 11/2017

0x01 漏洞入口

GSIL监测到一处敏感信息泄露,涉及UCloud的一些系统(设计运营系统、General Compute Operation Support System、通用计算平台运营系统、UGC平台的运营管理系统)的代码泄露。

https://github.com/s*******g/***

0x02 信息泄露

其中包含一些邮件账号密码

send_account := "***-noreply@ucloud.cn"  
send_password := "U**********3"  
host := "smtp.qiye.163.com:25"

发送邮件验证测试

数据库账号密码及其他配置信息

0x03 扩大影响

通过Cobra扫描了下泄露的源码,发现了几处SQL注入。

入参就是SQL,很是明显,而且未做任何权限认证。

http://106.***.***.***:***/query?q=show%20databases;
http://106.***.***.***:***/query?q=select+*+from+nginx_request+limit+200&db=nginx

0x04 再次扩大

再次翻了下Cobra扫描报告,发现更严重的问题。

Cobra发现了三对公私密钥(这次经验告诉我们,Cobra中为什么对于注释了的风险代码也作为漏洞或风险点的原因),本来是没想到能利用的,一般这类密钥都是限制内网调用的。

赫然发现密钥下面的API变量COMMON_API_URL = "https://api.ucloud.cn/?"是个外网地址,去翻了下UCloud API文档,发现确实是外网可调用的。

var (
	//      吴**
	//      PublicKey  = "mq0fPub*************************OVK98eW+vNYrNQ=="
	//      PrivateKey = "f7a576d87fc2***********4083f78f"

	//      孙**
	//      PublicKey      = "D/ze2*********************************yer0YOAFPg=="
	//      PrivateKey     = "de17af******************************12ab6a1dadd"

	//      ucvd 公用
	PublicKey  = "7vt40gcKGnT************************DF1ETwgsDt0hZgg=="
	PrivateKey = "3c45fd62b9*********************16d1117"

	COMMON_API_URL = "https://api.ucloud.cn/?"
)

通过使用公私钥构造UCloud API接口调用(Python版本SDK),测试验证得到以下信息(公私钥已失效,固图片不做打码处理)。

单个Region就有3000多台云主机。

可以管理地区数千台云主机。

意外的是,居然也有权限管理公有云上的服务器,拿了北京节点测试,能管理数千台机器。

挑了几个不影响业务的接口测试了下:

获取VNC密码

创建一台新主机

发送短信

理论上也能修改主机密码直至登陆服务器;服务器关机使所有服务中断;获取数据库权限拿到所有数据;管理其它产品(镜像、容器、监控、CDN等等)。

为避免影响,点到为止,不做进一步渗透,只是证明可以拿到数万台服务器的管理权限。

0x05 修复方案

漏洞已报告给CNCERT/乌云/补天或厂商且已修复完成,感谢厂商的重视及现金奖励。

披露漏洞细节是安全行业通行做法,若对披露有异议请联系feei#feei.cn进行隐藏厂商处理。