当前位置: 首页 > news >正文

漏扫常见问题——口令类

一、序言

  从2024年开始,护网行动的风在已经成为日常,凡是事业单位、政府使用的系统,基本都会受到监测。在部分省份,甚至是不同市交叉监测,一份份检测报告看得心里发慌。

  口令类问题作为系统最基础,最常见的漏洞,我将从系统弱口令、规则口令、组件弱口令及短信验证码爆破相关问题。

本文会介绍我碰到过的口令类问题,受限于见识和主观看法,仅供参考。

二、系统弱口令

  我相信只要经过漏洞扫描的系统,80%肯定都有弱口令这个问题。简单来说,就是密码过于简单或者规则过于简单。

  简单密码主要包含常见的:123456admin123admin123456super123sa123456等等,有些是开源框架默认密码,上线后没修改。有些是客户觉得密码复杂不想记,希望简单点,到最后都是开发中自己背锅。

解决办法:①增加密码复杂度;②更换登录方式(比如短信验证码);③增加校验(比如限制登录IP等)。

2.1 增加密码复杂度

  对于绝大部分人而言,第一想法就是更新复杂密码。但是,一定要知道什么叫复杂?不是说从123456改成admin@123就可以。按照常见的规则,主要包含以下条件:

  1. 密码长度不低于8位;
  2. 密码需要包含大写字母、小写字母、数字、特殊字符;
  3. 不能有三位及以上的连续数字或字母。

尤其是第三点,像Abc@123这种密码,是不安全的。

2.2 代码强制校验

这里要注意一个问题,当漏扫给你发漏洞文件时,弱口令不一定只有文件上面那些账号。当你修改密码后,一般都有个复测的环节,如果再检测出其他弱口令,就很尴尬了。

  增加密码复杂度肯定是有效果的,但是对于运行多年的老系统,用户比较多怎么办?尤其是客户能自己添加用户那种,我们根本不知道那个账号密码简单。这时候有个不是办法的办法应急,就是再登录接口内,对用户输入的密码进行校验,校验规则参考上面。

2.3 强制修改强密码

上面那招有个问题,就是密码简单的用户没办法登录了,如果碰到脾气急的用户,肯定喷你。

  那就换个贯彻到底的方法,强制把所有账号的密码全部换掉,然后通知客户再自己修改密码,但是密码复杂度一定要有检验。

三、规则化密码

规则密码主要是密码具有规则性,很容易被推测出来。这种问题很好解决,主要是惯性思维会让开发者很难意识到自己的问题。主要包含下面三种方式,请大家注意:

3.1 用户相关类密码

  这个问题常见于新开发系统,然而有很多用户,开发者为了方便,往往会在密码上加上用户的名字。比如张三的账号是zhangsan,密码是zs123456,这种一旦知道其中一个账号的密码,别的就很快会被推测出来。

这里注意一个问题,有些检测机构会问你要一个账号,这个账号你千万要注意,千万别是那种规则类的,很快会被他们推测出来。

3.2 系统类密码

  这个问题常见于有域名的系统,有些人习惯性把管理员密码设置成域名+123456,比如域名是:pan.baidu.com,密码是pan@123456Pan@123456,这种密码也很容易被猜出来。

3.3 相同密码

  多个账号共用一个密码,这个问题常见于有初始化密码,但是未做修改。监测机构会根据你提供的账号。

解决办法:注意少用惯性思维来设置密码。

还有一个就是不同系统不要设置相同的密码,因为护网行动不只会攻击指定系统,会直接攻击提供域名或IP下的所有系统,一旦通过账号密码访问到其他系统,这是极其严重的漏洞。

四、组件弱口令

  相对于开发系统的弱口令,组件弱口令很容易被忽略,比如最常见的nacosMySQLRedis或者微服务组件及各种MQ的控制台。常见问题有以下两种:

4.1 常见密码或不设密码

  举两个常见的例子:一、Redis默认安装没有密码,但是开放使用;二、nacos未修改默认密码,但是开放使用。这个看起来好像很不可思议,因为一般都不会开放,常常都是开发者部署系统调试后,图方便没有对这些做限制。

这里的开放使用,不仅仅是开放到公网,当给一些特殊单位开放系统时,即便是其他内网IP能访问到这些组件,同样会被认定为弱口令。

4.2 相同密码

  很多人会习惯性把数据库等组件的密码设置成一个密码,甚至是系统admin的密码。

解决方案:①密码要够复杂(但是自己要记住,别难住了自己);②后台或控制台访问一定要限制访问IP,不要开放式裸奔。

五、短信爆破

  针对系统弱口令,加强密码难度经常有漏网之鱼。于是我们会下意识地选择短信验证码或者邮箱来进行登录,邮箱一般外网地网站用的多,国内还是短信验证码居多。

  常规系统地设计一般都是:①前端点击按钮发送验证码(一分钟倒计时);②后台判断手机号码是否在系统内,不存在报错,存在则判断上一条验证码是否过期;③上一条验证码过期,新发一条,未过期前端提示。

  看起来设计很好,限制住了用户多发验证码。然而,这中间有个十分严重地问题:由于发送验证是开放式接口,漏洞检测方可以通过工具不停的请求验证码发送接口,一旦接口返回成功,说明手机号码在系统中存在。

  然后,他们把有效地手机号码收集起来,不停请求验证码接口,不仅能消耗我们的短信条数(到这里就算是短信爆破了)。还能在短信验证码有效期内,不停模拟测试验证码,一旦测试成功,那就算系统爆破了。

分享三个我的解决办法(并行,不是三选一):

  1. 后端防重复(或者幂等性)请求;
  2. 限制单手机号单小时单天请求和发送次数;
  3. 限制IP单小时单天请求次数。

如果在请求短信验证码前,再加一关数字或图像验证码,也是极好的。

第一条接口防重最简单也最实用,这种主要是应对检测方的接口爆破,限制对方并发测试。

第二条限制手机号码的发送次数,这个也很重要,别让短信被浪费,也能降低验证码被爆破的风险。

友情提醒:运营商(比如阿里云)可以设置发送限制,可以作为最后的底线,别一天就破产了。

第三条限制IP请求这个,我个人觉得才是最管用的,当对方测试手机号码时就把对方IP拉黑。虽然检测方一般有招数更换IP,但是这招算是我硬编码能想到效果最好的方式了。

六、总结

  以上总总,都是一家之言,总结起来,大概有三招应对方法:

6.1 加强密码强度

  不要设置过于简单、规则化、重复性的密码,如非必要,一定开启验证码。

6.2 有限制性的访问

  在条件允许的情况下,可以通过限制IP等方法限制对方访问。

通过硬编码限制是下下之策,是没办法的办法,可以通过防火墙限制。如果你是小公司,开发运维一把梭,建议你使用宝塔之类的工具,简单直观。

6.3 限制IP爆破式请求

  这个针对系统开放式接口要限制对方请求次数,别被爆破。

系统里要设计个可以清除限制的功能,别对方测试后整个系统IP全部被限制不能访问。

http://www.dtcms.com/a/430678.html

相关文章:

  • 广州建设高端网站韶关手机网站建站
  • NetApp存储基本概念科普:物理层到逻辑层
  • 操作系统复习问题总结
  • 笔记(C++篇)—— Day 12(类的默认成员函数)
  • 牛客算法基础noob59 简写单词
  • CSS断点(Breakpoints)介绍(响应式设计中用于定义不同屏幕尺寸下应用不同样式的特定点)Tailwind断点
  • Flink SQL 查询 核心概念与实战指南
  • 建设网站的合同招远网站建设
  • 免费域名的网站有哪些可视化建网站
  • 【Linuxvs code】Xshell远程配置到VS Code环境配置指南
  • 微服务网关深度设计:从Spring Cloud Gateway到Envoy,流量治理与安全认证实战指南
  • 全新体验:利用Istio提升微服务安全与监控
  • Nuitka加快打包速度(ccache)全平台配置——持续更新中
  • 大数据毕业设计选题推荐-基于大数据的全球能源消耗量数据分析与可视化系统-大数据-Spark-Hadoop-Bigdata
  • 机械行业做网站猎头公司找的工作怎么样
  • 04_Numpy结构化数组
  • 深圳市龙华区价格优化网站建设
  • 博客标题:解密 IntelliJ IDEA 调试:当你的 List 不仅仅是 List
  • 12.如何使用 JavaScript 构建便签应用程序 | 入门项目
  • 第四届云计算、大数据应用与软件工程国际学术会议(CBASE 2025)
  • 全栈工程师项目练习记录
  • Vue CLI为何不显示webpack配置
  • 设计模式之策略模式学习
  • 自己做的网站外国人能访问吗广告设计公司有哪些渠道通路
  • 分布式专题——24 Kafka功能扩展
  • 范式革命:RDMA 如何让网络成为 “分布式内存总线”
  • 如何弄公司网站青岛专业网站制作
  • Langchain4j笔记
  • 云计算介绍
  • 什么是Redis哨兵机制?