SRC | 逻辑漏洞原理及实战

前言

作者简介:不知名白帽,网络安全学习者。

博客主页:不知名白帽_网络安全,CTF,内网渗透-CSDN博客

网络安全交流社区:https://bbs.csdn.net/forums/angluoanquan

目录

逻辑漏洞基础

概述

分类

URL跳转漏洞

概述

危害

漏洞寻找

Bypass

短信轰炸漏洞

概述

Bypass

任意密码修改漏洞

概述

场景

任意用户登录漏洞

概述

场景

越权漏洞

概述

平行越权

垂直越权

支付逻辑漏洞

概述

场景

条件竞争漏洞

概述

场景

实战

大米cms支付逻辑漏洞

熊海CMS越权后台登录


逻辑漏洞基础

概述

逻辑漏洞,是因为程序员在编写程序的时候,跟随着人的思维逻辑产生的不足,与传统漏洞的不同在于,逻辑漏洞是用过合法的方式来达到破坏的,比如密码找回,用户登录验证等功能由于程序设计的不足会产生很多问题,这一类漏洞一般的防护手段或者设备无法阻止,漏洞扫描器也难以发现。

程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误,一般出现在任意密码修改(没有旧密码验证)、越权访问、密码找回、交易支付金额、身份证认证、实名认证......等。

分类

url跳转漏洞

短信轰炸

任意密码修改漏洞

任意用户登录漏洞

越权漏洞

支付逻辑漏洞

条件竞争漏洞

URL跳转漏洞

概述

URL跳转漏洞也叫开放重定向漏洞,就是可以把用户重定向刀攻击者自己构造的页面去,简单的说就是可以跳转到指定的URL。

服务端未对传入的URL变量进行检查和控制,可能导致可恶意构造任意一个恶意地址,诱导用户跳转恶意网站。

危害

钓鱼

配合xss漏洞

配合csrf漏洞

配合浏览器漏洞(CVE-2018-8174)

漏洞寻找

1.登陆跳转我认为是最常见的跳转类型,认证完后会跳转,所以在登陆的时候建议多观察url参数。

2.用户分享、收藏内容过后,会跳转

3.跨站点认证、授权后,会跳转

4.站内点击其它网址链接时,会跳转

5.在一些用户交互页面也会出现跳转,如请填写对客服评价,评价成功跳转主页,填写问卷,等等业务,注意观察url。

6.业务完成后跳转这可以归结为一类跳转,比如修改密码,修改完成后跳转登陆页面,绑定银行卡,绑定成功后返回银行卡充值等页面,或者说给定一个链接办理VIP,但是你需要认证身份才能访问这个业务,这个时候通常会给定一个链接,认证之后跳转到刚刚要办理VIP的页面。

Bypass

1.利用问号绕过限制

url=https://www.baidu.com?www.xxxx.me

2.利用@绕过限制

url=https://www.baidu.com@www.xxxx.me

3.利用斜杠反斜杠绕过限制

https://www.landgrey.me/redirect.php?url=http://www.evil.com/www.landgrey.me

4.利用#绕过限制

https://www.baidu.com#www.xxxx.me

5.利用子域名绕过

https://www.baidu.com.xxx.com

6.利用畸形url绕过

https://landgrey.me/redirect.php?url=http://www.evil.com\.landgrey.me

7.利用跳转ip绕过

https:// www.ipaddressguide.com/   ip修改ip

8.利用xip.io绕过

http://www.qq.com.127.0.0.1.xip.io/

短信轰炸漏洞

概述

厂商在对信息发送的次数、时间没有做限制,或者只在前端做了限制,导致可以无限制发送信息,简单的说就是发送短信/邮件的包可以无限制的发送。

登录、注册、找回密码、绑定手机/邮箱、修改账号,一切需要验证的位置都可能存在短信轰炸。

Bypass

1.尝试在mobile参数后面加20%,即空格

2.尝试在mobile后面加字母

3.尝试对参数进行多次叠加

4.利用调用接口绕过短信&邮箱轰炸限制

5.修改cookie值绕过短信&邮箱轰炸限制

6.修改IP绕过短信&邮箱轰炸限制

7.利用大小写绕过邮箱轰炸限制

8.修改返回值绕过短信&邮箱轰炸限制

任意密码修改漏洞

参考:

https://www.freebuf.com/articles/web/176211.html

https://www.cnblogs.com/-qing-/p/10849028.html

概述

厂商在对密码修改的时候,卫队修改密码的凭证做严格的限制,导致可以被绕过进行任意的密码修改。

场景

1.验证码可爆破

       验证码四位,服务端未对验证时间次数进行限制

       验证码六位,但是不过期,并且没有对验证的次数进行限制

       验证码可以发送多次,而且每次都不会过期

2.验证码回传

       重置密码时,凭证为发送到手机上的验证码,但是通过拦截发送验证码请求对应的Response包时,发现验证码在Response包中。

       注意凭证,有时候返回包里面凭证可能在cookie里面或者在其他地方。

3.验证码未绑定用户

       输入手机号和验证码进行重置密码的时候,仅对验证码是否正确进行了判断,未对该验证码是否与手机号匹配做验证。

       任意账号都能够接收到验证码并能够使用A手机的验证码,B也可以拿来使用。

4.本地验证绕过

       客户端在本地进行验证码是否正确的哦按段,而该判断结果也可以在本地修改,最终导致欺骗客户端,误以为我们已经输入了正确的验证码场景:

       验证码返回在前台进行对比

       验证码在js里面直接进行对比

       直接修改返回包

5.跳过验证步骤

       对修改密码的步骤,没有做校验,导致可以输入最终修改密码的网址,直接跳转到该页面,然后输入新密码达到重置密码的目的。

       首选用自己的账号走一次流程,获取每个步骤的页面链接,然后记录输入新密码的对应链接。重置他人用户时,获取验证码后,直接进入输入新密码对应链接刀新密码的页面,输入密码重置成功。

6.token可预测

       使用邮件接收重置密码的链接时,一般都会带有一个token用户判断链接是否被修改过。如果token可预测,那么攻击者可以通过构造链接来重置任意的用户密码

       表现:

              基于时间戳生成的token

              基于递增序号生成的token

              基于关键字段生成的token

              Token有规律

7.同时向多个用户发送凭证

       将发送验证码的包截获,修改字段,添加多个账户,再发包。发现所写的有效字段均发送了凭证。

8.接收端可篡改

       重置密码时,凭证会发送到手机上,通过替换手机后,可以使用自己的手机号接受验证码。

9.万能验证码

       可遇不可求的奇葩场景,某些开发在未上线钱为了方便测试加了888888、000000这样的万能验证码,但是上线后没去删除测试的内容导致被恶意利用。

任意用户登录漏洞

参考:

https://blog.csdn.net/zhangge3663/article/details/104827700

概述

逻辑错误导致可以登陆任意账户。撞库获取用户名(手机号或邮箱),通过验证码登录,若抓包修改接受验证码的手机号/邮箱,然后使用该类验证码能使撞库的用户登录,即产生漏洞。

场景

1.验证码回显

在手机验证码登录的时候,有一个验证码回显,直接用验证码登录即可。

2修改返回包登录

首先在重置或登录的时候抓登录包,然后再修改返回包,把错误的变成正确的,服务器被欺骗,登陆成功。

3.通过遍历id可以登录/修改

       通过修改对应的userid号,利用修改其他的userid。

       首先注册一个账号,访问带有uid的地址,修改uid登录任意用户。

4.sql注入万能密码

       原理:select id from users where username = ‘admin’ or 1=1 #’ and password = “

       利用sql注入语句 admin ‘ or 1=1 #组合语句。

5.系统默认弱口令

       系统在搭建的时候,设置了默认口令,例如123456等这种密码,或者时默认的强口令,qwerasdf1231这种,但是密码是通用的就可以利用这个密码进行登录任意账户。

6.撞库

       不同的系统有可能会用一个相同的数据库,例如4A的统一认证,拿到了一个系统的数据库用户即可通用·,或者旧密码未改动,可以通过社工库查到旧密码,进行撞库。

7.cookie混淆

       在登录的时候是根据cookie中的某一个字段来进行判断登录的角色,这个cookie的字段可以自己任意修改,最常见的就是userid字段。

越权漏洞

概述

越权访问漏洞,又可以分为横向越权访问漏洞与纵向访问漏洞两类。一般是指一个正常用户A可以操作另外一个用B才能做的事。

越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查时对客户端请求的数据过分相信而遗漏了权限的判定。

平行越权

       在发送请求时观察请求参数,尝试修改用户id或者其他参数验证是否能查看不属于自己的数据,进行增删改查,若成功则存在平行越权的漏洞。

垂直越权

       查看请求中是否有身份标识,比如userid,角色id之类的,有的话尝试修改,重新请求更高权限的操作。

支付逻辑漏洞

概述

开发人员往往为了方便,直接在支付的关键步骤数据包中直接传递需要支付的金额。而这种金额后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额提交。只需要抓包看到有金额的参数修改成任意即可。

场景

1.修改购买数量

       在进行支付订单的时候,可以修改物品的数量来进行操作,可以通过支付一件的价格购买多件,或者改成负数进行增加资金。

2.修改支付价格

       抓包修改价格参数的内容,在支付当中,购买商品一般分为三个步骤:订购、确认信息、付款,在这三个步骤中都有可能存在漏洞,进而可以尝试修改小额度或者修改负。

3.修改支付对应的商品

       通过修改商品对应的id号,可以用低价购买高价格的商品

4.修改支付状态

       没有对支付状态的值跟实际订单支付状态进行校验,导致点击支付时,抓包修改决定支付或未支付的参数为支付状态的值,从而达到成功。

5.修改附属优惠/状态

       修改优惠券金额

       修改积分金额

       无限制试用

       修改优惠价

6.测试数据包未删除

       开发在测试的时候有一些测试数据未删除,导致用户可以购买测试数据,或者领取测试的优惠券

条件竞争漏洞

概述

       竞争条件发生在多个线程同时访问同一个共享代码、变量、文件等没有进行锁操作或者同步操作的场景中,开发者在进行代码开发时常常倾向于代码会以线性的方式执行,而且他们忽视了并行服务器会并发执行多个线程,这就会导致意想不到的结果

场景

1.文件上传

2.领取优惠券

3.抽奖

4.转账

实战

大米cms支付逻辑漏洞

进入首页

注册用户

网站首页

购买手机

提交订单

BP抓包

发现价格price=5400之前有一个参数qyt=1,改为qyt=-1

下单成功

熊海CMS越权后台登录

登录后台

http://localhost//iseaCMS_V1/admin/index.php?r=login

没有密码,无法登录

代码审计

查看inc文件夹下的checklogin.php文件

 不难发现, 接收cookieuser的内容,如果user字段为空,则跳到登录页面

如果cookie含有user就会欺骗从而登录成功。

使用cookie editor修改cookie

重新访问后台页面

http://localhost//iseaCMS_V1/admin/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android:RecyclerView封装,打造列表极简加载

前言 mBinding.recycler.linear().divider().set<OrdinaryListBean> {addLayout(R.layout.layout_ordinary_item)}.setList(getList()) 如果我要说&#xff0c;除了数据和布局之外&#xff0c;以上的几行代码&#xff0c;就实现了一个列表加载&#xff0c;有老铁会相信…

Django学习笔记-表单(forms)的使用

在Django中提供了了form表单&#xff0c;可以更为简单的创建表单模板信息&#xff0c;简化html的表单。 一、网页应用程序中表单的应用 表单通常用来作为提交数据时候使用。 1.1 创建表单模板文件夹 在项目文件夹下创建一个template文件夹&#xff0c;用于存储所有的html模…

XCP详解「总目录」

目录 XCP详解「总目录」 1 概览 2 理论 3 实践 4 其他 XCP详解「总目录」 基础学习&#xff0c;慢慢补充 1 概览 2 理论 3 实践 XCP详解「3.1ASAP2新建A2L文件」 XCP详解「3.2CANape新建工程导入A2L」 XCP详解「3.3A2L信号添加和更新」 XCP详解「3.4CANape中新建A2L文…

学习 C语言第二天 :C语言数据类型和变量(下)

目录&#xff1a; 1.变量的介绍以及存储 2.算术操作符、赋值操作符、单目操作符 3.scanf和printf的介绍 1.变量的介绍以及存储 1.1.变量的创建 了解了什么是类型了&#xff0c;类型是用来创建变量的。 变量是什么呢&#xff1f;在C语言当中不经常变的量称为常量&#xff0c;经常…

Qt : day1

1.聊天界面 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {qDebug() << this->size(); //获取当前页面尺寸this->setFixedSize(500, 600); //设置固定尺寸this->setWindowTitle("聊天框"); //设置窗口…

OpenAI Code Interpreter 的开源实现:GPT Code UI

本篇文章聊聊 OpenAI Code Interpreter 的一众开源实现方案中&#xff0c;获得较多支持者&#xff0c;但暂时还比较早期的项目&#xff1a;GPT Code UI。 写在前面 这篇文章本该更早的时候发布&#xff0c;但是 LLaMA2 发布后实在心痒难忍&#xff0c;于是就拖了一阵。结合 L…

mybatisPlus入门篇

文章目录 初窥门径1.1 初识MybatisPlus1.2 MybatisPlus的特性1.3 MybatisPlus的架构模型 入门案例2.1 准备相关开发环境2.2 搭建springboot工程2.3 创建数据库2.4 引入相关依赖2.5 创建实体类2.6 集成MybatisPlus2.7 单元测试2.8 springboot日志优化 初窥门径 1.1 初识Mybatis…

【TiDB理论知识06】PD架构与作用

目录 一 PD的架构与功能 PD架构 PD作用 名词解释 路由功能 二 TSO的分配 概念 分配过程 性能问题 高可用问题 三 PD的调度原理 总流程 1 信息收集 2 生成调度 3 执行调度 四 Label的作用 Label的配置 给TiKV打标签 PD配置 一 PD的架构与功能 PD架构 PD集群…

GPT-4 模型详细教程

GPT-4&#xff08;Generative Pretrained Transformer 4&#xff09;是 OpenAI 的最新语言生成模型&#xff0c;其在各类文本生成任务中表现优秀&#xff0c;深受开发者和研究者喜爱。这篇教程将帮助你理解 GPT-4 的基本概念&#xff0c;并向你展示如何使用它来生成文本。 什么…

二叉树详解

这里写目录标题 前言树型结构(了解)树常见的概念树的表示形式&#xff08;了解&#xff09;树的应用 二叉树概念两种特殊的二叉树二叉树的性质(重要)二叉树的存储二叉树的基本操作 前言 本篇博客讲述了以下几个知识点 树的基本概念二叉树概念及特性二叉树的基本操作 树型结构…

DevExpress WPF Tree List组件,让数据可视化程度更高!(一)

DevExpress WPF Tree List组件是一个功能齐全、数据感知的TreeView-ListView混合体&#xff0c;可以把数据信息显示为REE、GRID或两者的组合&#xff0c;在数据绑定或非绑定模式下&#xff0c;具有完整的数据编辑支持。 DevExpress WPF 拥有120个控件和库&#xff0c;将帮助您…

一遍过JavaSE基础知识

文章目录 前言安装Java Development Kit (JDK)安装jdk配置开发环境验证是否安装配置成功 编写第一个Java程序hello world运行Java程序的流程 数据类型和变量数据类型变量 程序逻辑控制条件语句循环语句跳转语句 数组声明和创建数组访问数组元素数组长度遍历数组多维数组 面向对…

【亲测可用】Linux上安装Redis教程

一、下载并解压Redis 1、执行下面的命令下载redis&#xff1a; wget https://download.redis.io/releases/redis-6.2.6.tar.gz 2、解压redis&#xff1a; tar xzf redis-6.2.6.tar.gz 3、移动redis目录&#xff0c;一般都会将redis目录放置到 /usr/local/redis目录&#xff1a…

excel 生成sql技巧

"update 表名 set 字段名"&A2&" where 字段名"&B2&";"

Log4j源码解析

Log4j源码解析 主要流程 Logger logger Logger.getLogger(Main.class); 1、通过Logger.getLogger(Class clazz) 或 Logger.getLogger(String name)进入。 2、加载LogManager进jvm, 执行静态代码块执行初始化, 创建出RepositorySelector实例及LoggerRepository实例(Hierarchy…

ansible自动化运维(二)剧本、角色编写实战

&#x1f618;作者简介&#xff1a;一名运维工作人员。 &#x1f44a;宣言&#xff1a;人生就是B&#xff08;birth&#xff09;和D&#xff08;death&#xff09;之间的C&#xff08;choise&#xff09;&#xff0c;做好每一个选择。 &#x1f64f;创作不易&#xff0c;动动小…

【学习篇】SAE J1939协议—常用到的知识点

前言&#xff1a;以下关于SAE J1939协议知识点的学习均抄录自书籍&#xff0c;侵权请联系删除。 故障诊断 SAE J1939诊断应用层定义了用于诊断服务的报文帧&#xff0c;诊断报文&#xff08;DM&#xff09;提供了用于车辆进行诊断和维修的功能。 诊断故障代码定义 SAE J193…

C语言每日一题:5.至少是其他数字的两倍+两个数组的交集。

第一题&#xff1a;至少是两倍其他数字的最大数 第一题&#xff1a; 思路一&#xff1a; 1.需要我们返回最大数值的下标&#xff0c;所以先循环遍历我们的这个数组记录一下最大的数值和下标位置。 2.使用qsort排序&#xff08;总是存在唯一的最大整数&#xff09; 3所以排序之…

Java编程实现遍历两个MAC地址之间所有MAC的方法

Java编程实现遍历两个MAC地址之间所有MAC的方法 本文实例讲述了java编程实现遍历两个MAC地址之间所有MAC的方法。分享给大家供大http://家参考&#xff0c;具体如下&#xff1a; 在对发放的设备进行后台管理时,很多时候会用到设备MAC这个字段,它可以标识唯一一个设备。然而在数…

安全渗透--正则表达式

什么是正则表达式&#xff1f; 正则表达式是一组由字母和符号组成的特殊文本&#xff0c;它可以用来从文本中找出满足你想要的格式的句子。 一个正则表达式是一种从左到右匹配主体字符串的模式。 “Regular expression”这个词比较拗口&#xff0c;我们常使用缩写的术语“regex…