热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

通过WordPress的XMLRPC进行暴力放大攻击

暴力攻击是如今仍能在互联网上见到的最古老且最常见的攻击类型之一。倘若你有一台在线服务器,它很有可能正在遭受这种攻击。这种攻击可能会通过像SSH或FTP一样的协议进行。当然,如果它是一台Web服务器,这

t01572bd6fa81f04fc3.jpg

暴力攻击是如今仍能在互联网上见到的最古老且最常见的攻击类型之一。倘若你有一台在线服务器,它很有可能正在遭受这种攻击。这种攻击可能会通过像SSH或FTP一样的协议进行。当然,如果它是一台Web服务器,这可能会通过基于Web的暴力测试对你任何的CMS进行攻击。

这些攻击往往并不复杂,在理论上很容易缓解并阻止,但它们依然会发生并且能够成功。这主要是因为人们在选择一个较好的密码时都会犯糊涂,或者并没有一个良好的访问控制习惯。简单来说,暴力攻击不太好的地方在于它使得攻击者太过暴露了。习惯上,若想尝试500个不同的密码,攻击者需要进行500次不同的登陆尝试。每一次向服务器发送的请求都代表了攻击者与尝试登陆之间一对一的关系。通过设计登陆过程,攻击者的每一次登陆尝试都会被记录,一旦尝试次数过多就会被阻止登陆,这大大简化了攻击缓解方法。

暴力放大

假如攻击者可以隐藏得更好会怎么样?假如攻击者能够使他和众多登陆尝试之间存在一对多的关系会怎样呢?试想一下,一次请求就能够尝试500个密码的情况。

想象这样一个世界,在这个世界里攻击者以某种方式将暴力攻击放大导致传统的缓解策略失效。不必去请求500次登陆尝试,攻击者可以将尝试次数减小到20或50次,同时能够保证在一次请求中测试了500个甚至上千个密码。正如你所想的,这可能让现有的缓解策略难以奏效。

这有点类似于我们在新闻中听到的DDoS放大攻击,一台单一的服务器可以利用像DNS或NTP协议响应放大的方法来让自身的攻击力提高50或者100倍以上。

任何类型的放大方法都会让攻击者更容易地发动这样的攻击。

通过WordPress的XML-RPC进行暴力放大攻击

XML-RPC中的一个隐藏的特性就是你可以使用system.multicall方法在一次请求中执行多个方法。这是非常有用的,因为它允许应用程序在一次HTTP请求中传递多个命令。

XML-RPC是一个简单的、可移植的、通过HTTP协议进行远程过程调用的方式。它可用于Perl,Java,Python,C,C++,PHP等多种编程语言。WordPress,Drupal等多数内容管理系统都支持XML-RPC。

但要记住,任何被用于便利的特性,都有可能在某些地方被用来搞破坏。

这就是XML-RPC发生的事情。

实际上,我们在这几个星期(第一次攻击发生在2015年9月10日)一直在跟踪,这种攻击方式变得越来越流行。攻击者并不针对wp-login.php(它可以很容易地通过.htaccess进行阻止或者保护),他们也不是通过xmlrpc进行单一的密码破解,取而代之的是他们利用system.multicall方法在一次HTTP请求中就能够尝试数以百计的密码。

是的,在一次HTTP请求中就能够进行数以百计的登陆尝试。想想在你的Log文件中看到了这样的情况(你没看错,就这一条):

194.150.168.95 – – [07/Oct/2015:23:54:12 -0400] "POST /xmlrpc.php HTTP/1.1" 200 14204 "-" "Mozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:1.7.5) Gecko/20041108 Firefox/1"

你会猜到这样的日志是在进行着数百次的密码尝试吗?仅有3个或者4个HTTP请求,攻击者就能够尝试上千个密码,这绕过了旨在发现并阻止暴力攻击的安全工具。

我们看到了大多数攻击者都是利用wp.getCategorie方法进行攻击。这个方法需要提供用户名和密码。请求看起来像这样:

system.multicall
methodNamewp.getCategories
params
admindemo123
..
methodNamewp.getCategories
params
admin
site.com

如果有任意一条帐号/密码组合成功,WordPress(XML-RPC)就会做出相应的回应(在这个例子中,攻击者尝试了admin/demo123和admin/site.com密码组合):

[{‘faultCode': 403, ‘faultString': ‘Incorrect username or password.‘}, {‘faultCode': 403, ‘faultString': ‘Incorrect username or password.‘}, {‘faultCode': 403, ‘faultString': ‘Incorrect username or password.’}, {‘faultCode': 403, ‘faultString': ‘Incorrect username or password.’}, {‘faultCode': 403, ‘faultString': …
[[{‘url': ‘http://site.com/wordpress/’, ‘isAdmin': True, ‘blogid': ‘1’, ‘xmlrpc': ‘http://site.com/wordpress/xmlrpc.php’, ‘blogName': ‘wpxxx’}]]]

尽管我们只看到了wp.getCategories方法,任何需要认证的方法都可以被使用,只是wp.getCategories方法不会对攻击者做过多的限制。这里有一份需要身份认证方法的列表:

wp.getUsersBlogs, wp.newPost, wp.editPost, wp.deletePost, wp.getPost, wp.getPosts, wp.newTerm, wp.editTerm, wp.deleteTerm, wp.getTerm, wp.getTerms, wp.getTaxonomy, wp.getTaxonomies, wp.getUser, wp.getUsers, wp.getProfile, wp.editProfile, wp.getPage, wp.getPages, wp.newPage, wp.deletePage, wp.editPage, wp.getPageList, wp.getAuthors, wp.getTags, wp.newCategory, wp.deleteCategory, wp.suggestCategories, wp.getComment, wp.getComments, wp.deleteComment, wp.editComment, wp.newComment, wp.getCommentStatusList, wp.getCommentCount, wp.getPostStatusList, wp.getPageStatusList, wp.getPageTemplates, wp.getOptions, wp.setOptions, wp.getMediaItem, wp.getMediaLibrary, wp.getPostFormats, wp.getPostType, wp.getPostTypes, wp.getRevisions, wp.restoreRevision, blogger.getUsersBlogs, blogger.getUserInfo, blogger.getPost, blogger.getRecentPosts, blogger.newPost, blogger.editPost, blogger.deletePost, mw.newPost, mw.editPost, mw.getPost, mw.getRecentPosts, mw.getCategories, mw.newMediaObject, mt.getRecentPostTitles, mt.getPostCategories, mt.setPostCategories

以下是我们已经看到专门针对XML-RPC的system.multicall方法的攻击图例,这些均属于暴力攻击尝试。请记住,每一次请求都可以表示100次的攻击,而不仅仅是1,000次的帐号/密码暴力尝试。通过一些简单的计算,你就会明白攻击的规模和其潜在的影响。

t01a3f35ad22bcea1d4.jpg

保护自己

我曾建议人们阻止任何对xmlrpc.php的访问,但这会影响一些插件的功能(尤其是JetPack)。考虑到这一点,如果你没有用到JetPack插件或者任何使用到XML-RPC的插件,阻止外界对它的直接访问可能是一个很好的办法。

如果你不能对XML-RPC做限制,你若是在用着WAF的话,我十分建议在WAF中阻止对system.multicall的请求。这个方法很少被外界调用,阻止它会保护你的应用免受这些放大方法的攻击。

请注意,我们的WAF用户已经受到了保护。因此,如果你在用着CloudProxy,你的应用就是安全的。


推荐阅读
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 【Python 爬虫】破解按照顺序点击验证码(非自动化浏览器)
    #请求到验证码base64编码json_img_datajson_raw.get(Vimage)#获取到验证码编码 #保存验证码图片到本地defbase64_to_img(bstr ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • 原因:在vm上装7.9到sp3,打补丁到1644,再往后别打了,就打就打不开终端了,这个是java安全问题,以下只是终端的一些命令,记录一下:在系统下查看当前的串口:lsdev-C ... [详细]
  • linux6.5 配置邮件服务,centos 6.5服务器搭建邮件服务postfix和dovecot
    centos6.5搭建邮件服务postfix和dovecot------------------------------------------------安装DNS指定邮件交换记 ... [详细]
author-avatar
蛋狗酱_972
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有