WebSockets是一项先进的技术,通过在用户浏览器和服务器之间打开交互式通信会话,实现了全双工异步通信。这种技术的应用广泛,尤其在实时更新方面,大大减少了对服务器的频繁HTTP请求,成为Web程序中的热门选择。
在一次授权的APP渗透测试中,我们发现目标系统采用WebSocket作为客服系统的通信方式。
通过测试不同功能,我们成功捕获到了一个名为”upload”的WebSocket接口,
进一步发现其中存在任意文件上传漏洞。令人担忧的是,该漏洞允许攻击者通过使用”../../”控制上传文件夹,并且文件名没有经过后端处理,不受强制改名的限制。
测试环境的特征为Linux操作系统、nginx服务器,以及各种前端框架的组合。虽然我们尚未发现框架漏洞,也没有找到各个语言后端的后门,但WebSocket的任意文件上传漏洞为我们提供了攻击的突破口。
尽管考虑过通过上传HTML文件构造XSS攻击,
但是该站点采用了授权机制,限制了XSS的有效性。因此,我们决定利用上传功能,将文件位置定向至定时任务文件,从而实现服务器权限的获取。
利用过程:
- 控制文件上传位置到定时任务处
通过上传文件时的”../../../../../../../var/spool/cron/root”,我们成功将文件上传位置指向了定时任务目录。这为后续的攻击奠定了基础。
- 上传反弹Shell
接下来,我们上传了一个包含反弹Shell的文件,准备在服务器上执行我们的恶意操作。
- 监听反弹Shell
使用nc命令监听上传的Shell,静待一分钟,为服务器执行所需的操作争取时间。
- 成功获取Shell
最终,我们成功获取了服务器的Shell权限,从而打开了一扇通向系统内部的大门。
这次攻击案例凸显了WebSocket在安全性方面的弱点,尤其是任意文件上传漏洞的严重性。为了提高系统的安全性,我们建议对WebSocket接口进行深入审查,并及时修复潜在的安全隐患。同时,加强对用户上传文件的处理,限制上传路径和文件名,以有效防范类似攻击。
暂无评论内容