webgoat(A2) Broken Authentication

news2025/1/21 15:42:04

身份验证绕过

身份验证绕过以多种方式发生,但通常会利用配置或逻辑中的某些缺陷。篡改以达到正确的条件。

隐藏输入

最简单的形式是依赖于网页/DOM 中的隐藏输入。

删除参数

有时,如果攻击者不知道参数的正确值,他们可能会从提交中完全删除该参数,以查看会发生什么情况。

比如需要提交问题通过验证,但是可以从接口处删除问题参数,则可以不提交问题也能通过身份验证。

最近(2016 年)的示例 (Paypal 2FA Bypass) 是身份验证绕过的一个很好的示例。他无法收到带有代码的短信,因此他选择了提供的 替代方法,涉及安全问题。使用代理,完全删除了参数......并赢了

强制浏览

如果站点的某个区域未通过配置得到适当保护,则可以通过猜测/暴力破解来访问该站点的该区域。

JWT tokens

许多应用程序使用 JSON Web 令牌 (JWT) 来允许客户端指示身份,以便在身份验证后进行进一步交换。

JWT token的结构

JWT是可以解码的

 0x02

将题目的jwt在WebWolf的JWT中,将payload的user_name中的值复制到token位置提交。

获取JWT token的过程

在此流程中,您可以看到用户在成功对服务器进行身份验证时使用用户名和密码登录 返回。服务器创建一个新令牌,并将此令牌返回给客户端。当客户端连续 调用服务器,它将新令牌附加到“Authorization”标头中。 服务器读取令牌并首先验证签名,验证成功后,服务器使用 令牌中用于标识用户的信息。 

claims

令牌包含用于标识用户的声明以及服务器满足请求所需的所有其他信息。 请注意,不要将敏感信息存储在令牌中,并始终通过安全通道发送

密码重置

本课讲授密码重置功能,大多数情况下,密码重置功能是应用程序中被忽视的部分 导致各种有趣的逻辑缺陷。

 

我们每个人都会以前在网站上使用过密码重置功能。每个网站都实现 以不同的方式实现此功能。在某些网站上,您必须回答其他网站上的一些问题,例如电子邮件 激活链接将发送给您。在本课中,我们将介绍一些最常见的密码 重置功能并显示可能出错的地方。

仍然有一些公司会通过电子邮件将密码以明文形式发送给用户。举几个例子 你可以看看 Plain Text Offenders。在这里,您将找到仍然向您发送明文的网站 电子邮件中的密码。这不仅会让您质疑网站的安全性,而且还意味着它们会存储 您的密码是明文的!

0x02

点击忘记密码,在webwolf的main处找到邮件,然后用你的账户名@@owasp.org,输入新的密码,点击访问

安全问题

这一直是一个问题,对于许多网站来说仍然是一个问题,当您丢失密码时,网站会询问您 对于您在注册过程中回答的安全问题。但是这些安全问题,可能并不安全,能被暴力破解,或被猜到。

如果攻击者回答了问题,则可能修改掉你的账户密码。

安全问题的问题

虽然安全问题乍一看似乎是进行身份验证的好方法,但它们 有一些大问题。

“完美”的安全问题应该很难破解,但很容易记住。答案也需要固定, 所以它不能改变。

只有少数问题符合这些标准,几乎没有一个适用于任何人。

如果您必须选择一个安全问题,我们建议您不要如实回答。

为了进一步阐述这个问题,有一个小任务给你:下面列出了一些常见的安全问题。 如果你选择一个,它会向你展示为什么你选择的问题并不像人们想象的那么好。

创建密码重置链接时,需要确保:

  • 它是带有随机令牌的唯一链接

  • 它只能使用一次

  • 该链接仅在有限的时间内有效。

发送带有随机令牌的链接意味着攻击者无法通过启动 阻止用户。该链接不应多次使用,因此无法再次更改密码。 超时对于限制攻击窗口是必要的,拥有链接为攻击者开辟了很多可能性。

如何防止滥用密码重置功能

在学习如何滥用密码重置功能之后,您现在还应该知道如何保护自己的网站免受此类攻击。如果您想全面了解所有缓解方法,请查看此处:Forgot Password - OWASP Cheat Sheet Series

本课将总结上面备忘单中提到的要点。

如何使用安全问题进行用户验证

安全问题是一种简单的方法,可以在不要求用户提供验证数据的情况下查找有关用户有效性的信息。问题是,安全问题的类型并不多,而且大多数问题的答案在许多用户中都是相同的。这使得攻击者很容易猜测问题和答案。

使猜测安全问题变得更加困难的一个简单方法是让用户自己决定他们想要回答的问题。有关此主题的更多信息,请访问:Choosing and Using Security Questions - OWASP Cheat Sheet Series

通过网络发送数据

通过网络向任何方向发送的所有内容都可以被攻击者读取。某些数据使攻击者更容易编译用户帐户上的关键信息,以帮助他们绕过登录和密码重置限制。因此,在密码重置过程中,尽量不要通过网络发送用户自己输入的帐户信息(如用户名、电子邮件等)!

例如:如果您通过电子邮件向用户发送密码重置链接,请不要以任何方式将用户名包含在密码重置表单中!用户不必在窗体上看到他们的用户名,因为非恶意用户已经知道他们的名字。使攻击者尽可能难以收集更多信息。

关于密码重置令牌

密码重置令牌允许用户重置密码,而无需提供有关用户验证的固有安全信息。因此,它们应该是安全的。应该很难猜到这样的代币。令牌也应仅在短时间内有效,并且在用户成功重置密码后应无效。

记录用户操作

仅靠日志记录无法阻止任何攻击,但它可以更轻松地确定攻击是否发生以及攻击者如何试图绕过安全性。您还可以使用日志来确定帐户是否真的被劫持,以及是否必须将其归还给合法用户。您可以记录的操作包括: 安全问题是如何得到解答的?与发送 e-amil 的时间相比,何时访问密码重置链接?有失败的尝试吗?

双因素身份验证

在两个或多个单独的设备上通过两种或多种不同的方式执行身份验证过程总是更安全的。如果用户想要重置密码,您可以要求他们输入通过短信、Messenger 或类似方式发送给他们的验证码。这使得攻击者很难绕过验证过程,因为他们需要对另一台设备进行物理访问。 另一方面,它要求用户提供有关与他们联系的其他信息,这并不欢迎每个人

安全的密码

NIST密码标准

NIST 密码标准(也称为特殊出版物 (SP) 800 系列)是为实施安全密码系统提供建议的指南。

密码规则

以下是最新的NIST标准提出的一些最重要的建议:

  • 无组成规则
    例如,不要要求用户在其密码上使用至少一个大写字母和一个特殊字符。 给他们机会,但不要强迫他们!

  • 没有密码提示
    如果您希望人们有更好的机会猜到您的密码,请将其写在屏幕上的便条上。

  • 没有安全问题 安全问题
    (也称为基于知识的身份验证 (KBA))已过时。 问用户“你的宠物叫什么名字?”或类似的东西来检查它是否真的是他,是非常不安全的。

  • 无需更改密码如果您希望用户遵守并选择较长、难以猜测的密码,则不应让他们在一段时间后不必要地更改这些密码。

  • 最小长度为 8 个字符 现在的安全密码长度应至少为 8 个字符(最多 64 个字符
    )。 这是最低限度,而不是最高限度!

  • 支持所有 UNICODE 字符 您应该允许在密码中使用所有类型的 UNICODE 字符
    。 这还包括表情符号和空格。

  • 力量计 在密码创建页面添加强度计
    ,帮助用户选择强而安全的密码。

  • 根据已知的错误选择检查密码

    • 从以前的违规语料库中获取的密码

    • 字典单词

    • 重复或连续字符(例如“aaaaaa”、“1234abcd”)

    • 特定于上下文的词语,例如服务名称、用户名及其衍生词

可用性

除了上述建议外,NIST标准还建议提高密码表单的可用性,以增加用户选择强大且安全的密码的可能性。其中一些是:

  • 允许粘贴到密码输入中 用户在输入
    密码时应该能够使用“粘贴”功能。 由于这有利于使用密码管理器,因此也增加了用户选择强密码的可能性。

  • 允许显示密码 密码输入应具有显示输入密码的选项,以帮助用户成功输入密码

  • 提供强度计 在密码创建页面上添加强度计
    ,以帮助用户选择强而安全的密码。

0x04

使用随机密码生成,创建包含如下条件的密码。

您的密码安全吗?

你呢?您的密码安全吗?

有些网站允许测试您的某个帐户是否在过去的数据泄露中被泄露。
转到每个示例的 Have I Been Pwned 或 DEHASHED,并测试您的帐户是否遭到破坏。 如果是这样,最好立即更改密码!

您可以做些什么来提高帐户的安全性?

  • 对不同的帐户使用不同的密码 不要对多个帐户使用相同的密码,而是为每个帐户
    使用不同的密码是一件好事。

    • 使用密码短语
      使用密码生成器(如 Diceware)生成密码短语。 密码短语是由多个单词组成的密码,而不是随机生成的字符序列。 这使得我们人类更容易记住它们。顺便说一句:时间越长越好!

    • 使用密码管理器 如果您不记得所有不同的密码,请使用密码管理器
      创建一个密码,然后安全地存储您的密码。

  • 使用双因素身份验证 如果可能,请使用双因素身份验证
    方法为您的帐户添加额外的安全层。

 

存储密码

创建强大且安全的密码后,还必须以安全的方式存储密码。 NIST 提供了有关应用程序应如何处理密码以及如何安全地存储密码的建议。

密码应该如何存储?

  • 首先:使用加密和受保护的通道来请求密码
    验证者在请求记忆的机密时应使用经批准的加密和经过身份验证的受保护通道 以提供对窃听和 MitM(中间人)攻击的抵抗力。

  • 抵御离线攻击 密码应以能够抵御离线攻击
    的形式存储。

  • 使用盐
    在存储密码之前,应对其进行盐渍处理。 盐的长度应至少为 32 位,并且应任意选择,以最大程度地减少存储哈希之间的盐值冲突。

  • 使用哈希
    在存储密码之前,应使用单向密钥派生函数对其进行哈希处理。 该函数将密码、盐和成本因子作为输入,然后生成密码哈希。
    合适的密钥派生函数示例:

    • 基于密码的密钥派生函数 2 (PBKDF2)(尽可能大,至少⇒ 10.000 次迭代)

    • 气球

    • 密钥派生函数应使用经批准的单向函数,例如:

      • 密钥哈希消息身份验证代码 (HMAC)

      • SP 800-107 中任何批准的哈希函数

      • 安全哈希算法 3 (SHA-3)

      • CMAC公司

      • Keccak 消息验证码 (KMAC)

      • 可定制的 SHAKE (cSHAKE)

      • ParallelHash (英语)

  • 内存硬键派生函数 使用内存硬键派生函数
    ,进一步增加执行攻击所需的成本。

  • 高成本因子 密钥派生函数的成本因子
    (迭代计数)应与验证服务器性能允许的最大一样大。(至少 10.000 次迭代)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1165317.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

excel利用正则匹配和替换指定内容

上班中, 突然接到电话, 屋里的上司大人发来个excel, 说要替换里面x-x-xxx列的内容为x栋x单元xxx. 大致表格如下, 原表格我就不发了 身为程序猿的我, 肯定第一就想到了 正则! 打开excel-开始-查找和替换, 我擦, 只能完全匹配和替换 比如一次只能替换1-1- -> 为1栋1单元 1-2…

牛客项目(五)-使用kafka实现发送系统通知

kafka入门以及与spring整合 Message.java import java.util.Date;public class Message {private int id;private int fromId;private int toId;private String conversationId;private String content;private int status;private Date createTime;public int getId() {retur…

不使用屏幕在树莓派4B安装Ubuntu22.04桌面版(64位)

因为时间有限只说一下基本路径: 1首先安装Ubuntu22.04server版本 2设置服务器版本的SSH和WiFi 3通过服务器版本安装Ubuntu-desktop升级到Ubuntu22.04桌面版 4在桌面版上安装远程控制软件:xrdp; 5使用Windows自带的远程桌面连接访问Ubuntu 6完成

Linux -----------------------Shell 流程判断

什么是shell Shell是操作系统的用户界面,负责接收和解释用户的命令,并将这些命令转化为操作系统内部能够理解的指令,然后执行相应的操作。Shell还允许用户编写脚本,以自动化和批处理任务,从而提高效率。在Linux系统中&…

【Nginx38】Nginx学习:SSL模块(二)错误状态码、变量及宝塔配置分析

Nginx学习:SSL模块(二)错误状态码、变量及宝塔配置分析 继续我们的 SSL 模块的学习。上回其实我们已经搭建起了一个 HTTPS 服务器了,只用了三个配置,其中一个是 listen 的参数,另外两个是指定密钥文件的地址…

【LeetCode刷题-排序】--912.排序数组

912.排序数组 方法&#xff1a;使用插入排序 class Solution {public int[] sortArray(int[] nums) {int len nums.length;//循环不变量:使nums[i]插入区间[0,i),使之成为有序数组for(int i 1;i<len;i){//先缓存这个元素&#xff0c;然后之前的元素逐个后移&#xff0c;…

LeetCode----52. N 皇后 II

 题目 n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。 示例 1: 输入:n = 4 输出:2 解释:如上图所示,4 皇后问题存在两个不同的解法。 示例 2: 输入:n = …

【CSDN 每日一练 ★★☆】【数学】旋转图像

【CSDN 每日一练 ★★☆】【数学】旋转图像 数学 数组 题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 示例 1&a…

前端埋点方式

前言&#xff1a; 想要了解用户在系统中所做的操作&#xff0c;从而得出用户在本系统中最常用的模块、在系统中停留的时间。对于了解用户的行为、分析用户的需求有很大的帮助&#xff0c;想实现这种需求可以通过前端埋点的方式。 埋点方式&#xff1a; 1.什么是埋点&#xff1f…

【Selenium+python】自动化测试登录界面

前言&#xff1a;已经学习selenium许久了&#xff0c;奈何公司的项目还在码代码中...&#xff0c;感觉自己学的东西快忘的差不多了&#xff0c;所以就找个网站练练手&#xff0c;顺便回顾一下UI自动化的知识&#xff0c;也希望跟我一样的小白有所受益。 一、用例分析&#xff…

线扫相机DALSA--常见问题四:修改相机参数,参数保存无效情况

该问题是操作不当&#xff0c;未按照正常步骤保存参数所致&#xff0c;相机为RAM机制&#xff0c;参数需保存在采集卡的ROM内。 保存参数步骤&#xff1a; ①首先将相机参数保存至User Set1&#xff1b; ②然后回到Board(采集卡)参数设置区&#xff0c;鼠标选中Basic Timing&a…

C++——类和对象(中)完结

赋值运算符重载 运算符重载 C 为了增强代码的可读性引入了运算符重载 &#xff0c; 运算符重载是具有特殊函数名的函数 &#xff0c;也具有其 返回值类型&#xff0c;函数名字以及参数列表&#xff0c;其返回值类型与参数列表与普通的函数类似。 函数名字为&#xff1a;关键…

中富转债,章鼓转债上市价格预测

中富转债-123226 基本信息 转债名称&#xff1a;中富转债&#xff0c;评级&#xff1a;AA-&#xff0c;发行规模&#xff1a;5.2亿元。 正股名称&#xff1a;中富电路&#xff0c;今日收盘价&#xff1a;30.03元&#xff0c;转股价格&#xff1a;36.44元。 当前转股价值 转债面…

桥接模式birdge

简介 桥接模式&#xff1a;将抽象与实现相分离&#xff0c;使他们可以独立变化。 角色 抽象化&#xff08;Abstraction&#xff09;角色&#xff1a; 该类持有一个对实现角色的引用&#xff0c;抽象角色中的方法需要实现角色来实现&#xff0c;抽象角色一般为抽象类&#xf…

NOA标配搭载率不足3%!英伟达中国「自研」智驾方案

汽车行业的特殊性&#xff0c;意味着&#xff0c;对于供应链来说&#xff0c;一家独大几乎不可能。对于芯片赛道来说&#xff0c;同样如此。 以智能驾驶为例&#xff0c;目前的供应链形态&#xff0c;也正处于变革的关键周期。各路玩家也都在尝试与车企合作模式的多元化。 高工…

并发请求控制

Chrome 浏览器最多并发6个请求。一般情况下&#xff0c;我们都会设置并发数为 3。 并发请求控制主要有两种区别&#xff1a;假设并发数为 3 三个请求为一组进行并发&#xff0c;这三个请求全部完成了&#xff0c;再进行下一组。在第一种方式的基础上加上滑动补位&#xff0c;…

Express框架开发接口之前台分类导航

1.初始化 const handleDB require(../handleDB/index) // 获取全部导航 exports.allNav (req, res) > {(async function () {})() } // 更新或者添加导航 exports.upNav (req, res) > {(async function () {})() } // 根据id删除 exports.delNav (req, res) > {(a…

Mac电脑风扇控制推荐 Macs Fan Control Pro 中文 for mac

Macs Fan Control Pro是一款功能全面、易于使用且具有良好兼容性和安全性的风扇控制软件&#xff0c;适用于各种Mac用户。 除了能够调整风扇速度外&#xff0c;Macs Fan Control Pro还支持实时监测硬件传感器的温度&#xff0c;例如CPU、硬盘等&#xff0c;同时显示每个传感器…

SpringBoot系列之自定义Jackson对象映射器格式日期数据

开发环境 JDK 1.8SpringBoot2.2.1Maven 3.2Mysql5.7.36开发工具 IntelliJ IDEAsmartGit 背景 在我之前的博客中&#xff0c;有对Springboot2.0集成Mybatis Plus做了比较详细的描述&#xff0c;现在这篇博客介绍&#xff0c;基于开源的jackson api来自定义ObjectMapping&…

MPLAB X IDE 仿真打断点提示已中断的断点?

这种中间带裂缝的是无效断点。 原因可能与XC编译器的优化有关&#xff0c;最后生成的汇编与C语言并不是一一对应的(官方给的解释是效率高)。所以这一行C语言转换的汇编代码可能并不在这个位置&#xff0c;也可能与其它汇编合并后根本就没有 我的解决方法是把优化等级调到最低&a…