zoukankan      html  css  js  c++  java
  • SVN弱密码扫描(Python)

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

    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	%s:%s" % (url, user, password)
                result_list.append([user, password])
  • 相关阅读:
    JDBC 基本语法总结
    MySQL 基本语法
    mysql学习第三天练习(日期和时间函数)
    mysql学习第三天练习(流程控制函数)
    mysql学习第三天笔记
    mysql学习第二天函数
    mysql学习第一天select
    mysql学习第一天
    Java石头剪刀布小游戏
    Java万年历
  • 原文地址:https://www.cnblogs.com/kuoaidebb/p/4680604.html
Copyright © 2011-2022 走看看