从XSS到SSRF

作者:Poseidon@ArkTeam

XSS(Cross Site Scripting,跨站脚本)与SSRF(Server-Side Request Forgery,服务器端请求伪造)都是Web安全中常见的漏洞。一般地,XSS被认为会对客户端产生影响;而SSRF被认为会对Web服务器端产生影响。但是,在某些情况下,XSS会进一步得引发SSRF,此时客户端的安全隐患转换为服务器端的安全隐患。下面我们通过一种具体的场景来阐述如何从XSS到SSRF。

网站提供将用户输入的文字与一张背景图片结合的功能,最终生成一张个性化的图片,如图1所示。渗透测试者对该网站进行分析,发现网站未对用户输入进行过滤,因此存在XSS漏洞。进一步尝试后发现无论如何构造用户输入,浏览器得到的都只是一张图片,不同的是图片中会包含了不同的网页元素(图2)。


图1 生成自定义图片功能

图2 生成的图片中包含img错误

该Web服务的实际原理是调用了PhantomJS(一个无界面、可脚本编程的WebKit浏览器引擎),将用户输入与图片形成一个网页,最终将页面截图并返回给用户。此时,进一步地构造输入,就能利用PhantomJS解析执行并对内网的服务进行探测(图3)。


图3 探测内网服务

在整个过程中(图4),由于JS执行的环境从客户端的浏览器转移到了服务器端的PhantomJS,因此传统的XSS演变成了SSRF,危害性也极大地提高。


图4 整体流程示意图

发表评论

电子邮件地址不会被公开。 必填项已用*标注