逻辑漏洞原理及实战

前言

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

博客主页:不知名白帽_网络安全,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/

 

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

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

相关文章

51单片机串口

该部分的笔记来自视频教程链接https://www.bilibili.com/video/BV1bt4y197NR/?spm_id_from333.788&vd_sourceb91967c499b23106586d7aa35af46413 一、51单片机串口基础介绍 一般的应用层的协议中采用和校验或CRC校验,而奇偶校验还是解决基本通信中的帧格式中的…

Eclipse整合tomcat时要注意的几点

Eclipse整合tomcat时要注意的几点 1、安装目录及jdk 2、参数配置 注意:Arguments的配置,日志输出文件目录及java内存大小设置等,如下: -Dcatalina.base"E:\apache-tomcat-7.0.52" -Dcatalina.home"E:\apache-tomc…

无符号数和有符号数的“bug”

1. 起因 在实现kmp算法时&#xff0c;出现了诡异的现象&#xff0c;看下面的代码&#xff1a; int KMP (const char *s, const char *t) {int lenS strlen (s);int lenT strlen (t);int next[lenT];get_next (next, t);int i 0;int j 0;while (i < lenS && j …

程序化广告还有未来么?——程序化领域变化的底层逻辑和反思

三、近几年程序化广告领域的变化底层逻辑是什么呢&#xff1f; 当前国内程序化生态的状态&#xff0c;更像是希腊的古典时代&#xff1a;古希腊时代的城邦高度繁荣的时期。很多人可能对古希腊城邦没有概念&#xff0c;我们解释一下&#xff1a; 所谓城邦就是城市国家&#xff0…

涵子来信——自己的电脑——谈谈想法

大家好&#xff1a; 上一次谈论了苹果的那些事&#xff0c;今天我们来聊聊电脑。 我的第一台电脑现在成了这样子&#xff1a; 很多人以为是我自己拆了电脑做研究&#xff0c;其实是我的第一台电脑&#xff0c;真的坏了。 2021年&#xff0c;我有了属于我自己的第一台电脑&am…

链表 --- C语言实现

本篇文章来详细介绍一下数据结构中的链表。 目录 1.链表的概念及结构 2.链表的分类 3.单链表的实现 4.链表的面试题 5.双向链表的实现 6.顺序表和链表的区别 1.链表的概念及结构 概念&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素…

【HTML5】拖放详解及实现案例

文章目录 效果预览代码实现 效果预览 代码实现 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>一颗不甘坠落的流星</title><style>#div1,#div2 {float: left;width: 100px;height: 27px;margin: 10px;paddin…

关于 Qt在windows使用mingw32编译器时从Qt5.9切换至Qt5.12出现“C2001:常量中有换行符“不修改编码 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/131901444 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

Git简介与工作原理:了解Git的基本概念、版本控制系统和分布式版本控制的工作原理

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

day33哈希表

1.哈希表 常见的哈希表分为三类&#xff0c;数组&#xff0c;set&#xff0c;map&#xff0c;C语言的话是不是只能用数组和 2.例题 题目一&#xff1a; 分析&#xff1a;题目就是判断两个字符串出现的次数是否相同&#xff1b; 1&#xff09;哈希表26个小写字母次数初始化为0&…

RB-tree(红黑树)详解

RB-tree(红黑树) 红黑树的规则如下&#xff1a; 1.每个节点不是红色就是黑色 2.根节点为黑色 3.如果节点为红色&#xff0c;那么它的子节点必须为黑色 4.任何一个节点到NULL&#xff08;树的尾端&#xff09;的任何路径所包含的黑节点个数相同 简而言之就是每个路径的黑色节点数…

模拟量输出FC S_RTI(信捷C语言源代码)

模拟量输出FC SCL源代码请查看下面博客: PLC模拟量输出 模拟量转换FC S_RTI_博途模拟量转换指令_RXXW_Dor的博客-CSDN博客1、本文主要展示西门子博途模拟量输出转换的几种方法, 方法1:先展示下自编FC:计算公式如下:intput intput Real ISH Real //工程量上限 ISL Real //工…

【数据挖掘】将NLP技术引入到股市分析

一、说明 在交易中实施的机器学习模型通常根据历史股票价格和其他定量数据进行训练&#xff0c;以预测未来的股票价格。但是&#xff0c;自然语言处理&#xff08;NLP&#xff09;使我们能够分析财务文档&#xff0c;例如10-k表格&#xff0c;以预测股票走势。 二、对自然语言处…

【OpenCV】常见问题及解决办法

文章目录 0 前言1 中文乱码问题2 非法路径问题 0 前言 本篇博客主要是总结OpenCV使用过程中遇到的一些问题&#xff0c;以及对应的解决办法&#xff0c;这里重点是关注OpenCV&#xff0c;既有基于C的&#xff0c;也有基于Python的&#xff0c;比较全面&#xff0c;而且也会随着…

RocketMQ教程-安装和配置

Linux系统安装配置 64位操作系统&#xff0c;推荐 Linux/Unix/macOS 64位 JDK 1.8 Maven3.0 yum 安装jdk8 yum 安装maven 1.下载安装Apache RocketMQ RocketMQ 的安装包分为两种&#xff0c;二进制包和源码包。 点击这里 下载 Apache RocketMQ 5.1.3的源码包。你也可以从这…

Windows11的VS201x编译OpenCV+Contrib+CUDA

(1) CUDA下载&#xff0c;注意要和cudnn版本号相关。 我安装的是cuda11.0,注意VS2015不能编译CUDA11&#xff0c;所以用VS2015的话需要下载CUDA 10。因为更高的版本目前还没有cudnn。 (2) 下载和安装VS2015。 (3) 下载和解压CMake。 CMake地址&#xff1a; Releases Kitw…

Android dp to pix resources.getDimension(R.dimen.xxx) ,kotlin

Android dp to pix resources.getDimension(R.dimen.xxx) ,kotlin <?xml version"1.0" encoding"utf-8"?> <resources><dimen name"my_size_dp">20dp</dimen><dimen name"my_size_px">20px</dime…

数据仓库表设计理论

数据仓库表设计理论 数仓顾名思义是数据仓库&#xff0c;其数据来源大多来自于业务数据(例如:关系型数据库)&#xff0c;当设计数仓中表类型时(拉链表、增量表、全量表、流水表、切片表)时&#xff0c;应先观察业务数据的特点再设计数仓表结构 首先业务数据是会不断增长的-即…

练习——动态内存分配的笔试题

今天我们分享几道经典的笔试题&#xff0c;做完直接变成陈泽 第一题 ~~ --------------------------------------------------------------------------------------------------~~ void GetMemory(char* p) {p (char*)malloc(100); } void Test(void) {char* str NULL;Get…

阿里云容器镜像仓库(ACR)的创建和使用

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…