逻辑漏洞渗透与攻防(六)之其他类型逻辑漏洞

news2024/11/19 19:20:16

目录

其他类型逻辑漏洞

数据包重放漏洞

条件竞争漏洞

订单金额任意修改

接口无限制枚举

支付漏洞  

修改商品数量

修改支付状态 

修改附属值 

越权支付  

无限制试用  

支付漏洞总结  

 SRC中的逻辑漏洞总结


其他类型逻辑漏洞

数据包重放漏洞

漏洞介绍:通过数据包重放,可以造成短信轰炸、邮件轰炸、重复提交订单等
漏洞原理:后台未进行相关操作的技术导致数据包重放
漏洞点:短信验证码、邮件校验、提交订单等功能。
修复方案:
修复思路(针对短信、邮件)
构造一个Hashmap<String,short>,存放邮箱或电话号码及对应次数
只要某个邮箱或者电话号码次数够了,就不能继续发送了
或者计算两次发送的时间间隔,时间过短就不继续发送了
通用修复方案: 需要建立token机制或验证码机制,一次有效

条件竞争漏洞

漏洞介绍: 条件竞争是指一个系统的运行结果依赖于不受控制的事件的先后顺序。当这些不受控制的事件并没有按照开发者想要的方式运行时,就可能会出现bug。尤其在当前我们的系统中大量对资源进行共享,如果处理不当的话,就会产生条件竞争漏洞。说的通俗一点,条 件竞争涉及到的就是操作系统中所提到的进程或者线程同步的问题,当一个程序的运行的结果依赖于线程的顺序,处理不当就会发生条件竞争。
漏洞修复
-修复思路:限制同一时间内访问方法的只有单一线程
案列如下:
银行提现:
当我们在手机端进行提现操作时,账户余额为500元,向服务器发送提现500元的请求,提现完毕后账户余额应当清零。
那么如果在我提现成功和它进行清零事件的间隙时间里,我再次发送出提现500元的请求会发生什么呢?条件竞争利用成功的结果就是多了500大洋。
关于条件竞争的漏洞案列大家可以去看这篇文章的Pass-18,我这里就不过多提及了。 【文件上传漏洞渗透与攻防(一)_私ははいしゃ敗者です的博客-CSDN博客】

订单金额任意修改

很多中小型的购物网站都存在【订单金额任意修改】漏洞。在提交订单的时候抓取数据包或者直接修改前端代码,然后对订单的金额任意修改。

经常见到的参数大多为: rmb 、value 、amount 、cash 、fee 、money 

我们将这些参数修改,比如value=94修改为value=0.01然后放包,然后支付金额便被修改成了0.01元。

关于支付的逻辑漏洞这一块还有很多种思路,比如相同价格增加订单数量,相同订单数量减少产品价格,订单价格设定为负数,无限叠加优惠券等等。

接口无限制枚举

有些关键性的接口因为没有做验证或者其它预防机制,容易遭到爆破攻击。 常见账号爆破,密码爆破,验证码爆破,上文都已经提及,还有其他的:

支付漏洞  

支付漏洞是 高风险漏洞 也属于 逻辑漏洞 ,通常是通过 篡改价格、数量、状态、接口、用户名等传参 ,从而造成 小钱够买大物 甚至可能造成 0元购买商品 等等,凡是 涉及购买、资金等方面的功能处 就有可能存在支付漏洞。
快捷支付原理:商户网站接入支付结果,有两种方式,一种是通过 浏览器进行跳转通知 ,一种是 服务器端异步通知
浏览器跳转通知
基于用户访问的浏览器 ,如果用户在银行页面支付成功后,直接关闭了页面,并未等待银行跳转到支付结果页面,那么商户网站就收不到支付结果的通知,导致支付结果难以处理。而且浏览器端数据很容易被篡改而降低安全性( 这种方式数据经过了客户端浏览器,极大的可能 性被第三方恶意修改 )
服务器端异步通知:
该方式是 支付公司服务器后台直接向用户指定的异步通知URl发送参数 ,采用POST或者GET的方式。商户网站接受异部参数的URL对应的程序中,要对支付公司返回的支付结果进行签名验证,成功后进行支付逻辑处理,如验证金额、订单信息是否与发起支付时一致,验证正常则对订单进行状态处理或为用户进行网站内入账等。
1、支付三步曲——订购、订单、付款
三个步骤当中的随便一个步骤进行修改价格测试,如果前面两步有验证机制,那么你可在最后一步付款时进行抓包尝试修改金额,如果没有在最后一步做好检验,那么问题就会存在,其修改的金额值可以尝试小数目或者尝试负数。
案列一-淘宝网某处存在严重支付漏洞
1、充值前截图

2、选择充值的套餐

3、使用抓包工具。截图数据包

4、查看结果

案列二、 重放交易

购买成功后,重放其中的请求,竟然可以多次购买商品。
案列:通过网银购买豆元后可以将豆元倍增,修改并重复发起某个http请求可以将豆元倍增。

修改商品数量

没有对购买的数量参数进行限制,导致可随意修改,最常见的修改方式是改成 负数或者小数。
案列-某美商城存在支付漏洞
下单

 

修改数量为-1

 

修改支付状态 

没有对支付状态的值跟实际订单支付状态进行校验,导致点击支付时抓包修改决定支付或未支付的参数为支付状态的值从而达到支付成功
案列:同程旅交汇低价支付高价订单订单随意修改

获取订单

点击返回修改

 

提交订单并且抓包 

get型数据,查看数据

重点就在这条url:
http://www.17u.net/WDHandler/LineOrder.ashx?action=updateLine&Platform=netlineid=4593689&b2bMemberId=207967&TotalPrice=2750.00&TotalMan=1&TotalChild=0&b2cname=13111112343&b2cphone=13111112343&b2cemail=&remark=&dateText=2015-3-19%200:00:00&orderid=254831
经过测试,这条url,可以在不登录的情况下更新订单,也就是只要知道orderid,就可以更新订单,更重要的是orderid是自增值,很容易推测orderid号。
接下来,我们来更改我刚才下的单,从上面的url里面有两个地方一个是lineid,一个是totalprice,这两个经过尝试是要与网站里面已有的产 品一样的,所以我找了一个便宜的产品。
这个产品的id是1806901,价格是50,
然后拿出上面记录的url,修改
http://www.17u.net/WDHandler/LineOrder.ashx?
action=updateLine&Platform=net&lineid=1806901&b2bMemberId=207967&TotalPrice=50&TotalMan=1&TotalChild=0&b2cna
me=13111112343&b2cphone=13111112343&b2cemail=&remark=&dateText=2015-3-19%200:00:00&orderid=254831
然后执行一下,随便在哪执行都行,然后再到订单里面看我们的订单

 

修改附属值 

(1)修改优惠劵金额/数量、(2)修改积分金额、(3)修改运费金额
案列-积分兑换
1、先来看一看随便一个兑换物品的详情,可以发现是积分+金额的

2、点击兑换,拦截数据包,在提交订单转向银联支付页面,修改支付金额为1块钱。

3、支付 

越权支付  

通过修改一些 特殊传参(如:id,username,openid) 来达到用他人的资金来干购买自己的商品。
案列:小程序越权积分兑换
1、访问积分榜

2、从数据包中可以看到openid泄露,这里其实泄露了很多openid,为了方便只截了一个,接下来配合积分兑换越权使用他人账户兑换物品

3、Burpsuite中设置,将请求中原有的我的openid替换为排行榜中的第一名的openid

 

4、进行兑换

 

5、可以看到地址信息是空的,没有地址无法购买,而添加地址进行的认证是使用的OpenSession进行验证,无法越权上传地址,所以只能通过欺骗前端绕过填写地址,经过数据包读取,发现是生成订单时返回的地址信息addressInfo为空,则可以通过修改订单的响应数据包,将创建订单时返回的地址数据替换为我们的地址数据。
可以看到目前的请求数据包中的openid和响应中的addressinfo都被替换为了我们的原数据包:

替换后的数据包:

 

 

无限制试用  

通过修改 特殊传参(如:id,pay,test) 来达到无限制试用。
案列:艺龙旅行网严重支付漏洞
1、首先,在艺龙随便下了一个订单,到支付页面,选择信用卡支付
输入正确的卡号,有效期姓名,身份证等相关信息随便输。
居然支付成功了。
那么问题来了
说明这里只判断信用卡有效期即可成功支付
接下来就简单了,我们只要尝试爆破出信用卡的有效期即可
然后发现错误的有效期也能使订单到判定支付是否成功的阶段
所以。下多个订单

随便点击一个订单到支付页面抓包

 

 

订单+有效期爆破。隔几秒放过
那么订单都会到判断支付是否成功的阶段,如果订单支付成功,说明有效期是正确的
成功爆破出信用卡有效期并成功支付

 

支付漏洞总结  

1、找到关键的数据包
可能一个支付操作有三四个数据包,我们要对数据包进行挑选。
2、分析数据包
支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠),要尝试对数据包中的各个参数进行分析。
3、不按套路出牌
多去想想开发者没有想到的地方。
4、pc端尝试过,wap端也看看,app也试试
防御方法
1、在后端检查订单的每一个值,包括支付状态;
2、校验价格、数量参数,比如产品数量只能为整数,并限制最大购买数量 ;
3、与第三方支付平台检查,实际支付的金额是否与订单金额一致;
4、如果给用户退款,要使用原路、原订单退回。比如:退押金,按用户原支付订单原路退回;
5、MD5 加密、解密、数字签名及验证,这个可以有效的避免数据修改,重放攻击中的各种问题;
6、金额超过指定值,进行人工审核等。

 

 SRC中的逻辑漏洞总结

注册:
短信轰炸
验证码安全问题
密码爆破
邮箱轰炸
用户任意注册、批量注册
用户名枚举
XSS(有框的地方就可以尝试插XSS)
登录:
短信轰炸、验证码安全问题、密码爆破、邮箱轰炸
SQL注入
撞库
抓包把password字段修改为空值发送
认证凭证替换、比如返回的数据包中包含账号,修改账号就能登录到其他账号
Cookie仿冒
修改返回包的相关数据,可能会登陆到其他的用户
找回密码:
短信邮箱轰炸、短信邮箱劫持
重置任意用户账户密码、验证码手机用户未统一验证
直接跳过验证步骤
购买支付、充值(要利用抓包去仔细查看每一个可用的参数)
交易金额、数量修改、更换支付模块(比如更换支付的模块金额)
交易信息订单编码/导致信息泄露
整数溢出,int最大值为2147483647,超过最大值
修改充值账户
支付绕过
抽奖活动
刷奖品、积分
并发
优惠卷、代金卷
并发逻辑漏洞(burp批量获取优惠券)
修改优惠券金额、数量
订单信息
订单信息遍历、泄露
订单信息泄露导致用户信息泄露
删出他人订单
会员系统:
修改个人信息上传文件,上传带弹窗的html
如遇上上传xlsx、docx,可能存在XXE,上传恶意的文档盲测
图片上传也可能遇到imagereagick命令执行,上传恶意图片
视频上传如果使用ffmpeg<3.2.4(视频按帧分割成图片),上传恶意avi盲测ssrf
用户横向越权访问、遍历、导致用户信息泄露
SQL注入、个人简历处存储XSS个人信息注册的名称也可以插入XSS
传输过程:
明文传输账户密码
修改信息处无session/token导致csrf
POST/COOKIE注入
评论:
POST注入
存储型XSS
无session/token导致CSRF
验证码问题:
万能验证码
返回包中存在验证码
删除验证码或者cookie中的值可以爆破账号密码
短信轰炸:
一直重放
删除修改cookie,重放数据包
遍历参数发送数据包
手机号后面加空格或者前面加其他的比如+86或者逗号分号等,然后重发数据包
请求参数修改大小写,或者添加请求参数比如&id=1
一个站的登录处可能做了防护,但是再找回密码处可能没有安全防护,或者在注册流程中没有安全防护,所以说多测试接口
如果对手机号一天的次数进行了限制,还可以再发一次短信,DO intercept之后修改为成功回显
水平越权 :
主要登陆后还是修改参数,主要找到多个接口不断测试
关注网页源代码,有时候会有表单,但被bidden(隐藏标签)给隐藏起来了,可以修改返回包然后尝试获取数据检测
多个账号,主要分析请求参数

 

数据泄露:
再找回密码处,填写数据后抓包查看返回信息,有可能存在敏感数据返回
任意用户密码重置:
目前大部分都是在修改密码处参数修改
有些是前端验证
支付逻辑漏洞:
金额直接传输导致篡改:直接对下单的金额进行修改值,这里可以使用fd或者burp抓包
确定支付之后还可以加入购物车:把商品放入购物车点击下单支付,会跳转到微信,支付宝等第三方支付平台。
请求重放:购买成功之后,继续重放请求,可以让购买的商品一直增加。
请求参数干扰:金钱做了签名认证之后,修改后不通过,但是在里面仍然会有一个参数对金额产生影响导致问题产生。
订单替换:订单替换发生在支付之后的事件处理,同时向服务器发起二次支付请求一个多一个少,支付金额少的,然后支付之后进行替换,告知服务器订单支付完成,并且过程可以反复的回放。
用户替换:在支付过程中发生用户替换现象,首先登陆自己的账户,然后取得另外一个人的账户名等有效信息,在业务流程中用对方的用户名替换自己的用户名,用对方的余额购买完成后,再替换自己的账户名,这样就形成别人的钱买自己的东西
登录绕过:
部分网站的身份验证放在了前端,因此只需要将response包中的相关字段进行修改,比如0改成1,false改成true,就可以登录任意用户账号
水平越权:
遍历ID-在一些请求中,GET和POST中有明显的ID数字参数(手机号、员工号、账单号、银行卡号、订单号等等)ID替换如果程序对用户标识进行了hash或者加密,而无法破解用的什么方式的话,就无法通过遍历ID来获取其它用户的信息了,此时可 以尝试注册两个账号,通过替换两个ID加密后的值,判断程序是否对权限进行了验证,如果没有,也会存在越权问题
垂直越权:
观察cookie中的session字段,可能某些字段或者参数代表身份,尝试修改

 

 

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

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

相关文章

SpringBoot下RabbitMQ的实战应用:动态创建和动态监控队列、死信、备份交换机

一、应用场景 业务中心根据业务需求向特定用户发送消息&#xff1b;发送前不确定由哪个用户接收 特定用户接收特定消息&#xff1b;用户可以退出&#xff0c;再切换别的用户登录&#xff0c;用户登录后只接收与自已对应的消息 二、总体要求 项目要足够稳健&#xff0c;消息不能…

(3分钟了解)SLAM后端优化的四大金刚!g2o ceres gtsam SE-Sync

后端优化常用的库有g2o ceres gtsam 和 se-sync这篇博客首先介绍se-sync&#xff0c;然后比较四种库之间的差异。编辑切换为居中添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09;编辑切换为居中添加图片注释&#xff0c;不超过 140 字&#xff08;可选&…

Python实现检测图片中的人脸,将识别到的人脸向量存入数据库,并实现提交的图片的人脸信息与入库的人脸信息进行比对

facenet_face_regonistant 完整代码下载地址&#xff1a;Python实现检测图片中的人脸&#xff0c;将识别到的人脸向量存入数据库 利用facenet实现检测图片中的人脸&#xff0c;将识别到的人脸向量存入数据库&#xff0c;此外利用post提交一个新图片&#xff08;也可以提交一个…

【Qt】通过继承ui界面类的方式加载.ui转化的.h头文件显示窗体

【Qt】通过继承ui界面类的方式加载.ui转化的.h头文件显示窗体1、背景2、实例3、验证1、背景 将.ui文件转化为.h头文件参考如下博客&#xff1a; 【Qt】将QtDesigner生成的.ui文件转化为.h头文件 https://jn10010537.blog.csdn.net/article/details/128589666其中生成的ui_wid…

Web学习

Web概念JavaWeb&#xff1a;使用Java语言开发基于互联网小贷项目软件架构&#xff1a;B/S架构详解静态资源HTML举例标签学习文件标签<!--注释-->文本标签图片标签* img&#xff1a;展示图片* 属性&#xff1a;* src&#xff1a;指定图片的位置* 代码&#xff1a;<!--展…

你的PC机或者终端,是怎么上网的?怎么连接到网络的?无线网怎么接入Internet,如何访问网络资源?

你的PC机或者终端&#xff0c;是怎么上网的&#xff1f;怎么连接到网络的&#xff1f;无线网怎么接入Internet&#xff0c;如何访问网络资源&#xff1f; 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都…

就该去造空调吗?

今天在知乎上收到一个网友的提问&#xff1a;大佬&#xff0c;我想咨询点人生问题&#xff0c;但是碍于没工作囊中羞涩&#xff0c;实在没钱问。希望能问一问人生选择问题 是这样的一个是奥克斯空调电控部&#xff0c;一个是大陆汽车电子重庆研发&#xff0c;奥克斯偏裸机&…

光耦合器:其类型和在DC/AC电路中的各种应用

光耦合器&#xff1a;其类型和在DC/AC电路中的各种应用 介绍 光耦合器是一种在两个隔离电路之间传输电信号的电子元件。光耦合器也称为光隔离器、光电耦合器或光隔离器。 光耦合器通常用于电路&#xff0c;尤其是低电压或高噪声敏感电路&#xff0c;用于隔离电路&#xff0c…

【C++常用算法】STL基础语法学习 | 排序算法

目录 ●sort ●random_shuffle ● merge ●reverse ●sort 1.功能描述&#xff1a; 对容器内元素进行排序 2.查看sort定义下底层代码的函数原型&#xff1a; 3.向vector容器中插入10个无序数&#xff0c;并且用sort排序法对其进行升序和降序&#xff08;内建仿函数greater<…

伦敦交通局在这里为您的无障碍旅程提供支持

伦敦交通局首席人事官特里西亚赖特&#xff08;Tricia Wright&#xff09;详细介绍了伦敦交通局努力使该市的交通网络更易于所有乘客使用的方式&#xff0c;并强调尽管已经做了很多工作&#xff0c;但这项工作只是一个开始。公共交通是伦敦人和游客在首都生活中必不可少的。它连…

c++写一个连接池

用c写一个数据库连接池 数据库连接池是为了提高数据库连接的性能&#xff0c;进行连接复用 对于复杂数据库进行大量引用的场景下就会出现访问瓶颈 常见的两种解决方法就是&#xff1a;为了减少磁盘 I/O的次数&#xff0c;在数据库和服务器的应用中间加一层 缓存数据库&#…

2023/1/7 Vue学习笔记-4-组件的理解

1 对组件的理解 模块与组件、模块化与组件化&#xff1a; 1.模块&#xff1a; &#xff08;1&#xff09;理解&#xff1a;向外提供特定功能的js程序&#xff0c;一般就是一个js文件 &#xff08;2&#xff09;为什么&#xff1a;js文件很多很复杂 &#xff08;3&#xff09;作…

元编程:constexpr +特例化 判断质数

重点&#xff1a; 1.constexpr 函数支持在编译期间完成计算 2.特例化是模板中一种定义 using namespace std;//编译期进行判断 constexpr bool isPrime(unsigned int p) {for (unsigned int d2;d<p/2;d){if (p % d 0){return false;}}return p > 1; }template<int…

【安全硬件】Chap.6 芯片生产猜疑链与SoC设计流程;可能会存在的安全威胁Untrusted IC Supply Chain Threats

【安全硬件】Chap.6 芯片生产猜疑链与SoC设计流程&#xff1b;可能会存在的安全威胁Untrusted IC Supply Chain Threats背景1. IC和半导体产业的全球化2. 芯片生产猜疑链——Untrusted IC Supply Chain Threats可能会存在的安全威胁3. SoC Design Flow主要参考来源背景 在现代 …

专属 Python 开发者的完美终端工具

目录 前言 1.Rich 兼容性 2.Rich 安装说明 3.Rich 的 Print 功能 4.自定义 Console 控制台输出 5.Console 控制台记录 6.表情符号 7.表格 8.进度条 9.按列输出数据 10.Markdown 11.语法突出显示 12.错误回溯(traceback) 前言 今天给大家推荐一个非常精美的终端工…

数学建模——线性规划

目录 一. 线性规划 1.基本概念 线性规划的标准形式为&#xff1a; 线性规划的解&#xff1a; 线性规划三要素&#xff1a; 灵敏度分析&#xff1a; 2.matlab的实现 二. 整形规划 1.整型规划分类 2.基础模型 2.1 非线性约束条件的线性化 3.模型求解 一.钢管下料问题…

【模板初阶】

目录 1. 泛型编程 2. 函数模板 2.1 函数模板概念 2.2 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.4.1 隐式实例化 2.4.2 显式实例化 2.5 模板参数的匹配原则 3. 类模板 3.1 类模板的定义格式 3.2 类模板的实例化 4 总结 1. 泛型编程 如何实现一个通用的…

【Linux】简单理解静态库(.a)和动态库(.so)

在程序运行的基础原理这篇文章中&#xff0c;最后的代码进行链接过程&#xff0c;我们提到了动态库和静态库的概念。那么什么是动态库和静态库呢&#xff1f;我们来简单理解一下 静态库和动态库1.静态库1.1 静态链接优点1.2 静态链接缺点2.动态库2.1 动态链接的优点2.2 动态链接…

Ae 案例:制作漏光效果

本文介绍使用 Ae 内置效果插件制作漏光效果 Light Leak的一般方法与步骤。效果视频1、新建合成。持续时间&#xff1a;10 秒。2、新建纯色图层&#xff0c;命名为“漏光效果”&#xff0c;然后添加分形杂色 Fractal Noise效果。调整出如云朵一般柔和且层次多的分形杂色图。分形…

TCP中的状态转移(三种情况)

文章目录前言一、 TCP的生命周期二、另外两种挥手情况三、经典四问总结前言 博主个人社区&#xff1a;开发与算法学习社区 博主个人主页&#xff1a;Killing Vibe的博客 欢迎大家加入&#xff0c;一起交流学习~~ 在正常情况下&#xff0c;TCP要经过三次握手建立连接&#xff0c…