Src挖掘技巧分享 | 谈谈业务逻辑漏洞(一)

简介: Src挖掘技巧分享 | 谈谈业务逻辑漏洞

谈谈业务逻辑漏洞

业务逻辑漏洞简介

业务逻辑漏洞,是由于程序逻辑不严谨或逻辑太过复杂,导致一些逻辑分支不能正常处理或处理错误,这样的漏洞统称为业务逻辑漏洞。

简单理解:就是编程人员的思维逻辑不够严谨导致攻击者有机可乘的漏洞

逻辑漏洞还是一种虽然没有在owasp top10 中提及到,但是往往会存在的漏洞。好像一名隐士,大隐隐于市,然而造成的破坏可能一点不比sql注入,xss等漏洞小。如下是逻辑漏洞的top10挖掘方向:

f9899a9bd099292003571fb0481dae94_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

根据漏洞出现位置来总结

逻辑漏洞大概出现在如下几处。下面我们根据出现位置来一处一处进行总结

342d80929b52c402b32975c2ded91f57_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

登陆部分存在的逻辑漏洞

暴力破解用户名或密码

暴力破解用户名密码的情况,一般出现在登陆部分没有验证码机制,没有根据用户名限制失败次数,没有根据ip限制失败次数等情况下。

通常思路:

  1. 直接拿密码字典爆破某一个用户名
  2. 拿固定的弱口令密码,去跑top xxx的用户名
  3. 如果只是用户名限制失败次数,可以使用思路2的方法
  4. 在存在返回提示用户名错误或者密码错误的情况下,可以分别爆用户名和密码

常见限制:有时候会发现用户名或者密码是密文加密,这时可能是通过前端或者其他方式加密,对于简单的来说base64编码和md5的签名是很好识破的,在爆破的时候可以选择encode和hash

利用cookie&session

cookie伪造

Cookie伪造:通过修改 Cookie 中的某个参数来实现登录其他用户

测试方法:

1.使用一个账号登录,找一个可以证明身份的页面,例如首页的欢迎 xxx 或者是个人中心显示昵称的地方

2.刷新该页面拦截请求,观察 Cookie 中的字段和值,例如 userid=xxx,修改Cookie中的值,把 xxx 改成 admin

3.forword 放行,页面显示 admin 的信息,则存在此问题。

• 修复方法:对于客户端标识的用户信息,使用 Session 会话认证方式,避免通过 Cookie 去仿冒其他人的身份。

Session会话固定攻击

Session会话固定攻击:一种诱骗受害者使用攻击者指定的会话标识(Session id)的攻击手段,利用了服务器的session 不变的机制

攻击步骤:

1.攻击者通过某种手段重置目标用户的 Session id,然后监听用户会话状态

  1. 目标用户携带攻击者设定的Session id 登录站点
  2. 攻击者通过 Session id 获得合法会话

• 攻击者重置 Session id 的方法:通过xss,嗅探等方法取得用户的session,修改数据包。

• 修复方法:每次登陆成功之后重新生成session,sessionID闲置过久时,进行重置sessionID

案例-益云公益广告越权修改漏洞

用户A创建一个广告,记住id为420

c71649f44361b9bc2d6eef852ed9cf4f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

用户B也创建个广告,进入修改页面,截断修改请求,并将id改为420

6276b4842138e8624a4bfdecb98ba371_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

938e1caaf15267f48b1af273143f2001_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

支付处存在的逻辑漏洞

支付处存在的逻辑漏洞很多,但是一言以蔽之:数据篡改。

下面我们先来看一个支付处逻辑漏洞的复现。

Tiny_shop CMS 逻辑漏洞复现

环境搭建

LAMP环境的安装直接省略掉了,phpstudy一把梭非常的舒适。将源码copy到phpstudy的WWW文件夹中,启动lamp环境,即可进入安装页面

http://127.0.0.1/TinyShop_v3.0/install/index.php?step=1

d2231e8f4148b827975aa77f14af7220_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


4dcdc95dcbda6b0701fb49a5153da641_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

ps:环境搭建成功后,我发现访问index页面显示空白页面。在大佬的提醒下发现是自己php版本不对(7.x)换成php5.x版本再次访问即可

52536df637914c5d4f81a8a972b137f3_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

支付逻辑漏洞复现

首先点击最上方的登陆按钮,登陆默认账户 test@test.com 密码 test  (自己注册的)

这里我们随便选择了一个商品,选择好产品参数之后,点击购买。

bf2cbf42dfc3afd8c6027289a0cbc44d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

点击购买时,使用bp进行抓包,在数据包中,将表示商品数量的num变量改为负数,然后forward这个数据包。

bce5cf1f7a346d6bb83757ec1b0a737f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这样就利用网站漏洞成功薅到了店家羊毛

0fdd3ba96aded289a59794e641964fb8_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

除了上述修改商品数量的方法,支付处的逻辑漏洞还包含如下几种思路,由于操作比较简单且大同小异,这里为了节省篇幅只放利用思路。

修改商品编号

如果业务是通过商品编号来判断价格的话,可能存在只修改A商品编号为B商品编号,做到以A商品的价格购买B商品

条件竞争

支付处,多线程请求付款确认,结果如果余额为负数,则存在该漏洞

金额修改

金额直接写在了post或者get请求中,对其进行修改达到修改了商品金额的效果

充值中放弃订单未失效

在充值中选取大额充值订单,放弃订单,获得订单号,之后充值小额订单,拿到充值成功的界面,将订单号修改为放弃的大额订单,观察是否成功



相关文章
|
6月前
|
监控 安全 网络安全
网络安全行为可控定义以及表现内容简述
网络安全行为可控定义以及表现内容简述
95 1
|
安全 前端开发 Java
深入分析GadgetInspector核心代码(一)
深入分析GadgetInspector核心代码
244 1
深入分析GadgetInspector核心代码(一)
|
存储 JSON 安全
Src挖掘技巧分享 | 谈谈业务逻辑漏洞(二)
Src挖掘技巧分享 | 谈谈业务逻辑漏洞
468 0
Src挖掘技巧分享 | 谈谈业务逻辑漏洞(二)
|
Web App开发 安全 前端开发
Src挖掘技巧分享 | 谈谈业务逻辑漏洞(三)
Src挖掘技巧分享 | 谈谈业务逻辑漏洞
303 0
Src挖掘技巧分享 | 谈谈业务逻辑漏洞(三)
|
前端开发 JavaScript NoSQL
第一次提供技术服务涉及的技术点和思考过程
一年前的今天,我肯定还不敢做前后端联动的工程,没有这个视野。如今有了些许,不敢自傲,还需学习。今天我站在稍上一点的角度,谈一谈我的思考过程及技术点。
86 0
|
缓存 安全 Java
深入分析GadgetInspector核心代码(三)
深入分析GadgetInspector核心代码
173 0
深入分析GadgetInspector核心代码(三)
|
存储 安全 Java
深入分析GadgetInspector核心代码(二)
深入分析GadgetInspector核心代码
102 0
深入分析GadgetInspector核心代码(二)
|
机器学习/深度学习 人工智能 算法
谈谈从分析到行动看数据驱动和数据信息的区别
近年来,“数据驱动”这个术语已经被广泛使用,很多人谈论要成为一个数据驱动的组织。
谈谈从分析到行动看数据驱动和数据信息的区别
|
数据采集 机器学习/深度学习 数据挖掘
谈谈数据交易中的几个重点问题
数据是具有特殊属性的资产,数据既然要流通和交易,就要把数据进行产品化,形成不同的数据产品。
谈谈数据交易中的几个重点问题
|
数据采集 存储 监控
谈谈基于DGI框架的数据治理
在大数据和数据科学时代,大多数组织都意识到数据在加速结果方面的潜在力量。然而,大多数人面临的挑战是,不断变化的客户期望和相关需求,以确保准确和可访问的数据,以指导决策,以满足客户的不同需求。
谈谈基于DGI框架的数据治理