穷举篇
概述
穷举就是枚举的意思,在互联网的今天,需要使用某种的服务,大多数都需要口令登录,这个口令就是密码,密码的强度分为,弱口令 、中度口令、强度口令。如果登录的服务为弱口令,那会存在很大的安全隐患,黑客通过穷举弱口令对服务进行攻击,很容易就得到登录密码。得到密码之后就能登录服务,进行其他危害较大得操作。黑客也能通过对用户得信息整理,组合密码进行穷举攻击。例如根据用户的生日号码,出身年月日和姓名进行口令组合,再对其服务进行穷举。
常见的服务
服务 | 端口 |
---|---|
FTP | 21 |
ssh | 22 |
telent | 23 |
smtp | 25 |
dns | 53 |
web | 80 |
pop3 | 110 |
rpc | 135 |
NETBIOS | 139 |
imap | 143 |
http | 443 |
smb | 445 |
smtps | 465 |
rsync | 873 |
pop3s | 995 |
Microsoft SQL Server | 1433 |
oracle | 1521 |
mysql | 3306 |
远程终端rdp | 3389 |
PostgreSQL | 5432 |
redis | 6379 |
tomcat | 8080 |
memcached | 11211 |
mogodb | 27018 |
cobaltstrike teamserver | 50050 |
burp suite穷举后台密码
我们使用burp+火狐对后台进行穷举
我们对登录的信息进行拦截
发送到intruder跑字典进行穷举
start后我们观察结果
这个状态和长度与众不同的很可能就是我们需要的正确密码
admin 123456 成功登录
burp suite穷举webshell密码
灰帽子对网站攻破后,一般会留后门方便对其网站进行非法管理。后门的程序语音包括 asp php .net 这些脚本文件放在网站目录, 一般都采用单密码进行登录。通过扫描获取 webshell 的后门的网址。得到网址后可以对其进行密码穷举。
我们这里准备了asp和aspx俩个webhell
跟上面没啥不同不演示了
登陆后是几个大马
token防御的网站后台穷举密码
有的网站后台存在 token 值,这个 token 通俗的名字叫令牌,每次刷新页面都会随机变化。提交请求时必须携带这个 token 值,可以利用这点避免后台进行直接穷举和防止 csrf 攻击。
这个值随机变化,如果我们直接抓包跑字典会报错
burp suite 设置宏获取 token 对网站后台密码破解
我们通过设置一个宏操作来动态的获取更改token
选择后跳转到设置宏的界面
我们增加宏操作
选择好界面后我们来设置configure,从而得到并更改我们intruder里面的token值
之后ok
再ok到
再箭头位置我们可以test我们的宏操作是否能获取到token值,再response里看token值是否变化
就不演示了
ok ok即可
再这里我们可以设置宏覆盖的范围
设置完毕之后我们开始跑字典
刚开始跑发现所有都是302,无法判断
我们设置这
然后再跑
显然这个就是密码了
每一个token也不一样,再次验证了我们的宏执行了
编写脚本获取 token 对网站后台密码破解
我们每次访问这个页面user_token都会变化,导致不能重复提交
我们分析它的原理,发现页面每次生成的user_token都存在session里面,每次登录从 session 里取出来,然后验证。如果验证成功 就进行密码匹配。如果验证不成功就输出 csrf 错误。
脚本:
#coding:utf-8
import requests
import re
url = "http://www.c3moon.com/login.php"
def login(password):
session = requests.session()
req=session.get(url)
user_token=re.search("[a-z0-9]{32}",req.text).group(0) #32md5
data={"username":"admin","password":password,"Login":"Login",'user_token':user_t
oken}
req=session.post(url=url,data=data,allow_redirects=True)
html = req.text
return html
with open('top1000.txt') as p:
passlist =p.readlines()
p.close()
for line in passlist:
line = line.strip("\n")
print(line)
if 'File Upload' in login(line):
print( "[* 密码 is %s *]" % line )
break
密码是password
针对有验证码的后台的穷举方法
网站后台或者有登录的地方都可能存在验证码验证
验证码的作用:不少网站为了防止用户利用机器人自动注册、登录、灌水,都会采用验证码技术
所谓的验证码,就是将一串随机产生的数字和符号,生成一幅图片,在图像上加上干扰像素(防止 orc),要用户用肉眼识别其中的验证码信息,输入表单提交网站验证。验证后使用网站某个功能.但是如果验证码逻辑编写不好会存在被绕过的风险。
这里举出俩个简单例子
cookie不存在不验证绕过
有些网站如果不存在cookie就不会检验验证码
发送到repeater 第一次send
再次send
显然对验证码进行了检验
我们这时把phpsessionid删除
再次send
发现不对验证码进行校验了
成功绕过
这时我们再发送到intruder来跑密码即可
后台登录验证码没销毁进行穷举
在登录提交的时候进行验证码验证 不管密码是否正确,都要销毁验证码。
不然验证码可复用
我们对此界面抓包,输入正确的验证码
第一次send
第二次send还是此界面,说明他的验证码没有销毁,复用了
接下来跑字典就可
网站后台验证码识别穷举密码
验证码干扰像素太少很容易就会被一些工具识别出来。如图片提取文字工具。
这里我们使用codex工具
我们可以先测试一下验证码是否能被识别
正确识别了,说明此网站验证码干扰像素太少了
接下来我们使用此工具
操作请求栏
首先将burp抓的包放入此工具
加好标记,写入验证码地址,导入密码字典
这里导入密码发现出问题了,只有一行
这是因为此工具是windows版,字典是作为Unix格式
我们使用sublime text将字典修改为windows即可
操作爆破栏
输入验证码错误的特征
我们输入验证错误即可
之后我们就单独对密码爆破,对失败的也可再次把爆破
phpmyadmin 密码穷举
phpmyadmin 是 mysql 的一个 web 管理工具,可以通过这个工具穷举 mysql 用户的账号和密码。
这里入口就是上面这个网站即可,用户名密码自己写即可
简单演示:
结果会生成result文件
一句话木马后门破解
一句话后门可以使用 burpsuite 通用穷举方法穷举密码。
这里准备了asp、php、aspx三个后门
我们对此界面抓包设置cmd,并把它的方法改成post
关键字
asp
cmd=execute("response.clear:response.write(""passwordright""):response.end")
php
cmd=echo "password right";
aspx
cmd=qweasd123=Response.Write("moonsec");
密码是 qweasd123
发送到intruder设置cmd变量跑字典即可
正确的密码长度会不同,而且会回显预定的值