原创文章,转载请注明出处。
攻防之初,大多为绕过既有逻辑和认证,以 Getshell 为节点,不管是 SQL 注入获得管理员数据还是 XSS 获得后台 cookie,大多数是为了后台的登录权限,假若我们获得一枚口令,都是柳暗花明。不管口令复杂与否,只要在构造的字典内都是爆破之结晶。
Web 形态及业务之错综,我们暂可将能够自定义字典的请求归类到爆破,以便信息的提炼和知识的逻辑推理。
本文主要收集了常用的一些爆破相关的零碎点和技巧点。
探测存在与否
第一梯队:Top500 用户名、手机号
第二梯队:邮箱、员工编号
指定类 123456 口令爆破用户名
正常的 top500,top10000 帐号;
单个字母、两个字母、三个字母、四个字母随机组合的帐号;
a) 小工具 pydictor 值得推荐
python pydictor.py -base L –len 2 3
b) Burp 也可以
c) 一位数字、二位数字、三位数字、四位数字的随机组合for n in xrange(10000):
print str(n).zfill(4)
厂商名相关帐号,
a) 如:facebook、fb_steven …
b) 页面联系邮箱的规则学习及自创建top500, top3000,top10000,自定义密码
a) Top 系列,几乎安全从业都有自己的弱口令字典,常规就好,太大的字典跑起来也费劲,关键是定制
b) 定制字典,pydictor 值得推荐:https://github.com/LandGrey/pydictor
c) 社工库的使用,指定用户的历史密码,是一种尝试厂商特色口令生成,如 baidu@123
a) 适用于应用管理员类人员以及主机协议类密码
b) 更多定制类字典也可以 pydicor
c) http://www.cnblogs.com/shellr00t/p/5316401.html
加密密码暴力破解
a) 普通编码类,如 base64
b) 自定义加密算法(目标系统使用了可猜测的加密算法去加密口令)
可参考浮萍写的基于 RSA 算法加密口令后爆破脚本:
https://github.com/fupinglee/MyPython/blob/master/web/RSADemo.py
c) Selenium 自动浏览器提交模块(可适用与不明加密算法,模拟正常操作流)
详细代码过程参考我博客:
http://sm0nk.com/2017/11/27/%E5%9F%BA%E4%BA%8ESeleinum%E7%9A%84%E5%8F%A3%E4%BB%A4%E7%88%86%E7%A0%B4%E5%BA%94%E7%94%A8/弱文件后的后台爆破
a) 弱文件爆破获得后台
b) 后台密码爆破
i. 各大中间件及 CMS 的口令破解,如 weblogic 、tomcat
ii. 自定义后台的密码破解Webshell 密码爆破
a) Shell 发现(弱文件以及蛛丝马迹)
b) Shell 爆破(有专用工具,也可用 burp 完成)辅助信息
a) Web 源码、JS 以及注释信息中是否包含用户名以及口令指定规则
b) 技术运维人员的桌子上面的便签信息(若能接触到目标内部)…验证码绕过
a) 验证码非必须参数,可省略
b) 验证码不失效,可多次使用
c) 验证码问题集合答案有限,可以遍历后破解
d) 非空逻辑校验,验证码置空 或 去掉校验参数的请求
e.g. ecshop 后台暴力破解验证码绕过简单验证码识别
https://github.com/fupinglee/CrackCaptcahLogin/releases
类似工具很多,看使用习惯。高模糊度验证码识别
a) 一般的识别流程都是二值化、去干扰、区域选择、OCR 识别
b) 可用云打码平台 (不打广告)部分登录验证码的分类也可适用于此
验证码的本身绕过
a) 返回包回显(包括返回包、输出在 cookie 等)
b) JS 控制
c) 返回包控制:True&false 控制(0&1),修改返回包可绕过4 位数字,验证码爆破,很快
6 位数字,验证码爆破;可根据多线程的前提进行多进程处理,0-199999 一波;200000-399999 一波…(依次类推);也可以看频率,哪块区间分布的概率较高可重点关注;也可以指定前一位或两位进行爆破。
弱 token
a) 例:奇虎 360 任意用户密码修改漏洞,发送给邮箱的验证链接里面的 vc 值为时间戳的 md5 加密;作为一种检验参数可被猜测。
b) 基于密码找回的手机号、UID、邮箱等遍历,结合客户端源码可能的些蛛丝马迹
c) 不完全属于爆破逻辑,但可互补增值,参考
http://bobao.360.cn/learning/detail/287.html关键参数的的信息遍历 (select)
a) 包括用户名
b) ID 号
c) 手机号
d) 邮箱
e) 身份证号
f) 订单号
g) 银行卡
h) 信用卡 (e.g 携程乌云漏洞)
i. PAN + 信用卡到期时间(即:最小的身份验证模块);
ii. PAN + 信用卡到期时间 + CVV;
iii. PAN + 信用卡到期时间 + CVV + 持卡人地址;
iv. From http://t.cn/Rfrsdki
i) …批量注册 (insert)
a) 逻辑不严谨或校验不严格,实现多帐号的薅羊毛一套组合拳(也可关联到爬虫):
a) 两个常见的功能:密码找回、网站论坛
b) 切入点一:从密码找回功能分析,有相当一部分网站,提供账号检测功能,且提示存在与否,根据友情提示以及次数限定情况,可以通过返回包匹配存在的帐号,包括用户名、甚至手机号(其实主要是手机号)。
c) 切入点二:密码找回功能,输入手机号后会提示… 正在找回 XXX 的密码信息…,这个就是用户名,(若输入用户名,有可能提示正在找回某手机号的密码信息(部分打码))
d) 切入点三:网站论坛,为了交流,以及用户的活跃度,部分网站存在 bbs、club 等论坛信息,一般二次开发的 Discuz 。 上面会存在关于个人的一些数据,比如用户名(论坛网名)、性别、粉丝情况、帖子情况、联系方式、住址(部分需要登录权限)、还有一些倾向数据,比如购物平台关注的商品;
e) 从这三个切入点来讲,单独哪个可能都影响不足够大,没有达到影响的最大化。从一个数据利用者角度分析,最希望得到与平台性质相关的属性,比如交友网站的性别和联系方式信息,房产网站的倾向房产和联系方式等属性。 那把三个切入点的数据整合起来能得到什么呢?
i. 通过用户检测 获得手机号用户个人信息;
ii. 通过手机号检测,获得用户名信息;
iii. 通过论坛遍历,获得 ID 和用户名信息;
iv. 通过关联以上数据,可以对应手机号——> 用户名 ——> 论坛 ID,同样也就意味着获得了某手机号的用户关注了什么的信息。Demo 说明
用户:188xxxx8888 用户名:HelloWorld 关注:某别墅
用户:138xxxx9999 用户名:52BMW 关注:宝马 X6
用户:159xxxx6666 用户名:HelloKitty 就职某金融企业
用户:186xxxx5555 用户名:独孤求败 购买了大疆无人机
针对 Demo 数据,从一个数据威胁角度来分析,那可以实现精准营销。带来的场景就是另一片天地。
数据重放 - 短信炸弹
a) 无任何限制的短信炸弹
b) 单独手机号存在短信阈值限制,有可能通过间隔符绕过,18888888888,,, 与 18888888888 效果一样;
c) 针对单独手机号有阈值限制,但可随意轮询其他手机号,同样有危害
d) 会导致短信网关的资源浪费和流失数据重放 - 邮箱炸弹
a) 相对短信炸弹成本较低,但其逻辑同短信炸弹子域名爆破
a) 根据自己平台和习惯选择即可:subDomainsBrute、Layer、FuzzDomain子目录、弱文件爆破
a) 弱文件爆破,对比过老御剑、weakfilescan、dirfuzz、cansian.py 仍然觉得一款基于 python3 的 dirsearch 值得拥有(可自定义字典)
https://github.com/maurosoria/dirsearch
b) 也可以自己写,就是基本的 web 请求,以及返回包的长度或特征匹配。
Fuzzing 测试
a) SQL、XSS
b) 拒绝服务漏洞,例如 SPIKE 对表单测试特殊字符的异常处理SSH RDP FTP MySQL MSSQL …
a) Fenghuangscan 值得推荐,Hydra (Kali 自带)值得拥有;
b) Nmap 也可完成部分破解工作,本身是一个基础工具,但 script 下的脚本能让你做出不基础的事情
c) 毕竟直接拿到远控权限事半功倍,可直接获取数据,对于测试来讲还可获取源码,以半审计的方法进行挖掘。
d) 且有人以此为生(全网抓鸡)SMTP、VPN 协议类
a) 第一点提到的一些协议,初具成熟均不公开于互联网(当然意识和测试情况也有),但 SMTP 和 VPN 类,大部分都有,也是入侵的概率很大的入口点
i. brut3k1t(github 有)
ii. 也有自定义的 PY 脚本
iii. 小技巧点:部分对同一用户有密码失败次数限制,可把循环颠倒过来,用同密码刷一遍用户,在用下一个口令刷一遍用户…
b) 翻到邮箱,根据信息检索,信息很精准,很有可能获得认证信息
c) 获得 VPN 认证,在内网搞事,一不小心就干掉了一个大家伙。特殊服务类未授权访问或者弱认证
a) Redis 未授权访问
b) Jenkins 未授权访问
c) MongoDB 未授权访问
d) ZooKeeper 未授权访问
e) Elasticsearch 未授权访问
f) Memcache 未授权访问
g) Hadoop 未授权访问
h) CouchDB 未授权访问
i) Docker 未授权访问
j) 毕竟这些未授权可以直接 getshell 或直接获得数据
详细介绍利用及加固请参考https://www.secpulse.com/archives/61101.html登录界面暴力破解,哪些加固方法?
a) 阈值的设立
i. 单位时间内超过额定请求次数,封帐号 & 封 IP 段时间
ii. 支持逆向思路
b) 密码输入错误次数达到 3 次后增设验证码
i. 验证码自身的安全性参考下一个问题
c) 自身应用系统的健壮性
i. 强制要求用户注册时满足口令复杂度要求
ii. 定期检索数据库弱口令帐号的存在,可比对 top500 的密文值图形验证码自身常见的加固方法?
- 字体扭曲
- 字体粘连
- 字体镂空
- 字体混用
- 主体干扰线
- 背景色干扰
- 背景字母干扰
- 公式验证码
- 加减法验证码
- 逻辑验证码
安全登录流程设计?
a) 系统设置一个固定的盐值,该盐值最好足够复杂,
b) 用户注册、修改密码时,将用户的原始密码与我们的固定盐值拼接,然后做 md5 运算。
c) 传递至后端,保存进数据库(数据库中保存的密码是用户的原始密码拼接固定盐值后,md5 运算后的结果)。
d) 登录时,将用户的原始密码与我们的固定盐值进行拼接,然后做 md5 运算,运算后的结果再拼接上我们的随机码,再次 md5 运算,然后提交。
e) 后端接收到登录请求后,将从数据库中查询出的密码与 session 中的随机码拼接后,md5 运算,然后与前端传递的结果进行比较。
PS: 这种登录流程对于数据包重放来讲的确有效,但对于正常的 selenium 浏览器输入爆破仍需要结合阈值和验证码来防御。Modsecurity 类防御暴力破解类?
a) 若代码变更成本大,可以使用 Modsecurity (当然直接买硬 WAF 也可以)
b) https://www.trustwave.com/Resources/SpiderLabs-Blog/Defending-WordPress-Logins-from-Brute-Force-Attacks/(Freebuf 有翻译)
主机类暴力破解的防御方法?
a) 自身的帐号口令体系满足复杂度要求
b) 若非必须的服务,直接禁止对外的开放,包括 22、3389
c) 限定指定 IP 访问(网络的访问控制)
d) 不使用口令方式,使用私钥类登录
e) 意识类:不在标签写密码;运维管理类也不直接统记录到一个 txt
http://sm0nk.com/2017/12/04/Web%E6%94%BB%E9%98%B2%E4%B9%8B%E6%9A%B4%E5%8A%9B%E7%A0%B4%E8%A7%A3-%E4%BD%95%E8%B6%B3%E9%81%93%E7%89%88/