WEB通用漏洞-业务逻辑
WEB通用漏洞-业务逻辑
越权
使用用户A的权限去操作用户B的数据,如果能够成功操作,则称之为越权操作。如果A、B的权限相同,或者说是在同一水平层面的,那么我们称此操作为水平越权。如果A的权限小于B的权限,那么我们称此操作为垂直越权。
水平越权的原因:用户信息获取时未对用户与ID比较判断(ID一定从数据库取,不能以数据包中的值为准),直接就进行了查询等
垂直越权的原因:数据库中用户类型编号接收篡改或高权限操作未验证等
越权漏洞如何挖掘?
白盒直接分析代码逻辑,黑盒根据传输的数据包、URL等修改疑似表示用户身份的参数,不断尝试是否可以使用当前的用户权限去修改其他用户的数据。
图例
未授权访问
未授权字面上理解是未获得授权,对于正常的业务来说,有些功能点需要经过登录之后才能进行,那么如果我们通过一些绕过,无需登录也可以完成此类操作,那么便是未授权访问漏洞了。
未授权访问漏洞如何挖掘?
白盒直接分析代码逻辑,黑盒主要查看哪些页面没有经过验证就可以访问。
越权和未授权访问的区别?
未授权访问是指用户没有通过身份验证访问资源的情况,而越权访问是指已经通过身份验证,但试图越权访问资源的情况。
一些文章
- https://blog.csdn.net/XXokok/article/details/134104032
- https://xz.aliyun.com/t/11500?time__1311=mqmx0DBD2G0QI40vofDy7j3D%3DepVhiD&alichlgref=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D1dZaxkb7DL8Cfhw4JeLF9ERTmhKzG_ngGXbS9uJoKxjuMUWbsSzZUlE0A-u_W380%26wd%3D%26eqid%3Db3944b640035582f0000000265c0ebe4
访问控制
验证丢失
在网站中,有些页面需要管理员才可以进行访问。此时,程序员就需要在这些页面中添加验证的逻辑。如果,管理员粗心大意,有一部分页面忘记添加了,那么就会导致验证丢失。
取消验证
在操作系统中,管理员可以设置某些用户不需要密码就可以登录。或者位于白名单的用户就可以免于登录等等。
类似于上述这种,存在验证机制,但是可以手动设置免于验证的情况,这个就叫做取消验证。
脆弱验证
存在验证,但是验证不严(验证或处理代码逻辑有问题)可以绕过,这种验证我们统一称为脆弱验证。
还有一种情况:服务端根据用户的输入,作为数据库的参数去更改该用户的数据。如果攻击者可以更改该用户的输入,导致当前用户可以修改别的用户的数据,那么这也是处理代码逻辑的问题,导致的越权漏洞。(一般导致这种漏洞的原因就是:数据库的参数是可控变量,我们需要将其固定死,确保该用户只能修改该用户的数据)
- Cookie
- 有些网站的Cookie验证逻辑极为脆弱。例如:从Cookie中获取user字段值,只要user字段值不为空,就算验证通过。那么攻击者抓包后,可以随便更改user字段值,都会导致这个验证绕过。那么这个就属于Cookie脆弱验证的情况。
- Token/Session
- Jwt
- Jwt脆弱验证的情况,大致分为:
- 空加密算法
- 密钥设置的过于简单,可爆破。
- kid值篡改
- Jwt脆弱验证的情况,大致分为:
注:无论是越权漏洞还是未授权访问漏洞,挖洞的时候大抵都是根据以上三个点来看的
检测工具
越权检测工具
secscan-authcheck:https://github.com/ztosec/secscan-authcheck
Burp插件:Authz(未授权访问检测)
Authz插件的使用:https://blog.csdn.net/wutiangui/article/details/132669813
购买支付逻辑
常见支付流程
选择商品和数量-选择支付及配送方式-生成订单编号-订单支付选择-完成支付
安全点
- 价格和数量
- 产品和订单编号
- 支付模式&接口数据
- 折扣、优惠券、积分等重复使用&再获取
常见可篡改的数据
商品编号ID、购买价格、购买的数量、支付方式、订单号、支付状态等
常见的修改方式
替换支付、重复支付、最小额支付、负数支付、溢出支付、优惠券支付等
- 替换支付:有一个3000元的A商品和一个8000元的B商品。当购买A商品的时候,攻击者通过修改数据包的参数,导致以3000元的价格购买了8000元的B商品。
- 重复支付:有一个3000元的A商品。当购买A商品的时候,攻击者通过某种方式,导致第二次乃至更多次购买A商品的时候,不花钱。
- 最小额支付:购买某种商品,攻击者修改参数,导致以尽可能低的价格购买。
- 负数支付:购买某种商品,攻击者修改参数,导致以负数价格购买。
- 溢出支付:购买8000元的商品,攻击者修改价格为十分巨大的数,由于服务端存储价格的时候,可能未对这种大数字的情况进行处理,导致了数据溢出,最终白嫖的情况。
- 优惠券支付:攻击者修改参数,导致使用优惠券的时候以更高的优惠处理、重复使用优惠券、构造新的优惠券等
修复
- 金额以数据库定义为准(不能以攻击者发送的数据包中的价格为准)
- 购买数量限制为正整数(防止数量为0、小数、负数)
- 优惠券固定,使用后确保删除
- 订单生成后检测对应值。(防止以1000元订单去购买100000元订单的情况)(具体的做法就是:从数据库中调取订单,判断若干项,而不是一项)
如何挖掘此类漏洞?
通过功能点进行抓包,尝试修改各种参数,测试各种情况,如果达到了你的效果,那么该网站存在此类漏洞,否则就不存在。
注:该漏洞重点在于黑盒测试,当然如果要追求原理,还是要进行白盒测试的
验证码&找回密码/重置密码
找回密码(重置密码)流程安全
- 用回显状态判断-用前端判断不安全。
- 当用户找回密码的时候,页面会显示找回密码成功还是失败。这个内容一般都是由一个参数来控制。
- 如果这个流程是由前端来进行处理和判断并返回参数而不是后端的话,那么攻击者可以篡改返回的参数甚至处理的过程。
- 用户名重定向-修改标示绕过验证
- 存在一个普通用户A和管理员B
- 假设攻击者尝试找回普通用户A的密码
- 在找回密码的过程中,修改密码的一刹那,修改数据包,将A用户修改成管理员B,那么在某些应用中,管理员B的密码就被更改了。
- 这就导致了管理员B的验证被绕过,从而导致修改密码的情况。
- 验证码回显显示-验证码泄露验证虚设
- 在找回密码的过程中,一般都会要求有验证码。(手机验证码,邮箱验证码等)
- 但是,找回人的手机和邮箱,一般攻击者是不知道的。就算知道,验证码也不会发送给攻击者。
- 如果验证码的生成是在前端,这时攻击者可以查看找回密码的数据包,看看验证码有没有包含在其中,如果包含,那么无需知道手机和验证码,也可以进行找回。(部分应用中成立)
- 因此,验证码的生成一定要在后端。
- 验证码简单机制-验证码过于简单爆破
- 有些应用的验证码是非常简单的,例如:4位数字。
- 那么,如果有些网站并没有对登录的次数做出限制,攻击者就可以尝试爆破验证码,从而进行绕过。
验证码绕过安全
- 验证码简单机制-验证码过于简单爆破
- 验证码重复使用-验证码验证机制绕过
- 假设在找回密码的时候,需要输入验证码。那么,验证码重复使用指:第一次输入验证码正确后,之后每一次找回密码的时候,验证码都不会发生改变。从而导致攻击者在找回密码的时候,可以进行密码的爆破。(每一次尝试密码的时候,验证码都不变)
- 一定要确保:每一次尝试密码的时候,验证码都要进行随机的生成,而不是不变。
- 验证码智能识别-验证码图形码被识别
- 有些网站的验证码很简单,例如数字、字母等。那么,这样的验证码可以使用打码平台来进行识别,从而进行绕过。
- 一定要确保:验证码要使用复杂的验证码,例如:给你一大堆图片,让你找行人等
- burp验证码识别插件:xp_CAPTCHA
- 验证码识别工具:captcha_killer
- 插件使用参考文档:https://www.cnblogs.com/punished/p/14746970.html
- 验证码接口调用-验证码触发机制枚举
- 有些网站存在手机验证码接口乱调用的问题。
- 一般在调用手机验证码的过程中,需要等待60秒之后,才可以继续发送手机验证码。
- 但是,有些网站调用手机验证码时,不需要等待。那么,攻击者就可以不断地发送手机验证码来达到骚扰的目的。这就是短信轰炸机的原理。
- 这类漏洞,有些企业也是支持提交的,一般属于低危漏洞。
修复
弱口令
定义
弱口令没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令,通常与管理的安全意识和平台的初始化配置等相关,通过系统弱口令,可被黑客直接获得系统控制权限。
在常见的安全测试中,弱口令会产生在安全的各个领域,包括Web应用,安全设备,平台组件,操作系统等;如何获取弱口令,利用弱口令成为了此类安全问题的关键!
弱口令获取
- SecLists:https://github.com/danielmiessler/SecLists
- 这个仓库的username和password部分集成了近些年来常见的弱口令,如果你需要字典爆破,可以采用。
- 常见平台的弱口令
- https://github.com/ihebski/DefaultCreds-cheat-sheet
- 字典合集:https://github.com/TheKingOfDuck/fuzzDicts
社工字典(自定义字典)
有些弱口令需要自定义,需要根据这个人的相关信息来自定义弱口令,从而进行爆破。这就需要广泛的搜集这个人的信息,从而生成字典。
自定义字典生成器:https://www.bugku.com/mima/
这里推荐一些可以搜集到个人信息的网站(溯源):
- REG007:这个网站可以查询某人注册过哪些网站?
- www.reg007.com
- 社工库:https://sgk66.cc/search.html
- 查看隐私泄露事件:https://monitor.mozilla.org/
- https://haveibeenpwned.com/
利用
burpsuite简单爆破:
https://blog.csdn.net/qq_44159028/article/details/115046772
burpsuite四种模式解析:
https://blog.csdn.net/weixin_50647674/article/details/129937275
thc-hydra(九头蛇)是一个自动化的爆破工具,暴力破解弱密码(支持很多协议)。具体的使用方法,请参考官方手册。
https://github.com/vanhauser-thc/thc-hydra
压缩包解密工具:ARCHPR
Word文档解密工具:passfab-for-word
passfab拥有一系列的解密工具,具体产品请查看官网:
wifi安全及审计工具(爆破)aircrack
https://github.com/aircrack-ng/aircrack-ng
思路
对于探测弱口令的思路,简单来说就是:遇到任何一个目标,先尝试在网上搜索默认密码,如果默认密码不成功,再尝试字典爆破。
致谢
https://www.bilibili.com/video/BV1pQ4y1s7kH/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click
免责声明
本博客中的内容仅供学习之用,不用于商业用途,也不可以用于任何非法用途,否则后果自负,本人不承担任何责任!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现