网络安全培训逻辑漏洞有哪些必备知识点?
老男孩IT教育
行业新闻
2020年11月23日 14:59
之所以称为逻辑漏洞,是因为代码之后是人的逻辑,人更容易犯错,是编写完程序后随着人的思维逻辑产生的不足。
逻辑漏洞:
之所以称为逻辑漏洞,是因为代码之后是人的逻辑,人更容易犯错,是编写完程序后随着人的思维逻辑产生的不足。sql注入、xss等漏洞可以通过安全框架等避免,这种攻击流量非法,对原始程序进行了破坏,防火墙可以检测,而逻辑漏洞是通过合法合理的方式达到破坏,比如密码找回由于程序设计不足,会产生很多问题,破坏方式并非向程预防思路。在OWASP Top 10中也有所提及,分别为不安全对象引用和功能级别访问控制缺失。
常见的逻辑漏洞:
越权修改、越权查询、验证码回传、未进行登陆凭证验证、订单金额任意修改、密码重置、突破限制等。
挖掘逻辑漏洞的环节:
确定业务流程--->寻找流程中可以被操控的环节--->分析可被操控环节中可能产生的逻辑问题--->尝试修改参数触发逻辑问题
把握住传参就能把握住逻辑漏洞的命脉
1越权
越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,在实际的代码审计中,这种漏洞往往很难通过工具进行自动化监测,因此在实际应用中危害很大。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。越权访问漏洞主要分为水平越权访问和垂直越权访问。
1、水平越权:权限类型不变,权限ID改变
水平越权访问是一种“基于数据的访问控制”设计缺陷引起的漏洞。由于服务器端在接收到请求数据进行操作时没有判断数据的所属人/所属部门而导致的越权数据访问漏洞。
水平越权测试方法:主要通过看看能否通过A用户操作影响到B用户
2、垂直越权:权限ID不变,权限类型改变
垂直越权是一种“基于URL的访问控制”设计缺陷引起的漏洞,又叫做权限提升攻击。
垂直越权测试思路:看看低权限用户是否能越权使用高权限用户的功能,比如普通用户可以使用管理员的功能。
真实案例:XX网参数越权
问题描述:测试过程中发现,用户在“地址管理”功能模块可越权查看任意收货信息,造成用户敏感信息泄露。
1、如以下截图,选择“修改”,此时用抓包工具截断GET请求:
2、链接为:http://www.XXXX.cn/index.php?app=treasure&mod=Order&act=findId&address_id=1111将address_id参数值替换为任意数值:
3、提交修改后的请求,即可返回其他用户的姓名、手机号及收货地址等敏感信息。
风险程度:严重
风险分析:攻击者可利用此漏洞获取用户名敏感信息,造成敏感信息泄露。
修复建议:建议对用户修改及查看地址请求进行权限校验,避免越权操作,如果发生越权可返回错误页面或将账户登出。
2交易支付中的逻辑问题:
关于支付的逻辑漏洞的一般思路。一种是少充多得,比如充值100元时通过篡改金额改成10元,最终充值完毕后账户变成了100元,而实际付款却只有10元;一种是绕过活动页金额限制,比如很多公司做活动强制用户充值金额不能低于10000,而通过拦截修改金额,可以充值任意金额。
购物流程
加入购物车时是否可以修改购买数量为负数,商品价格是否可以修改。
确认购物车信息时是否可以修改商品数量为负数,是否存在折扣限制突破问题,是否可以修改商品总金额。
输入物流信息时是否可以控制运费,如果可以,尝试修改为负数。
确认订单后跳转支付接口时是否可以修改支付金额,可否不支付直接跳转到交易成功环节。
预防思路:
增加多重检验,订单较大时增加人工审核。
真实案例:信用卡还款服务费被绕过
问题分析:测试发现,微钱包信用卡还款功能处存在服务费可绕过漏洞,测试过程如下:
1、选择信用卡还款功能,填写相关还款数值后,截断信用卡还款GET请求,将f参数值修改为1:
信用卡还款服务费可绕过
2、提交修改后的请求,页面返回成功:
风险程度:严重
风险分析:攻击者可利用此漏洞绕过支付服务费,可能给泰康微钱包带来一定经济损失。
修复建议:建议服务费由后台计算生成,不以客户端提交的参数值为依据。
3密码修改逻辑漏洞:
重置密码对一个系统来说是非常重要的存在,所以存在的问题也是非常致命。用户在重置密码页面,通过修改用户ID对所改用户密码进行重置;对密码重置页面验证码绕过,然后爆破进行等。
首先走一遍正常的密码修改流程,把过程中所有环节的数据包全部保存。
分析流程中哪些步骤使用了哪些身份认证信息,使用了哪些认证方法。
分析哪个步骤是可以跳过,或者可以直接访问某个步骤。
分析每个认证方法是否存在缺陷,可否越权
首先尝试正常密码找回流程,选择不同找回方式,如邮箱,手机,密码提示问题等。
分析各种找回机制所采用的验证手段,如验证码的有效期,有效次数,生成规律,是否与用户信息相关联等。
抓取修改密码步骤的所有数据包,尝试修改关键信息,如用户名,用户ID,邮箱地址,手机号码等。详细看以下案例:
http://www.wooyun.org/bugs/wooyun-2010-011435
http://www.wooyun.org/bugs/wooyun-2010-08573
http://www.wooyun.org/bugs/wooyun-2010-012365
http://www.wooyun.org/bugs/wooyun-2010-021818
http://www.wooyun.org/bugs/wooyun-2010-020625
http://www.wooyun.org/bugs/wooyun-2010-020588
http://www.wooyun.org/bugs/wooyun-2010-019769
http://www.wooyun.org/bugs/wooyun-2010-018722
预防思路:
系统后台在重置密码页面验证是否为本用户等。
4验证码回传:
这个漏洞主要是发生在前端验证处,只要拦截数据包就可以获取敏感信息,并且经常发生的位置在于:账号密码找回、账号注册、支付订单等。验证码主要发送途径邮箱邮件、手机短信。黑客只需要抓取Response数据包便知道验证码是多少。
预防思路:
response数据内不包含验证码,验证方式主要采取后端验证,但是缺点是服务器的运算压力也会随之增加;要进行前端验证的话使用加密进行。
5接口无限制枚举:
有些关键性的接口因为没有做验证或者其它预防机制,容易遭到枚举攻击。
真实案例:用户激活邮件炸弹攻击
问题描述:测试发现,用户使用邮箱注册时,发送激活邮件功能可进行邮件炸弹攻击。测试过程如下:
1、用户在激活账号过程中选择“重新发送”:
2、将GET请求中的uid参数值为其他uid(需要此uid的用户也使用邮箱注册):
3、重放此数据包,可形成邮件炸弹攻击,响应包中提示发送成功:
用户激活邮件炸弹
风险程度:中度
风险分析:攻击者可利用此漏洞对使用邮箱注册的用户实施邮件炸弹攻击,影响用户体验。
修复建议:建议对激活邮件限制发送次数。
防范措施:
1、使用最小权限原则对用户进行赋权;
2、永远不要相信来自用户的输入,使用合理(严格)的权限校验规则;
3、使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件;
4、cookie中设定多个验证,比如自如APP的cookie中,需要sign和ssid两个参数配对,才能返回数据。
5、用户的cookie数据加密应严格使用标准加密算法,并注意密钥管理。
6、用户的cookie的生成过程中最好带入用户的密码,一旦密码改变,cookie的值也会改变。
7、cookie中设定session参数,以防cookie可以长时间生效。
