首页
学习
活动
专区
圈层
工具
发布

Gmail凭证泄露事件中的撞库与OAuth钓鱼攻击分析

= tokens['access_token']refresh_token = tokens.get('refresh_token') # 首次授权时返回# 使用 access_token 访问 Gmail...攻击者控制员工邮箱后,可:伪造来自高管或IT部门的邮件,诱导同事点击恶意链接;利用日历邀请功能嵌入钓鱼URL;通过API访问共享云端硬盘(Drive)中的敏感文档;将受害账户作为可信发件人,绕过企业邮件网关的...然而,普通用户难以理解“授权”与“登录”的本质区别,更无法判断所授权限的潜在风险。...企业可利用Workspace Admin Console导出所有用户的OAuth授权记录,进行集中审计:# 使用 Google Admin SDK Directory API 获取用户授权应用from...4.4 异常登录行为建模与风险评分组织可结合Google提供的登录活动日志(Login Activity API)构建风险评分模型。

29410

ConsentFix攻击机制与OAuth授权滥用的防御对策研究

一、引言近年来,随着企业向云办公平台(如Microsoft 365、Google Workspace)的大规模迁移,身份认证体系逐步从传统的用户名/密码模型转向基于令牌(token)的现代协议,其中OAuth...一旦授权成功,即使用户更改密码或启用MFA,攻击者仍可通过已授权的应用持续访问邮箱、日历、文件等敏感资源。...例如,用户在Google搜索“公司邮箱无法登录”,点击一个已被SEO投毒的合法但遭篡改的第三方支持页面。...Graph API读取邮件、发送钓鱼邮件、下载OneDrive文件等。...permissions with scopes);自动化撤销机制:当检测到可疑活动时,自动调用Microsoft Graph API撤销相关应用授权:# 使用Microsoft Graph API撤销用户授权

14810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    基于OAuth滥用的定向钓鱼攻击与防御机制研究

    研究结论指出,仅依赖用户教育无法应对当前高度专业化、协议级的钓鱼威胁,必须从身份治理与协议使用规范层面重构企业安全边界。...攻击者服务器立即用该code向Google令牌端点交换访问令牌(access token)和刷新令牌(refresh token):# 攻击者后端:用授权码换取令牌import requestsdef...与refresh_token用于后续API调用store_tokens(tokens['access_token'], tokens['refresh_token'])return tokens获得令牌后...,攻击者可调用Google People API、Gmail API等,读取联系人、邮件、日历,甚至发送钓鱼邮件扩大攻击面。...以下Python脚本利用Google Admin SDK Directory API列出某用户的所有OAuth客户端授权:from googleapiclient.discovery import builddef

    20310

    TNW-获取微信公众号的 access_token

    access_token 的存储至少要保留 512 个字符空间。access_token 的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的 access_token 失效。...公众平台的API调用所需的 access_token 的使用及生成方式说明: 1、建议公众号开发者使用中控服务器统一获取和刷新 access_token,其他业务逻辑服务器所使用的access_token...中控服务器需要根据这个有效时间提前去刷新新 access_token。...的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新 access_token 的接口,这样便于业务服务器在API调用获知 access_token 已超时的情况下...,可以触发access_token 的刷新流程。

    1.2K60

    从0开始构建一个Oauth2Server服务 发起认证请求

    例如,Google 的 API 使用 OpenID Connect 提供一个 userinfo 端点,该端点可以返回有关给定访问令牌的用户的信息,或者您可以改为从 ID 令牌获取用户信息。...我们在Signing in with Google中完成了 userinfo 端点工作流程的完整示例。...{ "access_token": "AYjcyMzY3ZDhiNmJkNTY", "refresh_token": "RjY2NjM5NzA2OWJjuE7c", "token_type"...{ "access_token": "BWjcyMzY3ZDhiNmJkNTY", "refresh_token": "Srq2NjM5NzA2OWJjuE7c", "token_type"...您可能会注意到“expires_in”属性指的是访问令牌,而不是刷新令牌。刷新令牌的到期时间有意从不传达给客户端。这是因为即使客户端能够知道刷新令牌何时过期,也无法采取任何可操作的步骤。

    1.2K30

    java微信公众号接入(3)

    上一篇文章写了微信消息处理和回复图文消息,这篇文章写如何获取微信的access_token,并保存 1 先看看微信文档 1、建议公众号开发者使用中控服务器统一获取和刷新access_token,其他业务逻辑服务器所使用的...access_token均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致access_token覆盖而影响业务; 2、目前access_token的有效期通过返回的expire_in来传达...中控服务器需要根据这个有效时间提前去刷新新access_token。...在刷新过程中,中控服务器可对外继续输出的老access_token,此时公众平台后台会保证在5分钟内,新老access_token都可用,这保证了第三方业务的平滑过渡; 3、access_token的有效时间可能会在未来有调整...,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程

    1.3K31

    你有一份 2019 年 GitHub 年度报告待领取

    如果这一年,你每天编码,日历就全是绿的,否则就会有白色的小方块。所有人都可以看到这个「编码日历」。很多人为了让绿色小方格子不要中断,就会尽量每天提交代码。时间一长,真的多做了不少项目。...因此,这次年度报告我想主要针对这份「编码日历」,把你的「编码日历」组装到一张图片上展示给别人。...在 RESTful 风格的接口下,我们无法只获取某一条数据,但对于 GraphQL 接口,我们可以发起这样一条请求: { user(login: "username") { avatarUrl...= "xxx" # 请求 headers 带上 access_token headers = {"Authorization": "bearer %s" % access_token} # 发起请求...绘制「编码日历」 在遍历 weeks 统计数据的过程中,可以顺便完成「编码日历」的绘制。 「编码日历」中的每一天就是一个小方块,方块的颜色我们已经从接口返回数据的 color 字段中获取到了。

    86030

    微信一键登录功能的实现

    通过code参数加上AppID和AppSecret等,通过API换取access_token; 3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。...:access_token 接口调用凭证超时时间,单位(秒),有效期2小时 refresh_token:用户刷新 access_token,用于请求刷新 access_token 接口,刷新一次 access_token...access_token 刷新结果有两种: 1. 若access_token已超时,那么进行refresh_token会获取一个新的access_token,新的超时时间; 2....若access_token未超时,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token。...为用户授权第三方应用的长效凭证,仅用于刷新access_token,但泄漏后相当于access_token 泄漏,风险同上。

    6.7K20

    小程序开发技巧总结(三)-- 云开发时效数据刷新和存储 (access_token等)

    小程序云开发时效数据刷新和存储 (access_token等) 1.问题描述 小程序中经常有需要进行OCR识别,或者使用外部api例如百度AI识别等接口,请求调用这些接口需要令牌,即一些具有时效性的数据...本文以小程序云开发使用百度API接口为例,介绍access_token定时刷新和请求机制。 下面是百度调用身份证识别的一段需求,需要传的参数需要有access_token。...请求示例 HTTP 方法:POST 请求URL: https://aip.baidubce.com/rest/2.0/ocr/v1/idcard URL参数: 参数 值 access_token 通过API...Key和Secret Key获取的access_token,参考“Access Token获取” access_token 是具有时效性的数据,每次请求一次接口就进行一次请求刷新,显然是对计算机资源的极大浪费...//console.log(res.data[0]) }, fail(res){ wx.showToast({ title: '请求失败,无法通过扫描填充数据

    1.7K10

    微软365“设备代码钓鱼”风暴来袭:无需密码,黑客秒控企业邮箱

    授权完成后,攻击者的服务器立即通过 OAuth 2.0 的 /token 端点兑换访问令牌和刷新令牌(Refresh Token),从而获得对受害者邮箱、日历、文件等资源的长期访问权——全程无需知道密码...它允许第三方应用在不获取用户密码的前提下,访问用户在其他服务(如 Google、Microsoft)上的资源。...问题在于:步骤4中的授权页面由微软官方提供,用户无法分辨背后的应用是否可信。“普通用户看到的是微软的 UI,但授权的对象却是攻击者注册的 OAuth 应用。”...":time.sleep(5)else:print("❌ 授权失败:", token_resp.text)break一旦拿到 access_token,攻击者即可调用 Microsoft Graph API...实施严格的 OAuth 应用审批策略启用“用户无法注册应用”策略,并要求所有第三方应用必须经 IT 部门审批。

    11410

    Unity & 微信公众号 - 实现扫码关注登录

    access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。...公众平台的API调用所需的access_token的使用及生成方式说明:1、建议公众号开发者使用中控服务器统一获取和刷新access_token,其他业务逻辑服务器所使用的access_token均来自于该中控服务器...中控服务器需要根据这个有效时间提前去刷新新access_token。...,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程...如公众号管理员第一次拒绝该IP调用,用户在1个小时内将无法使用该IP再次发起调用,如公众号管理员多次拒绝该IP调用,该IP将可能长期无法发起调用。

    3.5K20

    云邮箱钓鱼攻击趋势与企业防御体系重构

    值得注意的是,攻击成功后的横向移动成本极低——一旦获取有效会话令牌或MFA绕过权限,攻击者可直接访问企业通讯录、日历、OneDrive/Google Drive文件乃至财务审批流程,造成数据泄露、商业欺诈甚至供应链污染...多数邮件网关仅解析首跳URL,无法追踪多层重定向后的恶意终点。...CDR确保即使恶意内容绕过检测,也无法执行。4.4 流程层:建立快速冻结与会话吊销机制一旦确认账户失陷,必须在分钟级内完成响应。...关键措施包括:自动化会话吊销:通过API批量注销用户所有活动会话;凭据紧急重置:强制更改密码并撤销刷新令牌;行为回溯:利用审计日志定位首次异常活动时间点。...Microsoft Graph API吊销会话示例:import requestsdef revoke_user_sessions(user_id, access_token):url = f"https

    18110

    微信开发 原

    公众平台的API调用所需的access_token的使用及生成方式说明: 1、建议公众号开发者使用中控服务器统一获取和刷新Access_token,其他业务逻辑服务器所使用的access_token均来自于该中控服务器...的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发...access_token的刷新流程。...调用接口时,请登录“微信公众平台-开发-基本配置”提前将服务器IP地址添加到IP白名单中,点击查看设置方法,否则将无法调用成功。...由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。

    2.4K50

    Google支付和服务端验证

    ID google play开发者后台,API权限菜单中关联刚刚创建的项目,一个google play账号只需要也只能关联一个api项目就行了,这个项目可以查询关联账号中的所有应用的订单 拉起授权页面,...Play Android Developer API Api和服务菜单 库菜单 搜索“Google Play Android Developer API” image.png 开启“Google Play...access_token={access_token} packageName:app包名,必须是创建登录api项目时,创建android客户端Id使用包名 productId:对应购买商品的商品ID...在firebase中创建了项目,会自动同步到google api后台,不用再去单独创建登录使用的项目 登录使用的api项目和查询支付使用的api项目是两个不同的项目相互不干扰,查询支付的api项目一个google...) 授权超过50个刷新令牌,最先的刷新令牌就会失效(这里50个应该够用了,除了测试时,可能会授权多个) 取消了授权 属于具有有效会话控制策略的 Google Cloud Platform 组织 未经允许不得转载

    7.5K30

    你确定懂OAuth 2.0的三方软件和受保护资源服务?

    OAuth 2.0 官方建议,系统在接入 OAuth 2.0 前信息传递的请求载体是 JSON,若继续采用表单参数提交,令牌就无法加入。 若采用参数传递,URI 会被整体复制,安全性最差。...就需要刷新令牌。刷新令牌需注意何时决定使用刷新令牌。 在xx排版软件收到访问令牌同时,也会收到访问令牌的过期时间 expires_in。...刷新令牌是一次性的,使用后就失效,但它的有效期会比访问令牌长。 若刷新令牌也过期呢? 需将刷新令牌和访问令牌都放弃,几乎回到系统初始状态,只能让用户重授权。...若xx请求过来的一个访问令牌 access_token 的 scope 权限范围只对应查询、新增 API,那包含该 access_token 值的请求,无法执行删除文章 API。...若xx请求过来的一个访问令牌 access_token 的 scope 权限范围只对应 Personal Data,那么包含该 access_token 值的请求就不能获取到 Contact 和 Like

    1.5K10

    第三方微信授权登录APP接入_使用第三方应用打开是什么意思

    access_token: https://api.weixin.qq.com/sns/oauth2/access_token?...如果access_token无效,服务端向微信开放平台发送刷新access_token的请求如下: access_token是调用授权关系接口的调用凭证,由于access_token有效期(目前为2个小时...)较短,当access_token超时后,可以使用refresh_token进行刷新,access_token刷新结果有两种: 1.若access_token已超时,那么进行refresh_token会获取一个新的...access_token,新的超时时间; 2.若access_token未超时,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token..." } 参数 说明 access_token 接口调用凭证 expires_in access_token接口调用凭证超时时间,单位(秒) refresh_token 用户刷新access_token

    2K20

    TNW-授权获取用户信息

    开发者可以刷新网页授权 access_token,避免过期 4、通过网页授权 access_token 和 openid 获取用户基本信息(支持UnionID机制) 用户同意授权,获取code 引导关注者打开如下授权的页面...appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问...尤其注意: 由于授权操作安全等级较高,所以在发起授权请求时,微信会对授权链接做正则强匹配校验,如果链接的参数顺序不对,授权页面将无法正常访问 跳转回调redirect_uri,应当使用https链接来确保授权...通过code换取网页授权access_token 刷新access_token(如果需要) 拉取用户信息(需scope为 snsapi_userinfo) 检验授权凭证(access_token)是否有效...access_token=%s&openid=%s&lang=%s"; private static checkTokenUrl: string = "https://api.weixin.qq.com

    1.6K20
    领券