Src挖掘技巧分享谈谈业务逻辑漏洞

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

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

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

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

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

通常思路:

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

cookie伪造

测试方法:

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

Session会话固定攻击

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

攻击步骤:

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

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

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

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

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

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

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

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

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

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

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

修改商品编号

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

条件竞争

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

金额修改

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

充值中放弃订单未失效

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

由于没有对用户权限进行严格的判断,导致低权限的账号(比如普通用户)可以去完成高权限账号(比如超管)范围内的操作,如果能够成功操作,则称之为越权操作。越权漏洞形成的原因是后台使用了不合理的权限校验规则导致的。

开发人员在对数据进行操作时对客户端请求的数据过分相信,遗漏了对于客户端权限的仔细判定。

越权漏洞主要分为水平越权和垂直越权两大类。

例如两个不同的公司A和B,通过修改请求,公司A可以任意修改B公司的员工、部门、考勤等信息。

垂直越权危害:

向下越权:一个高级用户可以访问低级用户信息(暴露用户隐

例如同一个公司的职员A和经理B。显然他们在公司后台管理系统中账号的管理权限不同。垂直越权通过修改请求,职员A可以修改不在他管辖范围内的员工、考勤、工资等(自我加薪??)

关于如上介绍的总结话,偷我亲爱的来自MS08067团队的讲师一张图是再好不过了

环境准备:

下载metinfoV4.0CMS源码进行网站搭建

下载后将源码解压至phpstudy的web根目录即可。

登陆后进入修改基本信息的页面,随便修改一个密码,点击提交信息的同时上传

抓包修改useid为管理员id

成功修改管理员账号密码为123456,尝试登陆

成功登陆,在界面风格->模板管理->添加新模板处发现一处文件上传漏洞。将冰蝎木马压缩成zip文件成功上传

查看一下编辑模板参数,报错是在意料之中的,我们需要的是木马路径

使用冰蝎服务器端连接木马。成功执行

环境准备

复现该漏洞需要注册两个网站账号

1.test@test.com/1234562.ms08067/123456

漏洞复现

分别用chrome和微软两个浏览器登陆这两个账号

通过抓包,获取ms08067用户的phpsessid为:df9jjuneuuqo5hgjjsid106km4

在另一账号test@test.com的修改密码操作上抓包,并将sessid修改为ms08067账号的sessid。尝试更改密码为123456789。放包,显示修改成功。

尝试使用新密码登陆ms08067账户,发现登陆成功。

漏洞描述

环境搭建

使用虚拟机安装docker,vulhub

cdvulhub/couchdb/CVE-2017-12635#进入靶场目录docker-composeup-d#开启靶场dockerps#查看端口一个小报错处理

p.s:运行命令docker-composeup-d这里出现了一个报错。百度搜了一波,发现这是由于当前用户未加入docker组。解决方案是运行命令

sudogpasswd-a${USER}docker然后退出当前用户比如切换为root,再次切换回原用户。然后执行docker-composeup-d就ok了。

漏洞原理分析

由于Erlang和JavaScript对JSON解析方式的不同,导致语句执行产生差异性(对于给定的键,Eralang解析器将存储两个值,但是JavaScript只存储第二个值)

如:Erlang:

{[{<<“a”>>,<<“1”>>},{<<“a”>>,<<“2”>>}]}

JavaScript:

{a:“2”}

可以被利用于,非管理员用户赋予自身管理员身份权限。

访问服务器ip:5984并抓包将抓到的包发送给重发器(Repeater)并将发送数据改为如下(服务器IP地址为自己搭建的IP):

PUT/_users/org.couchdb.user:qaqHTTP/1.1Accept:/Host:192.168.160.141:5984/Accept-Language:enUser-Agent:Mozilla/5.0(WindowsNT10.0;WOW64;rv:49.0)Gecko/20100101Firefox/49.0Content-Type:application/jsonConnection:closeContent-Length:101{"type":"user","name":"qaq","roles":["_admin"],"password":"666666"}返回403错误:{“error”:”forbidden”,”reason”:”Only_adminmaysetroles”}报错原因是只有管理员才能设置Role角色。通过增加一个roles字段数据包的方式绕过限制

复现完记得销毁环境哦~目录中执行命令

现在通达官网已经把版本升级到了11.7,所以下载11.6版本需要自己寻找资源

傻瓜式安装,配置界面如下。完成安装之后就可以暂时不用管它了。记得接触80端口占用(一般是要把phpstudy关掉)

安装完之后就可以访问网站首页了。这个漏洞复现手动过程比较容易,执行exp写马就可以了

exp:

脚本内容如下,核心思路就是删除网站里的一个名为auth.inc.php的文件,进而越权拿shell

蚁剑拿shell

程序执行之后出现了一个URL,为一句话木马所在位置。使用webshell管理工具(如蚁剑链接即可)

利用phpstudy搭建,下载源码后copy进根目录安装即可

用户名admin密码admin进入后台,系统设置->系统基本参数->会员设置将是否开启会员功能一栏调为是

接着返回网站主页,注册一个账号,记得不要设施安全提示问题

接着回到后台将等待验证邮件修改为:”审核通过,提示填写完整信息”

进入test123用户的个人中心,打开bp抓包,将DedeUserID_ckMD5覆盖为last_vid_ckMd5。修改完成后释放该包

此时发现test123用户变成了admin

使用F12打开控制台,进入储存,仍然是将DedeUserID_ckMD5覆盖为last_vid_ckMd5。将DedeUserID的值修改为test123.

刷新抓包,发送至repeater

1.使用最小权限原则对用户进行赋权,对待权限做一只一毛都不多拔的铁公鸡

2.使用合理(严格)的权限校验规则;

方法很多,思路重复,这里挑重要的讲

返回凭证

返回凭证的三种方式:

方法:

举例:

暴力破解:

要了解常见验证码机制:

回显测试:

绕过验证码:

漏洞成因:

特殊姿势:篡改手机号

逻辑漏洞看似复杂,乱花渐欲迷人眼。然而其实思路非常单一:先前端后后端顺序枚举各处漏洞点。其实考察的是你的耐心,细心,专心。

THE END
1.?店小秘帮助中心订单页面属性介绍 (视频) http://help.dianxiaomi.com/pre/getContent.htm?id=566 订单页面相关信息介绍:1、包裹号: 是由小秘系统自动生成,以XM开头,用于向物流商申请运单号时,将包裹号作为物流商系统订单编号提交给物流商。 常见问题: Q:为什么不能直接提交平台订单号给物流商? A:1、部分物流商系统限制,同一...https://help.dianxiaomi.com/pre/getContent.htm?id=1371
2.——订单商品明细统计上海管易云ERP3.店铺名称:订单管理>订单查询>订单明细>店铺名称 4.单据编号:订单管理>订单查询>订单明细>订单编号 5.付款时间:订单管理>订单查询>支付明细>支付时间 6.到账时间:订单管理>订单查询>到账时间 7.分销商名称:订单管理>订单查询>分销商名称 8.平台单号:订单管理>订单查询>订单明细>平台单号 ...http://support.guanyierp.com/hc/kb/article/1396335/
3.商品订单业务管理系统←物流配送←产品中心←宏达管理软件体验...主表:ID 商品编号 商品名称 品牌 规格 单位 缺货 图片 【员工信息】 说明:员工信息中记录了员工的信息,在此可进行员工信息的增加、删除或修改。其中员工编号是增加新记录时自动生成的,不可以更改。 主表:ID 员工编号 员工姓名 性别 身份证号 联系电话 住址 备注 【供商信息】 说明:供商信息中记录了供商的...http://www.inmis.com/product_view.asp?id=1066
4.风行当您在我们的产品与/或服务中购买商品或服务的,您需要提供一些下单与完成交易所需要的信息(交易商品或服务信息、收货人姓名、收货地址及其联系电话),此外,我们也可能会再收集一些其他与订单相关的信息(订单号、交易金额、支付方式),我们收集这些信息是为了帮助您顺利完成交易、保障您的交易安全、查询订单信息、提供客服和...http://wx-tv.funshion.com/static/funVideo/mobile/privacy.html
5.在订单管理系统中,客户一次购物(一张订单)可以订购多种商品,有...刷刷题APP(shuashuati.com)是专业的大学生刷题搜题拍题答疑工具,刷刷题提供在订单管理系统中,客户一次购物(一张订单)可以订购多种商品,有订单关系R(订单单号,日期,客户名称,商品编号,数量),则R的主关键字是()A.订单号B.订单号,客户名称C.商品编号D.订单号,商品编码的答案https://www.shuashuati.com/ti/8e280574081b4c9687994271a5c4907e.html
6....包括商店编号,商店名称,电话;保存的商品的信息包括:商品编号...关系模型:商店(商店编号,商店名称,电话)商店编号(候选码)商店名称(外码) 员工(工号,姓名,年龄,性别,住址)工号(候选码)姓名(外码) 商品(商品编号,商品名称,价格)商品名称(候选码)商品名称(外码) SQL数据库: CREATE https://www.iteye.com/resource/LQMYyong-2500327
7.只知道订单编号怎么查商品点击进入该页面后,输入订单编号和购买时使用的手机号码或者账号密码进行登录。有些平台也会需要输入验证码。一般情况下,输入正确的订单编号后,平台会显示该订单的详细信息,如商品名称、商品价格、付款方式、配送方式等。 如果在官网查询商品的信息有疑问或者出现了订单信息被篡改的情况,可以与平台的客服联系,咨询订单相关...https://www.dugusoft.com/zixun/zixun629.html
8.SQL语句总结查询处理(持续更新)(1)查询已订购了商品客户的公司名称,联系人姓名和所订商品编号和订购数量。 select Companyname,Contactname,productid,sellordernumber from Customer C join Sell_Order S on C.CustomerID=S.CustomerID (2)查询“三川实业有限公司”的订单信息。 select C.CompanyName,productid,sellordernumber,employeeid,C.Cus...https://www.jianshu.com/p/5c1b4df86f79
9.B2C商品订单开放APIisMasterProduct boolean 是否属于套餐活动主体商品 配送信息(distInfo): 名称类型说明 express long 配送方式:-2:无需配送,-1:区域限售,0:快递,1:ems, 2:平邮,3:商家配送,4:送货上门,5:上门自提 expressNum String 快递单号 expressCompanyCode String 快递公司编号 expressAlias String 配送方式别名 receiverAddre...https://www.leapcloud.cn/website/docs/doc_api/dingdan/dingdan.html
10.销货单操作指南关联销货订单号 销货订单生成的销货单会记录源订单号 2.2 扫描枪录入商品 新增单据时,点击【扫描枪录入】打开开关,即可扫码录入商品。 其它录入商品的方式还有模糊搜索、选择、批量导入 模糊搜索:支持输入商品编号/商品条码/商品名称/规格型号等,中间空格隔开,可切换常用的查找方式。 选择:点击【选择】在弹框中选商...https://vip.kingdee.com/article/362294872176207104
11.《美菜商城隐私协议》您需要在订单中至少填写您的如下个人信息:收货人姓名、收货人地址(GPS位置)以及收货人手机号。同时该订单中会载明如下个人信息:交易流水号、您所购买的商品信息、支付金额及支付方式。上述所有信息构成您的“订单信息”。我们收集订单信息是为了帮助您顺利完成交易、保障您的交易安全、查询订单信息、提供客服与售后服务。https://material-page.yunshanmeicai.com/richText/1000719
1.抖店开放平台/logistics/newCreateOrderorder_id字段传非抖店订单号,order_channel字段传54或者按照接口文档里该字段的要求来传。 六、如何设置物流商的产品类型 /logistics/newCreateOrder入参 product_type 字段,字段具体值参考:附录3 七、如何设置物流商的增值服务 https://op.jinritemai.com/docs/guide-docs/1320/3307
2.货物出货单一般是客户单位6.业务库存和财务库存对不上,每月都需要调账,财务数据不准确 客户解决完方案: 1.发票管理:好会计发票管理,批量导入发票明细、扫一扫进项和销项发票,实现一键生成凭证入账 2.辅助核算:往来科目开启辅助核算,实时掌控供应商应付账款以及客户应收账款,提供财务报表实时跟踪应收应付状况 3.数量核算:科目支持按照商品和数量...https://h.chanjet.com/yxwz/7bc517617b4040588f0.html
3.中国(陕西)国际贸易单一窗口跨境电商出口退货申请单(回执报文) 报文结构 退货理货明细单回执报文头 退货申请单回执业务节点https://www.singlewindow.shaanxi.cn/c/a/0d58e3e9-5073-4ebc-81e6-0f6a6fc1b097
4.电商产品概念:SKU,SPU,商家编码,商品条形码分别是什么意思...SKU是平台生成;商家编码是商家生成。 商品条形码:商品条形码的编码遵循唯一性原则,以保证商品条形码在全世界范围内不重复,即一个商品项目只能有一个代码,或者说一个代码只能标识https://www.longtengec.com/taobao/03467.html
5.订单号(ordernumber)的详细阐述order number(订单号)是指在贸易活动中,商家在与消费者交易过程中,根据每一次交易为该交易产生的唯一编号,用来标识该笔交易的唯一性。 order number广泛应用于在线购物、电商交易、机票、酒店等在线预订、支付平台,其在商家内部流程中起到非常重要的作用。 https://www.506064.com/n/182126.html
6.商品购销电子合同(15篇)商品定价,乙方同意按参考、生产条件发生变化,需变动价格时,甲方需提前通知乙方。否则,造成损失由违约方承担经济责任。 第三条:预付货款 乙方会先预存1080元;等货款不足250元时续存。 第四条:付款日期及结算方式;每一个月的25--28号结账一次。 第五条:运输流程均已快递送货;除大件列外,应协商。 https://www.yjbys.com/hetongfa/gouxiao/1793147.html
7.大数据常见面试问题汇总江阴雨辰互联2.15.2 订单表跟订单详情表区别? 2.15.3 上卷和下钻 2.15.4 TOB和TOC解释 2.15.5 流转G复活指标 2.15.6 活动的话,数据量会增加多少?怎么解决? 2.15.7 哪个商品卖的好? 2.15.8 数据仓库每天跑多少张表,大概什么时候运行,运行多久? 2.15.9 哪张表数据量最大 ...https://www.yc00.com/news/1698791689a880360.html
8.Python学习笔记一、print()函数 1. 可以输出数字 print(520) print(98.5) 2. 可以输出字符串 复制代码 隐藏代码 print('hello world') print('hello world') 3. 可以输出含有运算符的表达式 复制代码 隐藏代码 pri...http://down.vvipblog.com/itprogram/python/pybeginner/2861.html
9.锦江会员商城小程序隐私政策B.购物服务:当您在锦江荟积分商城小程序购买商品时,我们会收集您的订单的下单时间、下单金额、商品数量、商品编号和订单编号以及完成订单后您提交的商品点评,同时我们需要您在线填写您的姓名、手机号码和收货地址,用于寄送您在商城购物之货物和纸质/电子发票。 https://h5.bestwehotel.com/view/7d4a94bc5e
10.电商后台系统产品逻辑全解析12657998的技术博客商品中心:主要管理SKU、SPU、属性、类目、品牌、价格等有关商品的数据。 订单中心:管理订单类型、订单状态,收集关于商品、优惠、用户、收货信息、支付信息等一系列的订单实时数据, 进行库存更新、订单下发等一系列动作。 支付中心:管理支付数据,调用第三方支付平台接口,记录支付信息(对应订单号、支付金额等),支付对账。https://blog.51cto.com/u_12667998/6565354
11....销售商及销售三个关系模式:产品(产品编号,产品名称,单价,库存...其中包括四个表,表中信息如下: 供应表apply(id、name、sid、price) 说明:id 供应厂家编号,name 供应厂家名称,sid 商品编号,price 商品价格。 顾客表customers(gid、name、address、balance) 说明:gid 顾客编号,address 地址,balance 余额。 订单表orders(sid、gid、date) 说明:sid 商品编号,gid 顾客编号,date ...https://blog.csdn.net/Edison__z/article/details/130305550
12.中燃慧生活app下载中燃慧生活燃气缴费v6.0.10安卓版8、在慧生活购买商品,支付成功后订单却显示未支付? 答:提供登录名、订单号、支付成功截图(含支付单号)给后台核查,若核实已付款成功,即可后台人工修改订单状态。 9、慧生活APP验证密码时,密码是身份证后6位,若尾数为X,怎么输入? 答:慧生活APP验密的,身份证后六位尾数是X的,以客服系统上面X的大小写为准,如果...https://m.qqtn.com/q/302839
13.隐私政策帮助中心(三)下单及订单管理 当您选择对商品/服务进行结算时,阳采集团会生成您购买商品的订单。您需要在订单中至少填写您的收货人姓名、收货地址以及手机号码,同时该订单中会载明订单号、您所购买的商品或服务信息、下单时间、您应支付的货款金额及支付方式。您可以另外填写收货人的联系电话、邮箱、邮编以增加更多的联系方式确保...https://www.lt95.com/article/item/id/213.html
14.阿狸子订单系统商品列表有:搜索、编辑、复制、评论、推广等功能,如下图: 二、添加商品 添加商品有:1.基本信息;2.价格套餐;3.商品图片;4.短信通知;5.广告设置;6.单页模板;如下图: 1.基本信息 商品编号:随机生成字母和数字,如果要修改,只能填写字母和数字。 名称:填写商品名称 ...https://www.alizi.net/doc/