码迷,mamicode.com
首页 > 编程语言 > 详细

SVN弱密码扫描(Python)

时间:2015-07-27 18:36:18      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

寂寞如雪的用脑过度,所以来写个博客分享一下。#虽然上一篇博客我还没写完

 

SVN的弱密码,看起来很复杂,但实际上很简单啊= =虽然不像pymssql/mymssql这种,Python提供了很好用的包,但如果了解其中的原理就很简单了~~

 

0x00 基本认知

首先要知道如下图所示的认证方式是什么认证:

技术分享

这个涉及到HTTP认证方式,具体可以参考 http://blog.csdn.net/samlei/article/details/5485305

SVN用了最简单的Basic Auth。Basic Auth的利用非常广泛,比如Phpmyadmin的http认证方式,nodejs express框架里的basic-auth的插件等等。

 

0x10 判断当前请求是否需要认证

如果当前请求要求认证,在浏览器中,会弹出如上图所示的窗口,那如果在脚本中,如何判断?可以通过HTTP Response的头来验证:

import requests

res = requests.get(https://test.com/myspace, verify=False)
print res.headers

可以看到头部中包含了下面这个字段:

www-authenticate: Basic realm=" Subversion"

 

0x20 如何认证

针对basic-auth有两种方法:

1. 在HTTP头中添加Authorization

Authorization: "Basic 用户名和密码的base64加密字符串"

2. url中添加用户名和密码

http://user:password@test.com

 

0x30 python Requests中的认证模块

在写这篇博客,查资料的过程,发现了神器requests竟然包含了认证模块。#虽然0x20中提到的认证方式也很简单。

import requests
from requests.auth import HTTPBasicAuth
 
r = requests.get(https://httpbin.org/hidden-basic-auth/user/passwd, auth=HTTPBasicAuth(user, passwd))
# r = requests.get(‘https://httpbin.org/hidden-basic-auth/user/passwd‘, auth=(‘user‘, ‘passwd‘))    # 简写
print(r.json())

 

0x40 最终代码

   def svn_busrt(self, url, user, password):
        try:
            res = requests.get(https://+user+:+password+@+url, verify=False, timeout=30)
        except Exception, e:
            print Fore.RED + "Connection Error"
            self.count += 1
            return

        if res.status_code == 200:
            print Fore.GREEN + "[+] Success! %s\t%s:%s" % (url, user, password)
            result_list.append([user, password])

 

SVN弱密码扫描(Python)

标签:

原文地址:http://www.cnblogs.com/kuoaidebb/p/4680604.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!