一个文本框可能存在哪些漏洞

  • 前言
  • 用户名枚举
  • 弱口令
  • 空口令
  • 登录认证绕过
  • 存在暴力破解风险
  • 图形验证码不失效
  • 短信验证码绕过
  • 短信验证码可暴力破解
  • 短信验证码可预测
  • 短信炸弹
  • 恶意锁定问题
  • 密码明文传输
  • 反射型跨站脚本攻击
  • 万能密码
  • sql注入
  • 任意用户密码修改/重置
  • 目录遍历
  • 敏感文件信息泄漏
  • 框架漏洞
  • SSO认证缺陷
  • 密码重置漏洞
  • 命令执行漏洞
  • 未授权访问

前言

 搞安全的小伙纸面试的时候,面试官总是喜欢问一个问题,只有一个登录框你都能测试哪些漏洞?通常大家测试的都是测试关键,为了有更好的测试效果,会提供给你用户名密码;但是一些比较重要的企业,而这个环境却是正式环境,里面存放着一些数据不希望被你看到的时候,是不会提供给给你登录账号的。这个时候,考验你基础知识是否扎实的时刻来临了。

用户名枚举

漏洞描述以及测试方法:
此漏洞通常存在用户登录页面,由于未统一返回的内容,即输入不存在的用户时会出现“用户名不存在”等字样,导致用户名的枚举
示例:
输入不存在的用户
输入正确的用户名

修复建议:建议对网站登录页面的判断回显信息修改为一致:用户名或密码错误。

弱口令

漏洞描述及测试方法:
可以使用暴露出来的用户名以及密码进行试验登录,通常默认用户名密码为 admin admin 123456等等
示例:
通常很多厂商后台默认账户为“admin”,密码为"admin"或“123456”,大家可以通过暴力破解去尝试
某路由器交换机管理平台

修复建议:禁止使用弱口令,口令应满足一定的复杂度。(大小写字母+数字+特殊符号)。

空口令

漏洞描述及测试方法:
找到网站登录页面,尝试输入用用户名,不使用密码直接进行登录。若是不使用密码直接登录则存在空口令
示例:
暂无,这个确实没遇到过,但是感觉最新出来的Apache shiro cve-2020-17523 Apache shiro认证绕过挺像的
修复建议:判断输入密码是否为空,禁止空口令登录。

登录认证绕过

漏洞描述及测试方法:
通常存在于仅适用前端校验,可以通过关闭js特效或者是伪造responsed的code值进行绕过
示例:
Apache shiro cve-2020-17523 Apache shiro较新的登录认证绕过,大概的方式就是使用空字符绕过
www.xxx.com/admin/%20/
www.xxx.com/admin/%2e/
示例
用户名密码一顿瞎写
点击登陆按钮同时使用抓包工具进行数据包拦截
将数据包返回至当前页面,修改code值
登录成功

修复建议:
不使用前端校验,严格校验用户的数据

存在暴力破解风险

漏洞描述及测试方法:
若网站不存在验证码,或者不设置页面重定向跳转且密码为明文或弱加密,便可尝试暴力破解攻击
示例:
某防火墙设备登录存在明文传输且无验证码措施

修复建议:
条件允许的情况下设置验证码环节
使用密码加密策略
进行页面302重定向跳转,防止自动化攻击

图形验证码不失效

漏洞描述及测试方法:
通常存在于用户的提交数据页面、登录框等;可以尝试特权码0000这种进行绕过测试,或者干脆不填验证码,或者抓取数据包删除验证码字段、放置repeter模块进行数据重放等进行测试
示例:
此登录功能时存在图形验证码的,在输入了正确的图形验证码之后进行数据重放,发现图形验证码没有做到及时失效
修复建议
1、系统在开发时注意验证识别后销毁session中的验证码。
2、限制用户提交的验证码不能为空
3、判断提交的验证码与服务器上存储的是否一致

短信验证码绕过

漏洞描述及测试方法:
1.验证码为空进行尝试
2.尝试特权验证码,如000000、111111等;
3.若系统校验为前台校验,可修改response返回值进行绕过
示例:
正确的逻辑应当是,短信验证码获取后,服务器校验短信验证码的来源以及有效性,使用一次后应该立即失效。但是我遇到的这个就是使用验证码登录后,注销用户登录后再一次使用验证码发现依然登陆成功,也就是短信验证码没有被删除
输入手机号码,而后获取验证码,随意输入即可
response返回如下
修改state值为200

修复建议
1.若存在特权验证码,建议将其删除;
2.应用服务端应严格校验验证码参数是否为空,格式是否正确;
3.关键操作每提交一次请求,应发送新的短信验证码,并且不可继续使用旧的验证码。(后端校验!!!)

短信验证码可暴力破解

漏洞描述及测试方法:
验证码失效时间过长,或验证码低于四位
点击发送短信验证码,输入任意验证码,提交请求,使用burpsuite拦截请求,在intruder模块设置验证码参数为枚举变量,这时的payload类型为brute forcer(数字0-9,长度为6),对验证码进行暴力破解。

示例:
这里的短信验证码可被暴力破解,是因为并没有设置短信验证码使用错误几次后失效,故可被暴力破解

修复建议
1.短信验证码不少于6位;
2.有效期不超过2分钟;
3.建议验证码错误三次失效。

短信验证码可预测

2021-5-31更新
漏洞描述及测试方法:
点击发送短信验证码,获取验证码的同时拦截数据,发送至repeater模块进行查看
示例:
1.点击登陆,选择手机登录,获取验证码的同时拦截数据,如下图所示

2. 拦截数据包,将response数据包返回至当前页面
3. 成功获取验证码,使用该验证码进行登录
4.使用该六位验证码进行登录,登录成功,查看手机验证码,一致

修复建议:
不要将验证码发送至客户端

短信炸弹

漏洞描述及测试方法:
页面存在发送短信的接口,点击发送短信并拦截数据包,多次重放数据观察返回效果,或发送一次验证码之后刷新当前页面观察是否可以继续发送验证码
示例:
点击获取验证码同时拦截数据包

使用burpsuite进行数据重放


修复建议
一分钟内检测时间戳对用户的sessionid进行识别,一天之内不能超过数条

恶意锁定问题

漏洞描述及测试方法:
针对测试账户,不断输入错误的密码,直至将其锁定(一般会提示再输入几次就锁定账户,或直接锁定不提醒)
示例:

修复建议
1.账户锁定之后应不能继续使用认证功能
2.认证功能防自动化操作,如添加图形验证码。

密码明文传输

漏洞描述及测试方法:
数据传输过程为明文传输,例如password字段未进行任何加密,通常存在于http传输协议(关于明文传输问题涉及两个问题,一个是当web使用http传输时,存在局域网嗅探的可能,由于http采取非加密传输,导致局域网内的嗅探数据是明文的;而当此网站是https传输的时候,由于数据是加密的,所以就不存在嗅探风险,但是当系统不存在验证码保护时,便成为了暴力破解风险。所以我理解为,当网站采取https加密传输方式,且存在校验码的时候,明文问题便不存在任何问题了)。
示例:

  1. 输入用户名密码
    2. 使用burpsuite进行数据包拦截

    修复建议
    优先使用加密方式对密码进行加密,https虽然是密文传输但是若是缺少验证码则会引发暴力破解风险。

反射型跨站脚本攻击

漏洞描述及测试方法:
通常登录框存在三种xss漏洞,登录前,登陆中,登录后;而这里指的是登录前,在用户名或密码处输入测试payload "/>,可查看源码按照实际情况来
示例:

  1. 登录窗口用户名处存在反射型XSS注入
  2. 点击登陆,成功弹出内容

    修复建议
    1)输入过滤
    2)输出编码转换
    3)禁用外部csp策略

万能密码

漏洞示例代码:其实我觉得万能密码和sql注入应当区分开来,所以我就分开写了。
众所周知,登录处是一条查询操作,一些程序可能是没有注意到,就写成了

$result=mysqli_query($link,'select * from user');        #执行$sql命令,查询user列表行内容
$row=mysqli_fetch_assoc($result);       #解析,通过用户名判断 里面行的内容密码是否正确
if ( $username===$row['username'] && $password === $row['password']) {echo '登陆成功';$_SESSION['uid'] = $row['id'] ;header("Location:3.php?id=".$row['id']);} else{echo '请重新填写账户或密码';

这个时候就可以构造特殊的sql语句进行截断,造成永真,这样的话就可以越过查询完成登录
漏洞描述及测试方法:
用户名输入: ‘ or 1=1 or ‘ 密码:任意
(2)Admin’ - -(或‘ or 1=1 or ‘ - -)(admin or 1=1 --) (MS SQL)(直接输入用户名,不进行密码验证)
(3)用户名输入:admin 密码输入:’ or ‘1’=’1 也可以
(4) 用户名输入:admin’ or ‘a’=‘a 密码输入:任意
(5) 用户名输入:‘ or 1=1 - -
(6) 用户名输入:admin‘ or 1=1 - - 密码输入:任意
(7) 用户名输入:1’or’1’=‘1’or’1’='1 密码输入:任意
示例:

  1. 这里的案例与上述的不太相同,他的查询多了一个判断动作,就是先判断用户名是否存在,存在的 时候才会进行下一步判断,判断用户名密码是否匹配,所以这里必须输入正确的用户名才行
    admin’ or 1 #
  2. 点击登陆,成功登录

    修复建议:
    1)代码层次修复,过滤特殊字符
    2)使用waf进行特殊字符拦截

sql注入

漏洞描述及测试方法:
sql注入就是程序在增删改查中未对用户输入的数据进行严格的校验,导致用户输入的恶意代码被当作是sql语句执行,造成注入;sql注入通常存在于用户输入的查询处、表单等地
示例:
暂无
大家可以去看一下博客,有很详细的讲解如何进行sql注入
https://blog.csdn.net/weixin_48421613/article/details/107488560
https://blog.csdn.net/weixin_48421613/article/details/107491562
https://blog.csdn.net/weixin_48421613/article/details/108298670
此处常常伴随着万能密码漏洞,故不做展示

修复建议:
1)代码层次修复,过滤特殊字符
2)使用waf进行特殊字符拦截

任意用户密码修改/重置

漏洞描述及测试方法:
任意用户密码重置漏洞区别于密码重置漏洞;任意用户重置通常是因为程序在修改用户密码时没有严格的对当前用户以及想要修改的用户身份进行判断,导致用户A通过修改特定参数达到重置用户B的密码的效果,相似与水平越权。
示例:
我遇到的密码重置漏洞,是忘记密码的时候会自动发送一条手机短信至绑定用户的手机中,而我做的则是在他发送之前拦截,而后修改手机号码,成功的接受到了手机短信,而后重置用户密码。
还有一种是手机短信验证成功后,重新设置密码时拦截数据包,通过修改类似username、userid等方式修改他人的账户密码。
修复建议:
严格的校验用户的身份信息

目录遍历

漏洞描述及测试方法:
目录遍历大多是因为中间件配置不当造成的,可以通过御剑等工具进行目录扫描,看看是否存在特殊目录可直接遍历任意文件
示例:
一般目录遍历都是输入…/…/这种,或者通过御剑进行目录扫描,有的时候会有一些路径可以遍历里面的目录内容

修复建议
目前存在该漏洞的常见中间件为apache和IIS,以下列出其相关的修复方式:
1、 IIS中关闭目录浏览功能:在IIS的网站属性中,勾去“目录浏览”选项,重启IIS。
2、 Apache中关闭目录浏览功能:打开Apache配置文件httpd.conf,查找“Options Indexes FollowSymLinks”,修改为“ Options -Indexes”(减号表示取消,保存退出,重启Apache。
3、 Nginx中默认不会开启目录浏览功能,若您发现当前已开启该功能,可以编辑nginx.conf文件,删除如下两行:autoindex on;autoindex_exact_size on;重启Nginx。(这种通用的可不是绿盟独有吧?)

敏感文件信息泄漏

漏洞描述及测试方法:
敏感信息泄露通常泄露了网站的绝对路径、用户的秘钥信息、等等。一些不正确的程序会将用户的用户名密码等信息存储于前台
示例:
这里我给大家带来了最近比较火的锐捷信息泄露,在源代码中泄露了用户名密码信息
泄露了用户名以及MD5加密的密码
当然了还有一些奇葩的,会直接弹出来测试用户名密码、甚至是用户名密码自动填充等等
我觉得只有这些才配成为信息泄露,剩下的泄露个什么加密方式、中间件版本信息啥的太边缘了,懒得测

修复建议
设置统一的错误页面,隐藏源代码

框架漏洞

漏洞描述及测试方法:
开发框架存在的漏洞,如Struts2框架漏洞、shiro等(weblogic反序列化中间件的就不写了)这种没有代码审计,只能扫描器出马,或者明显一眼就能看出来是s2这种的,可以使用payload %{1+1} 进行测试
示例:
使用burp插件进行被动检测(关于shiro反序列化请看上篇文章)
shiro

修复方案
建议及时更新struts2的版本到最新

SSO认证缺陷

漏洞描述及测试方法:
SSO认证存在缺陷,可越权登录他人账户。登录的过程中拦截数据请求,尝试修改cookie、uid等明显的参数
示例:
首先访问某达登录页面
此时用户为普通用户,登录后仅有一个功能
退出登录重新登陆,同时拦截数据包如下
尝试修改cookie为admin

发送数据包,功能出来了

修复建议:
正确的配置用户的权限信息,不要使用简单的cookie或session

以下为2021/5/12更新内容

密码重置漏洞

漏洞描述及测试方法:
在得知他人的手机号码的时候,通过修改response返回值欺骗服务器进行重置密码
示例:
1.点击普通用户找回密码,输入用户名
2.修改返回数据值
3.完成第一次绕过,输入任意验证码,如法炮制
4.输入新的密码


5.输入用户名admin 密码 ******登录成功

修复建议:
正确的校验验证码,不要使用前端校验

命令执行漏洞

漏洞描述及测试方法:
通常情况下的命令执行存在于路由器、交换机等设备中;看到command就试一下没毛病,区别于命令注入
示例:
1.访问某捷路由器web管理系统登录页面,如下图所示
2. 这里若是不输入正确的密码仅能执行show version命令,此处通过弱口令进行致命打稽

3.当然了我找到了一个不用密码就能执行任意命令的,但是我不写,诶,就是玩

修复方案
与系统进行交互的时候注意封闭其他命令,禁用外部命令

未授权访问

2021-5-27
漏洞描述及测试方法:
未授权访问,是指本来需要登录才能访问的页面在未登录的情况下依然可以访问;在测试的过程中可以使用目录扫描进行探测,或者登录之后,删除掉cookie/session等或者直接使用隐私浏览器进行访问,若是依然可以访问页面,则是存在未授权访问漏洞
示例:
访问后路由器后台地址,不许输入用户名密码即可直接访问后台

修复建议:
常见的修复方法:在系统中,加入用户身份认证机制或者tonken验证,防止可被直接通过连接就可访问到用户的功能进行操作

一个登录框引发的“安全问题”相关推荐

  1. 一个“登录框“引发的安全问题

    前言 搞安全的小伙伴只有一个登录框你都能测试哪些漏洞? 通常大家测试的都会测试关键部分,为了有更好的测试效果,小厂会提供给你用户名密码:但是一些比较重要的企业,而这个环境却是正式环境,里面存放着一些数 ...

  2. 点击登录按钮,弹出一个登录框

    点击登录按钮,弹出一个登录框 首先将登录框写在一个div块里,里面放上登录框所需的各种信息,比如用户名.密码等,并将CSS样式里的display设置成none.然后在你的前端页面,比如index.ht ...

  3. HTML写一个登录框样式

    以QQ空间的登陆框为例,原先的代码很复杂,还涉及了其他的知识,对于刚刚接触的人来说想写一点点样式来练练手的话可以看一下. 写好之后是这个样子 下面是代码 <!DOCTYPE html> & ...

  4. 一个登录框实现不同的登录验证

    2019独角兽企业重金招聘Python工程师标准>>> 一.本地user登录 1. 定义一个User <?phpnamespace AppBundle\Document;use ...

  5. python sql注入漏洞 ctf_CTF-WEB 一个登录框SQL盲注

    一些师兄给了个平台,最近学了很多SQL注入和编写脚本的知识,跃跃欲试,结果这一做就是漫漫长路,还是很多东西不熟悉啊. 首先找注入点: 发现用户名错误和密码错误会分开提示,可以用布尔盲注,(*^▽^*) ...

  6. 一个文本框可能存在哪些漏洞

    一个文本框可能存在哪些漏洞 前言 用户名枚举 弱口令 空口令 登录认证绕过 存在暴力破解风险 图形验证码不失效 短信验证码绕过 短信验证码可暴力破解 短信验证码可预测 短信炸弹 恶意锁定问题 密码明文 ...

  7. JQuery+CSS3实现封装弹出登录框效果

    原文:JQuery+CSS3实现封装弹出登录框效果 上次发了一篇使用Javascript来实现弹出层的效果,这次刚好用了JQuery来实现,所以顺便记录一下: 因为这次使用了Bootstrap来做一个 ...

  8. linux agetty 登录框进程简介

    有时候在 "ps aux" 命令的输出中,可以看到以下进程: /sbin/agetty --noclear tty1 linux 这个进程是怎么来的? 在系统起来之后,屏幕上会出现 ...

  9. python登陆界面代码_Python-PyQt5-第一个小项目--登录框--login

    Ps:水平有限,欢迎建议和挑错 我们在此之前,学习了PyQt的主窗口(QMainwindow),按钮(Qpushbutton),标签栏(QLabel),文本框编辑框(LineEdit)4个组件. 我们 ...

最新文章

  1. oral_quiz-#求链表中的倒数第K个结点#
  2. SSO单点登录之——JWT
  3. 【光斑定位】空间激光通信、光斑定位、CCD、光斑定位——13000字
  4. PowerShell批量修改邮箱配额和已删除保留期
  5. 怎么写显示商品图片_虾皮商店封面图片 虾皮商店介绍怎么写吸引人
  6. ap sat_收藏丨2020年雅思、托福、GRE、SAT、ACT、AP考试时间汇总
  7. tomcat ng mysql 集成_整合nginx,tomcat,mysql的安装与配置
  8. UVA 583 素数打表(线性)
  9. braft中AppendEntries逻辑
  10. 2018-06-12 python读二进制文件
  11. RobotStudio创建目标点时出现未找到有效配置的问题
  12. 当电子工程师十余年,感慨万千
  13. IR2104与IR2103区别
  14. 怎么把cad的图导入ps_怎么将cad图形导入ps中处理
  15. 各团队对《t铁大导航》评价及我组回复
  16. 人生于世上,有几个知己……
  17. 圆圈中间一个乘号:克罗内克积
  18. 垃圾回收概述,算法及垃圾回收器
  19. 5+App使用UniPush发送消息,App在线、离线均能收到消息推送,并在通知栏进行提醒,苹果、华为、小米手机均测试通过
  20. 推荐几个亲测好用高质量学习SQL的网站(建议收藏)

热门文章

  1. 无边框透明窗口设置鼠标穿透与不穿透功能
  2. Matlab中统计矩阵中每个元素出现个数的方法-------tabulate()函数
  3. 股票入门——新手如何根据公司财报选择股票?
  4. English语法_形容词/副词3级-比较级_常用短语
  5. 惠普 HPE D380 G9 做raid1+0并安装ESXI6.7
  6. low-light系列:Lightening Network for Low-light Image Enhancement
  7. The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced from
  8. 自动驾驶(七十四)---------硬件平台介绍
  9. 缓存一致性问题解决方案
  10. 使用 WinRAR 制作自解压文件