导语:CVE-2017–5638利用代码在网上传播了三周后,白帽子发现雅虎某子域名上还存在该漏洞。
我一直都认为分享精神是可贵的,我过去从很多安全领域大牛的漏洞报告中学到了很多知识,所以我决定将我找到的漏洞经历进行分享,希望能够帮助到一些刚刚开始挖洞的白帽子们。
就像之前爆出来的Struts2高危漏洞(CVE-2017–5638),由于攻击条件比较简单,导致了众多Web应用程序沦陷。
在该漏洞的exp爆出来三周之后,我在渗透过程中发现了这个链接:
https://svdevems01.direct.gq1.yahoo.com/sm/login.jsp
这是雅虎使用的一个登录界面。
于是我尝试寻找这个页面的漏洞,直到我找到了这个页面:
https://svdevems01.direct.gq1.yahoo.com/sm/login/loginpagecontentgrabber.do
因为后缀名是.do,所以我认为这个页面正在运行Struts2。我一般会认为后缀名是.do、.action、.go都是使用Struts2的标志。
因为exp已经发布出来了,所以可以很简单的进行利用。不过对于这个目标,我们的exp并没有成功。尽管我确定他一定是存在这个漏洞的,这就意味着目标存在waf或者一些动作阻止我的攻击。
因为目标一定是可以被攻击的,我不可能在这一步停止测试,一定要提交一个可以使用的poc才可以对漏洞进行报告。经过一些搜索之后我在推特上找到了一个exp可以绕过waf,进行攻击。
我找到的这个exp的绕过方法是通过使用”Content-Type”HTTP头部发送一个特定的数据包,这个http头如下:
Content-Type: %{#context[‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’].addHeader(‘X-Ack-Th3g3nt3lman-POC’,4*4)}.multipart/form-data
这个poc是请求web服务器将两个数字进行相乘,当然,你可以将这个操作换成任意代码进行攻击。在上面的例子中,我使用的两个数字是4,并且web服务器返回的值为16,这就说明这个服务器是可以进行攻击的。
下图中,返回头部就会添加‘X-Ack-Th3g3nt3lman-POC: 16’
在我报告这个漏洞三十分钟后,雅虎进行了确认,并且将这一服务进行下线,之后进行了修复。我得到了5500美元的奖励。