逻辑漏洞学习-知识点总结

news2024/11/24 5:58:38

逻辑漏洞就是程序在实现业务逻辑上存在的错误,辑漏洞的出现通常是因为程序在设计业务逻辑时考虑不够全面,或者程序员的思维过程存在瑕疵,没有充分考虑到各种可能的情况

大部分程序员在设计的时候,目标是实现功能需求,考虑并不是很全面,所以是可能存在漏洞的,接下来,学习身份验证漏洞。身份验证漏洞是在识别用户身份这一功能方面存在的漏洞

(个人感觉:逻辑漏洞是思维上的对决)

(一)身份验证漏洞

1、未限制爆破

使用场景:在用户登录的时候,没有对用户身份等进行再次验证,只有对登录用户名和密码进行验证,没有第三方例如图片验证码、手机短信验证码等的验证

破解策略:首先对用户名爆破,获取到一个用户之后,其次对该用户的密码进行爆破,这是较为常见的常见,使用到的工具是burpsuite

案例演示:DVWA靶场

 2、限制ip爆破

使用场景:在防护措施中,有一条策略是,在短时间内有来次某条ip的大量访问,尝试进行登录,会被识别是攻击行为,会对ip进行封锁,导致该ip不能使用

破解策略:使用ip代理池,写个脚本,调用git(分布式控制系统)开源的代理接口,利用不同的ip对其访问,

import requests
import re
def post():
    curl = "https://ip.900cha.com/"
    proxy = {'http':'47.92.113.71:80'} #代理地址以及端口,现在估计已经失效,如果需要使用,可以自建资源池
    header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,like Gecko)
    Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4208.400'}
    post = requests.get(curl,headers=header,proxies=proxy).text #请求报文
    # post = post.encode('ISO-8859-1').decode("gb2312") #iso编码转汉字
    # print(post) #打印网站
    chuli(post) #将丢给chuli进行取值
    def chuli(post): #整体模块均为数据处理,取值
    ip = re.findall('准确归属地:.*', post)[0] #取出IP地址
    print(ip) #输出地址


if __name__ == '__main__':
post()

3、限制密码错误爆破

场景:在有些登录页面,我们太久忘记登录忘记密码了,输入几次密码错误之后,会提示还有几次登录尝试,这是因为,后台管理对于安全考虑,会限制账号的登录次数,如果超出限制次数,账号会被锁定,需要管理员解封或者过一定时间才会解锁

破解策略:这种限制只是对一个账号的限制,只对一个账户进行登录次数的限制,我们可以换个账号进行爆破,返回使用弱口令反过来爆破账户方式。只要账户足够多,总存在弱口令的账户。使用工具也是burpsuite

4、多字段爆破

场景:有些网址在验证身份时候,不止需要验证账号与密码,还有其他的参数,例如token,这因为后台用于验证身份时候,不仅仅是对账号秘密验证,还加上了一层验证,常见的例如token,token的值是根据你的身份信息、摘要身份信息等生成的身份验证码,token是唯一的,经过加密了,是有时效的,使用一次之后,就失效。

破解策略:burpsuite的Intruder模块,

 在intrder模块的grep-xetract中,可以从响应包中提取token,然后放在攻击列表中

5、限制登录次数频率爆破

场景:在登录时候,在一定时间内,不管密码正确还是不正确,都会对登录次数进行限制,例如10分钟之内,只允许登录10次,不然就对账户进行封锁。

策略:可以采用延时爆破的方法,在burpsuite中可以设置爆破的时间,

6、authorization爆破

场景:authorization加密通常用于进行API接口的访问授权,加密算法常用base64算法。

策略:利用burpsuite抓包之后,可以利用burpsite自带base64解码,也可以利用一些在线网址或工具进行解码

7、密文传输爆破

场景:在用户进行登录完成时候,可能会对数据传输进行密码处理,

破解策略:查看源代码,找到加密的算法与方式,根据加密方式进行逆向解密,(加密算法有许多,联合起来就更多了,所以需要弄清楚加密过程与算法,进行逆向解密)

8、图片验证码爆破

场景:带有图片的验证码是我们较为常见的验证方式,

破解策略:burpsuite+pkav联合使用你,利用burpsuite进行抓包,把包进行复制到pkav中

9、session固定攻击

场景:session常用在结束后,当我们在一个页面中登录完之后,不管是关闭网站,还是进入网站的其他页面,都是还是识别登录状态,这就是session的功能。当用户在访问服务器时,服务器会为该用户创建一个Session,并分配一个唯一的Session ID,在后续的请求中,服务器可以根据这个Session ID来识别客户端。

破解:在请求登录时候,url会带有一个session,登录成功之后会将登录成功的信息绑定到这 个session中,可以发送带有session的URL给相关工作人员诱导其登录,相当于获取了其身份信息

10、cookie欺骗漏洞

场景:cookie和session一样,都是用来识别用户信息的,不同的是cookie是存储在客户端(用户),而session是存储在服务器中,

策略:cookie的值只是简单编码,进行抓包获取到cookie值之后,修改lsLogin值为1可以判定为用户已经登录

11、未进行登录凭证验证

场景:这样没有登录凭证是没有cookie或是session这样凭证识别,进入该网址,也没有跳转到登录页面,没有扫描限制的就能直接访问

策略:要发现这样的网页,是通过目录扫描工具进行扫描,然后对扫描到目录逐个的连接,如果直接就能访问成功

(二)验证码方面的漏洞

1、验证码复用

场景:在登录的时候,还需要另一侧验证,例如短信验证,图片验证,这里的验证码复用,是指在登录失败的时候,任然可以使用上一次的验证码,如下图

策略:通过brupsuite抓包,输入对的验证码后,反复发送查看回包,如果没有改变,就是该漏洞,这时候有跟没有验证码都一样

2、验证码绕过

场景:在设计验证的时候,有一种是把验证码传入后端之后,后端会返回一个状态码,告诉前端是否是通过,例如下图

 策略:利用bp像上图一样,进行抓包,然后发到重发器中,对状态码的值进行修改,有些网址的正确状态码是y或者yes

3、客户端验证码

场景:验证码是前端编写,参数没有传入后端进行验证,可以查看代码,看看登录按钮没有js方法,如果看到验证是通过前端验证,就可以确定。或者写入错误的验证码,通过bp抓包,如果抓不到包,而且是弹出错误,就是前端验证

策略:随便输入账号和密码,第一次输入正确的验证码,之后利用bp对其抓包,把包放入重发器中,可以发现,不管怎么更改验证码,甚至删除验证码,都是报用户和密码方面的错误如图

4、短信验证码-无效验证

场景:在一些新的上线系统中,有验证码模块,但是还没有于业务逻辑上关联,导致验证码无效,这种是小概率,但也是存在的

5、短信轰炸

场景:在验证码验证过程中,如果在响应包中,验证码是与号码一起发送过来,就可以尝试在重发器中放入验证码,观察验证码是够匹配,如果匹配,就可以一直发送,造成短信轰炸

(三)忘记密码区域存在的漏洞

1、忘记密码-验证次数不限制

场景:忘记密码几乎是所有的网址都存在的功能,当用户忘记自己密码时候,选择忘记密码找回密码,一般是通过手机短信验证,或者邮箱验证。用户输入验证码之后,服务器会将正确的验证码与其对对比,正确就进入下一个操作,如果错误就再次进行操作。

漏洞1:短信轰炸漏洞。如果服务器对验证次数不进行限制,通过bp抓包,进行设置错误的验证码,进行重发攻击,一直发送短信,(一般是一条短信一毛钱),大量的发送也会造成费用的提高

漏洞2:验证码爆破漏洞。一般验证码是4位或者6位,而且都是数字,这种情况是极其容易爆破成功的。

2、忘记密码-前端绕过验证

场景:在验证过程中,服务器可能是返回正确的验证码,然后跟输入的验证码进行匹配

策略:可以按F12进入开发者模式,监听jsom数据(这是响应信息),一般传输的数据加密方法是base64算法,可以对其解密,这样就可以直接获得正确的验证码,进行绕过。

3、忘记密码-设置新密码时候更改其他人密码

场景:在通过验证号码之后一些列正确操作之后,最后一步是更改密码,这里也存在漏洞,如果在最开始的时候利用bp进行抓包,而且在输入正确的信息,到了最后一步,进行输入新密码。在此时,在bp的数据包中,把用户名更换成其他已经存在的用户,看看会不会通过。因为我们之前输入正确的信息,得到了正确的数据包,在最后一步输入新的密码,如果不再进行二次验证,是可以通过的。也就是可以更改其他人的密码

4、忘记密码-通过邮箱找回

场景:在通过邮箱重置密码这种方式中,一般邮件会将含有token的重置url发送过来,用户通过点击邮箱,来达到重置密码。在发送过来的连接中,通过token来做为重置的凭证,token是经过某种加密算法进行加密(一般是md5),一般而言,开发者习惯通过时间戳、递增序号、关键字段(邮箱地址等)作为因子,进行加密。

 漏洞:通过bp抓包,获取到邮箱的响应,再对token进行解密

5、忘记密码-服务器端存在的漏洞

场景:在重置密码的时候,可能是有用户名这选项的,只不过是灰色,是不能修改的。这不能修改的功能是通过前端的js实现。

 漏洞:如果用户点修修改之后,用bp对其抓包,发现在处输数据的参数中,有用户名字段,而且还没有二次验证,那么把抓到的包,利用重发器修改用户名字段,改成其他的用户,进行发送,就会照成随意对其他用户密码进行修改。

6、默认密码

场景:在一些大型的公司或者学校的网站上,在设置大批量的新建账号时候,都需要有一个密码,所有就采用默认密码,例如一些银行默认是六个0或是123456,一些学校的账号默认是身份证后六位(本人学校就是这种)

漏洞:弱口令,很容易的破解

(四)、注册区域存在的漏洞

1、注册未验证

场景:在有些网址上,在注册用户的时候,是没有通过邮箱,或者手机号验证身份这一功能

漏洞:如果利用bp、脚本等工具,就行大批量注册,一直注册,不断的给数据库存储信息,会照成注册轰炸,数据库可能会存储内存不足,从而崩溃,这也属于dos应用层攻击

2、注册-个人信息伪造

场景1:在注册的时候,对身份证等信息进行错误填写,随意的不按照规则输入,尝试进行注册,看是错误的信息是否出现注册成功的情况。

场景2:即使有输入格式的验证,例如身份证必须18位,一般这些验证都采用前端验证,可以对其抓包之后,绕过前端的验证,对服务器传输错误的信息

 漏洞:如果伪造的信息能够注册成功,那么对注册进行绕过

3、前端验证审核绕过

场景:在注册信息验证这一功能业务,是在服务器实现的,有可能服务器的响应是发送一些状态码给前端,前端通过状态码进行判断是否同意注册。

漏洞:对其抓包,修改状态码,就可以对其绕过。

4、激活绕过

场景:大部分网址会对用户注册的手机号或者邮箱进行验证,但是有时候返回验证信息会放入回包中,只是对其隐藏,不展现出来。

漏洞:对其抓包,就可以进行修改信息,伪造信息

5、用户名覆盖

场景:有一些不严谨的开发人员中,对其注册的时候,当输入用户名时,没有先对数据库中的用户名查询,判断是否已经存在该用户。

漏洞:注册数据库已经存在的用户时,如果用户名字段不是唯一,就会存储两个用户信息,在登录的时候,大部分都是查询到存在信息,就给予通过。

(五)权限类漏洞

越权分三种

水平越权:权限是同级别的,但是是给不同的对象使用。例如:一般不同的用户只有对自己信息修改的权限,如果出现用户A能对用户B的信息进行修改,这就是水平越权

垂直越权:从低权限到高权限的翻越。例如普通用户到了超级用户

交叉越权:水平越权与垂直越权的集合

1、水平越权

场景1;在某些购火车票、机票等功能,需要提交用户的身份id(用户的手机号,身份证、证件号等唯一标识),

场景2:在某些查询快递信息等功能,需要提交对象id(例如订单号、记录号)

场景3、在下载某些文件时候,如果文件非常长的大,文件都会有文件id,文件下载也是通过文件id下载

漏洞:这些场景使用到的身份id、对象id、文件id,都是数字组成,在利用bp进行抓包之后,对这些id遍历爆破,从某个id开始,不断的+1递增,不断尝试爆破。如果能对其中一个,提交成功,购买车票成功、查询订单号成功、下载文件成功。这些不是属于自己的权限返回,这就是水平越权。可能严重情况的后果就是泄露用户的敏感信息

2、垂直越权

场景:在识别用户身份的时候进行权限判断的时候,可能是在前端的js代码实现。一般高权限的用户非常少,只需要判断该用户是不是在高权限用户中,就可以。

漏洞:按F12进入开发者,把js方法去掉。就可以成功越权

(六)其他类型漏洞

1、条件竞争漏洞:

场景:两个或多个并发进程按照不同的顺序访问共享资源,从而导致不可预见的行为或错误。例如,当两个线程尝试同时写入同一个文件时,如果它们没有正确地同步,可能会导致文件的内容出现不一致的情况

2、订单金额任意修改

场景:在一些中小型的的购物网站,可能存在这个漏洞,在电商系统或支付系统中,支付的金额是前端编写,在提交的时候抓包,抓到的数据包可能可以进行随意更改

3、接口无限制枚举

场景:在扫描一个api端口时候,不断的尝试爆破猜测猜出资源,这是没有对验证或者防护带来的结果

4、支付漏洞

场景:在支付时候,通过抓包,修改篡改价格、数量、状态、接口、用户名等参数,使得小钱购买到商品,甚至是0元购买商品,这样的漏洞就是支付漏洞

5、越权支付

场景:例如用他人的钱支付自己的东西,这就是一直越权支付,在支付的时候,修改特殊的参数,例如id、用户名等。

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

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

相关文章

Linux基础知识点 有这篇就足够了!!

❄️作者介绍:奇妙的大歪❄️ 🎀个人名言:但行前路,不负韶华!🎀 🐽个人简介:云计算网络运维专业人员🐽 目录 一、 从认识操作系统开始 1.1 操作系统简介 1.2 操作系统…

chatgpt赋能Python-python分表

介绍 Python是一种流行的编程语言,适用于各种应用程序开发,包括网络应用程序、数据库应用程序以及数据分析和科学计算。Python分表是基于Python编写的分表工具,可以帮助开发人员更轻松地管理大型数据库表格。 Python分表是如何工作的&#…

0219-810

3GPP TS 02.19 V8.1.0 (2005-06) 前言 本技术规范由第三代合作伙伴计划 (3GPP) 制定。 本文件的内容取决于 TSG 的持续工作,并可能在 TSG 正式批准后发生变化。 如果 TSG 修改本文档的内容,TSG 将重新发布 确定发布日期的变化和版本号的增加如下&…

低代码开发平台选择指南:如何选出最适合企业的低代码平台?

低代码平台的兴起改变了公司处理软件开发的方式。这些平台使组织能够快速高效地构建应用程序,该应用程序可以利用预设组件和开箱功能。但是,因为有这么多低代码平台可以使用,所以为你的组织选择合适的平台可能是一个挑战。本文将探索如何低代…

FreeRTOS任务切换

PendSV异常 SVC 用于产生系统函数的调用请求。例如,操作系统不让用户程序直接访问硬件,而是通过提供一些系统服务函数,用户程序使用 SVC 发出对系统服务函数的呼叫请求,以这种方法调用它们来间接访问硬件。因此,当用户…

(字符串 ) 459. 重复的子字符串——【Leetcode每日一题】

❓459. 重复的子字符串 难度:简单 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s “abab” 输出: true 解释: 可由子串 “ab” 重复两次构成。 示例 2: 输入: s “aba” 输出: false 示例 3: 输入: s “…

IDEA+Mysql调试常见异常解决办法_kaic

IDEA导入项目出现Error: java: 程序包javax.servlet.http不存在错误的解决办法 解决方法:打开File>Project Structure>Libraries,点击右侧加号,寻找到tomcat的lib文件夹,点击ok,IDEA会自动重新Rebuild Project&…

数据结构 | 图的深度优先遍历和广度优先遍历(C语言)

一、数据结构定义 1、图 #define MaxVertexNum 100 // 最大可存储的节点数目/*图*/ typedef char VexterType; typedef int EdgeType;typedef struct GraphMatrix {VexterType Vexs[MaxVertexNum]; //结点 EdgeType Edges[MaxVertexNum][MaxVertexNum]; //边int vexnum, a…

使用 MCSM 面板一键搭建我的世界服务器,并内网穿透公网远程联机

文章目录 前言1.Mcsmanager安装2.创建Minecraft服务器3.本地测试联机4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射内网端口 5.远程联机测试6. 配置固定远程联机端口地址6.1 保留一个固定TCP地址6.2 配置固定TCP地址 7. 使用固定公网地址远程联机 转载自远程穿透文章&…

【AI】Stable-Diffusion-WebUI使用指南

注:csdn对图片有审核,审核还很奇葩,线稿都能违规,为保证完整的阅读体验建议移步至个人博客阅读 最近AI绘画实现了真人照片级绘画水准,导致AI绘画大火,公司也让我研究研究,借此机会正好了解一下…

图像处理:GrapeCity Documents Imaging 6.1.2 Crack

适用于 .NET 6 的快速、强大的映像 API 库,在代码中应用高级图像处理,零依赖关系。 加载和保存图像文件,如BMP,JPEG,TIFF,GIF,ICO,SVG,WebP和PNG 对灰度和 RGB 图像应用抖动和阈值等…

Ribbon 负载均衡策略 —— 图解、源码级解析

文章目录 负载均衡策略RandomRuleRoundRobinRuleRetryRuleWeightedResponseTimeRuleBestAvailableRuleAvailabilityFilteringRuleZoneAvoidanceRule Ribbon 负载均衡策略源码RandomRule源码RoundRobinRule源码BestAvailableRule源码RetryRule源码 通过本文你可以学习到&#xf…

自学大语言模型之BERT

BERT 模型由 Jacob Devlin、Ming-Wei Chang、Kenton Lee 和 Kristina Toutanova在BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding中提出。它是一种双向变换器,使用掩码语言建模目标和对包含多伦多图书语料库和维基百科的大型语…

开源高星精选,10个2023企业级Python测试项目,再不学习时间就没了

纸上得来终觉浅,光学习理论知识是不够的。 想要学好软件测试必须要结合实战项目深入掌握,今天给大家分享十个2022最新企业级Python软件测试项目: ​ 添加图片注释,不超过 140 字(可选) ▌Rank 1&#xf…

SEW-Movifit软件的调试步骤

首先安装软件(名称和版本为SEW_Software_MotionStudio_V5-9-0-4-compact)。安装完毕后打开软件,新建一个工程。 3、新建完成之后会进入如下画面。 4、点击红框内的图标进行设置 5、打开后会显示如下画面,在下拉菜单中选择serial这…

【Unity3D】高斯模糊特效

1 高斯模糊原理 边缘检测特效中使用了卷积运算进行了边缘检测,本文实现的高斯模糊特效同样使用了卷积运算,关于卷积核和卷积运算的概念,读者可以参考边缘检测特效。 本文完整资源见→Unity3D高斯模糊特效。 我们将用于模糊处理的卷积核称为模…

C++模拟牛顿力学(2D)

简介 如何用计算机来模拟真实世界呢?计算机最大的功能是计算,而物理学的种种公式就把现实世界中的物理规律以数学的语言描绘了出来,从而使我们可以通过计算大致模拟现实世界的物体运动。因此不难想到把物理学定律(这里用的是牛顿…

SAP-MM-维护物料主数据的类(Class)和特性(Characteristic)

一.说明 物料主数据有千个左右条目,但仍不能满足各类物料自有特性的描述,为此SAP启用了类(Class)和特性(Characteristic),并在物料主数据的分类视图(Characteristic&…

推荐一款免费开源的代码质量分析工具

文章目录 一、简介二、环境安装三、使用说明四、其他报错UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe6 in position 29: ordinal not in range(128)**linux:****windos:** 五、安全编程规范 一、简介 Flawfinder是一款开源的关于C/C静态扫描分析工具&#xf…

C++入门——关键字|命名空间|输入输出

前言: 今天我们又开启了一个崭新的大门——C面向对象编程语言,C是怎么来的呢?答案是:因为C语言的有很多不足,我们的祖师爷用着不爽,就不断更改,就改出来了一门新的语言,C。C语言兼容…