关于WordPress xmlrpc.php Pingback缺陷与SSRF攻击

前两天我因为web2hack.org挂了,而分析到原因(SAE云豆被刷尽:http://evilcos.me/?p=199),当时有些思路,想追踪下去,不过不明确,后来发现WordPress最新版3.5.1出来了,我看到官方说修补了几个安全问题(http://codex.wordpress.org/zh-cn:3.5.1_%E7%89%88%E6%9C%AC),其中有一条引起我的注意:

通过Pingback实现的服务器端请求伪造 (Server-side request forgery,SSRF)和远程端口扫描。 此漏洞是由Wordpress安全团队修复的。

追查下去,发现这个WordPress漏洞至少几个月前就在被大范围使用,2013-01-25被上报后,在最新发布的3.5.1版本修补了:https://bugzilla.redhat.com/show_bug.cgi?id=904120

Acunetix WVS团队在去年12月的一篇博文就对这个漏洞进行了描述,很清晰:http://www.acunetix.com/blog/web-security-zone/wordpress-pingback-vulnerability/
这篇博文中给出了如何证明这个漏洞是否存在的截图,我用fiddler的Composer组件进行了相关模拟,不过测试不完备,没达到我希望看到的效果,为了更好的了解为什么是这样测试,我查到了WordPress XML-RPC Pingback API:http://codex.wordpress.org/XML-RPC_Pingback_API,而且还有一份专门描述Pingback 1.0标准的文档:http://www.hixie.ch/specs/pingback/pingback#TOC3,大家可以对照了解,弄清楚请求与响应的数据格式,这样能更清晰了解这个漏洞。
还有一个ruby写的POC,过一遍源码就更清晰了,我没实际运行,也许有bugs:https://github.com/FireFart/WordpressPingbackPortScanner

至于衍生出来的SSRF攻击,Alexander的papers不错:
https://docs.google.com/document/d/1v1TkWZtrhzRLy0bYXBcdLUedXGb9njTNIJXa3u9akHM/edit#
http://www.slideshare.net/d0znpp/ssrf-attacks-and-sockets-smorgasbord-of-vulnerabilities
简单描述下SSRF:利用这个漏洞,可以从漏洞服务器发出伪造的请求到目标服务上,目标服务可以是内网的各类服务,可以使用不一样的协议,并根据回显来判断攻击是否成功(如果是盲打的话,就不用回显了:))。

回头想下,这次我的SAE云豆被刷透(负值),SAE作为云服务厂商是否有责任呢?几十元RMB就这样无声无息没了,虽然漏洞是WordPress的,但是SAE没足够好的默认预警服务或安全服务(注意我说的是:默认)与应急响应服务,需要承担责任,我估计不仅是我,N多在SAE上的WordPress可能都被这样攻击了,这类攻击我初步判断不是针对性的,而是大规模的攻击,SAE暴露出来的日志无法知道攻击具体payload(POST请求),大家共同注意吧。

如果SAE技术同学看到这篇文章,联系我?http://weibo.com/evilcos

更新下:知道创宇安全研究团队在1月初就跟进了这个问题,不过没引起足够重视,这次我自己被搞了,也就更加重视了:(
继续更新团长给了我这次大规模攻击的样本payload,会让目标服务器请求那个巨大的iso,直接导致拒绝服务:

POST http://xxxx.com/xmlrpc.php HTTP/1.0
Host: xxxx.com
Connection: close
User-Agent: xmlrpclib.py/1.0.1 (by www.pythonware.com)
Content-Type: text/xml
Content-Length: 384

<?xml version='1.0'?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
...暂时不公开...
</params>
</methodCall>

by 知道创宇安全研究团队 余弦

3 comments

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据