关于 okta-attack
okta-attack 是针对 Okta 身份系统的安全测试技能,适用于相关授权测试,涵盖租户发现、认证流程与因子分析,以及 OIDC、SAML 和凭据失陷后的检查。
主要功能
- 01发现 Okta 租户
- 02分析认证流程与因子
- 03审慎的密码喷洒指引
- 04检查 OIDC 重定向 URI
- 05检查 SAML 与管理 API
适用场景
- 01梳理组织的 Okta 租户
- 02评估 MFA 因子暴露情况
- 03测试 OIDC 或 SAML 配置
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ uphiago/ recon-skills --skill okta-attack安装后在 Claude Code 中输入/okta-attack确认已加载。
详细介绍
何时使用此技能
在以下情况下触发:
- DNS 显示
<tenant>.okta.com或<tenant>.okta-emea.com(EMEA 区域) - 登录流程重定向到
<tenant>.okta.com/login或/app/<app_id>/sso/saml - 网页引用
/signin/customize、oktapreview.com或auth-js-sdk - 侦察笔记注明“使用 Okta 实现 SSO”
- 目标的 TLS 证书中包含
*.okta.comSAN - 身份架构映射将企业应用的 IdP 返回为 Okta
不要用于:
- Entra ID(改用
m365-entra-attack) - Google Workspace(改用
google-workspace-attack——尚未构建) - ADFS(协议不同,部署在本地)
租户发现
直接猜测
# Tenant subdomains often match the brand
# Replace these with your target's actual tenant slug candidates:
for tenant in target-brand target-brand-ltd target-sister-brand target-brand-short target-other-variant; do
for region in okta okta-emea oktapreview; do
host="$tenant.$region.com"
code=$(curl -sk -o /dev/null -w "%{http_code}" --max-time 8 --connect-timeout 8 "https://$host/")
[ "$code" != "404" ] && [ "$code" != "000" ] && echo " $host $code"
done
done
从 DNS 交叉引用
# Look for CNAME records pointing to Okta
# Replace with your target's actual domains:
# Generate patterns list
cat > /tmp/okta_patterns.txt << 'EOF'
sso.client.example
login.client.example
auth.client.example
okta.client.example
sso.client-ltd.example
login.client-ltd.example
auth.client-ltd.example
okta.client-ltd.example
EOF
# Batch resolve with dnsx (concurrent, faster)
dnsx -silent -l /tmp/okta_patterns.txt -cname -resp-only
从应用 HTTP 流程交叉引用
# Visit corporate-app login, follow redirects
curl --max-time 30 --connect-timeout 10 -skL -o /dev/null -w "%{redirect_url}\n" "https://app.target.com/login"
# If redirects to <something>.okta.com → confirmed Okta tenant
用户枚举
方法 1 — /api/v1/authn 差异分析
身份验证 API 对无效用户和无效密码返回不同的错误。差异略微明显。
# Probe single user — DON'T spray, this counts as auth attempt!
curl --max-time 30 --connect-timeout 10 -sk -X POST "https://<tenant>.okta.com/api/v1/authn" \
-H "Content-Type: application/json" \
-d '{"username":"<email>","password":"_test_invalid_pw"}'
# Response codes:
# 401 + "errorCode":"E0000004" → invalid credentials (user exists OR doesn't — Okta unifies these)
# 401 + "errorCode":"E0000119" → account locked
# 200 → MFA prompt (cred VALID, MFA needed)
# 200 + "status":"SUCCESS" → full auth (rare in modern setups)
⚠ Okta 已加强防护,防止通过 /api/v1/authn 直接枚举用户是否存在——错误消息通常统一为“Authentication failed”。2024 年及以后,通过此端点进行用户枚举并不可靠。
方法 2 — /api/v1/users/me/factors 响应时间分析
某些流程会通过响应时间差异暴露用户是否存在。可靠性低于 M365 OneDrive 技术。
方法 3 — 登录小组件 JS 端点
curl --max-time 30 --connect-timeout 10 -sk "https://<tenant>.okta.com/api/v1/sessions/me" \
-H "Accept: application/json"
# Response varies by tenant config
方法 4 — 组织特定的标识符探测
某些 Okta 组织使用电子邮件地址作为用户名;其他组织则使用 firstname.lastname 或员工 ID。测试以下模式猜测:
[email protected]
[email protected]
[email protected]
[email protected]
方法 5 — 带有 login_hint 的 OIDC /v1/authorize
# Tampering with login_hint param can reveal user existence on some configs
curl --max-time 30 --connect-timeout 10 -skI "https://<tenant>.okta.com/oauth2/v1/authorize?client_id=<id>&response_type=code&scope=openid&redirect_uri=https://example.com&login_hint=<email>"
# Different redirect → user exists vs doesn't
身份验证流程分析(始终先执行此步骤)
# Initial auth — observe what factors come back
curl --max-time 30 --connect-timeout 10 -sk -X POST "https://<tenant>.okta.com/api/v1/authn" \
-H "Content-Type: application/json" \
-d '{"username":"<valid_user>","password":"_test_invalid_pw"}' | python3 -m json.tool
响应结构会揭示因素配置:
{
"stateToken": "00ABC...",
"factorResult": "WAITING",
"status": "MFA_REQUIRED",
"_embedded": {
"factors": [
{"factorType": "push", "provider": "OKTA"},
{"factorType": "token:software:totp", "provider": "OKTA"},
{"factorType": "sms", "provider": "OKTA"},
{"factorType": "call", "provider": "OKTA"},
{"factorType": "email", "provider": "OKTA"},
{"factorType": "question", "provider": "OKTA"},
{"factorType": "webauthn", "provider": "FIDO"}
]
}
}
**重要提示:**因素列表会揭示可用的因素——其抗钓鱼能力差异很大:
webauthn(FIDO2)——抗钓鱼question(安全问题)——极其薄弱;容易遭受 KBA 攻击sms/call——容易遭受钓鱼(推送通知疲劳、SIM 卡交换)push——容易通过 MFA 疲劳遭受钓鱼email——如果攻击者能读取电子邮件,则容易遭受钓鱼totp——容易通过 AiTM 遭受钓鱼
密码喷洒(遵守 Okta 特定的锁定纪律)
锁定策略
Okta 默认:连续 10 次登录失败 → 锁定(可按组织配置)。某些组织设置得严格得多(失败 3 次即锁定)。
操作规范:
- 每次参与期间,每个用户最多尝试 2 次(比 Entra 的 1 次更安全,因为 Okta 有时会在失败 3 次后锁定)
- 在原子状态文件中按用户跟踪
- 首次命中有效凭据时停止,或 LOCKED 比率超过阈值时停止
喷洒端点
# Same /api/v1/authn — see authentication flow above
需关注的状态码
| 响应 | 含义 |
|---|---|
200 status=MFA_REQUIRED | 密码有效——等待 MFA 挑战 |
200 status=SUCCESS + sessionToken | 完成身份验证(仅当该用户不需要 MFA 时) |
200 status=PASSWORD_EXPIRED | 密码有效,但用户必须更改密码 |
200 status=LOCKED_OUT | 账户已锁定(此前已锁定或由我们的操作导致) |
401 E0000004 | 身份验证失败(用户不存在或密码错误——Okta 对两者返回相同结果) |
401 E0000119 | 用户已锁定 |
429 | 触发速率限制 |
推送通知疲劳(MFA 轰炸)
如果获得了有效密码,且有 push 因素可用,典型攻击方式是:不断轰炸推送验证,直到用户因疲劳而接受。
⚠ 大多数红队行动都不在范围内(这属于社会工程或钓鱼行为——例如,针对授权行动的钓鱼已明确列为范围外)。请记录该攻击途径的存在,但未经明确批准不要执行。
仅检测检查(目标是否允许此操作?)
# Initiate factor verification
curl --max-time 30 --connect-timeout 10 -sk -X POST "https://<tenant>.okta.com/api/v1/authn/factors/<factor_id>/verify" \
-H "Content-Type: application/json" \
-d '{"stateToken":"<from_authn>"}'
# A real test would loop this — DON'T do that without explicit OK
OIDC redirect_uri 篡改
Okta OIDC 应用通常有一份允许的 redirect_uri 列表。配置错误包括:
# Get the app's authorize endpoint
curl --max-time 30 --connect-timeout 10 -sk "https://<tenant>.okta.com/.well-known/openid-configuration" | python3 -m json.tool
# Test redirect_uri injection
for ruri in \
"https://attacker.example.com/" \
"https://target.com.attacker.com/" \
"https://[email protected]/" \
"https://target.com#@attacker.com/" \
"https://target.com\\@attacker.com/" \
"//attacker.com/" \
"https://target.com/cb?next=https://attacker.com/"; do
code=$(curl --max-time 30 --connect-timeout 10 -sk -o /dev/null -w "%{http_code}" \
"https://<tenant>.okta.com/oauth2/v1/authorize?client_id=<client>&response_type=code&scope=openid&redirect_uri=$(python3 -c "import urllib.parse;print(urllib.parse.quote('$ruri'))")")
echo " $ruri → $code"
done
# Any 302 with the attacker URL in Location header = open redirect → auth-code theft chain
SAML SP 配置错误检查(逐个应用)
每个 Okta SAML 应用都有各自的 SP 元数据:
# Iterate known app IDs (find via the org's app list — usually in JS bundles or initial login redirects)
curl --max-time 30 --connect-timeout 10 -sk "https://<tenant>.okta.com/app/<app_id>/sso/saml/metadata"
# Look for:
# AuthnRequestsSigned="false" ← see hunt-saml for XSW
# WantAssertionsSigned="false" ← assertion-replay possible
# <NameIDFormat>...emailAddress</NameIDFormat>
Okta Admin API(凭据泄露后)
如果获得了有效凭据以及已完成 MFA 的令牌:
# Get session token
curl --max-time 30 --connect-timeout 10 -sk -X POST "https://<tenant>.okta.com/api/v1/authn" \
-d '{"username":"...","password":"..."}'
# → if SUCCESS, response has sessionToken
# Exchange for API token (admin only)
# Test admin endpoints (all require valid SSWS token):
curl --max-time 30 --connect-timeout 10 -sk -H "Authorization: SSWS <token>" "https://<tenant>.okta.com/api/v1/users"
curl --max-time 30 --connect-timeout 10 -sk -H "Authorization: SSWS <token>" "https://<tenant>.okta.com/api/v1/groups"
curl --max-time 30 --connect-timeout 10 -sk -H "Authorization: SSWS <token>" "https://<tenant>.okta.com/api/v1/apps"
curl --max-time 30 --connect-timeout 10 -sk -H "Authorization: SSWS <token>" "https://<tenant>.okta.com/api/v1/logs" # audit log
Okta 专用钓鱼套件(仅供参考——非钓鱼类测试不在范围内)
- EvilProxy — 支持 Okta 的 AiTM 套件
- Modlishka — 通用 AiTM
- Evilginx2 — 提供 Okta phishlet
记录其存在;未经明确的钓鱼测试授权,不得部署。
FastPass / Okta Verify 滥用
Okta FastPass 基于推送验证,并与设备绑定。绕过方式:
- 欺骗设备信任(需要套件和端点失陷——仅限内部测试)
- 推送疲劳(见上文)
- 将钓鱼流量重定向至伪造的 FastPass 提示
常见的 Okta 租户配置模式
| 指标 | 配置 |
|---|---|
<tenant>.okta.com/api/v1/iam/orgs 返回 401(而不是 404) | 已启用 API IAM 端点——属于管理员攻击面 |
匿名用户可访问 customize/sign-in 页面 | 租户品牌自定义信息公开——可用于收集情报 |
存在多个 *.okta.com SAN 证书 | 多租户组织(较少见) |
存在 oktapreview.com 子域名 | 预览 / 沙盒租户——安全性通常较弱 |
工具
OktaTerrify(github.com/silverhack/OktaTerrify)— 失陷后用于枚举 Okta 设备信任 / FastPass。唯一可验证的公开 Okta 专用攻击性命令行工具;没有其他名为“okta-attacker”或“okta-toolkit”的实用工具经过验证且仍在维护——应针对/api/v1/*编写适用于具体测试任务的脚本,而不要引用未经验证的命令行工具名称。
反模式
- 切勿在 Okta 上使用 Entra 风格的喷洒速率 — Okta 的反自动化机制在速率限制方面设置得更严格;更快就会触发限制
- 切勿跳过因素枚举 — 在尝试喷洒之前了解因素列表,有助于构建现实的威胁模型
- 切勿假定 MFA 疲劳攻击在测试范围内 — 这属于社会工程;必须获得明确许可
- 切勿将
*.oktapreview.com与生产环境混淆 — 预览环境属于非生产租户,发现问题的严重性也有所不同
与相邻技能的衔接
m365-entra-attack— 面向 M365 场景的同类技能;思路完全相同hunt-oauth— OIDC redirect_uri 篡改、state 攻击、PKCE 绕过hunt-saml— 面向单个应用 SAML SP 的 XSW / 签名剥离hunt-mfa-bypass— 推送疲劳、OTP 暴力破解、重放mid-engagement-ir-detection— Okta SOC 仪表板非常敏感;测试期间应预期会触发缓解措施
反模式:2024 年及以后的 Okta 用户枚举
一些在 2022 年前公开记录的技术(例如 /api/v1/authn 的差异化错误)已得到加固。不要依赖过时信息——每次测试都应通过以下方式确认枚举手段是否仍然有效:
- 测试 1 个已知存在的用户名(例如,在可访问时使用
info@<domain>) - 测试 1 个已知不存在的用户名
- 逐字节比较响应,并比较响应时间
如果响应完全相同,则该手段已被加固——转而采用与 OneDrive 等效的方案或其他方法。
已披露案例 / CVE / 协同披露文章
以下是支持本技能所述技术的权威公开资料。在适用时于报告中引用,并在界定新型 Okta 攻击链的测试范围时,将其作为参考案例。
1. Okta + Sitel/Sykes——LAPSUS$ 供应链泄露事件(2022 年 1 月,2022 年 3 月披露)
- 参考资料:https://sec.okta.com/articles/2022/03/official-okta-statement-lapsus-claims/、https://www.okta.com/blog/company-and-culture/oktas-investigation-of-the-january-2022-compromise/、https://thehackernews.com/2022/03/new-report-on-okta-hack-reveals-entire.html、https://www.itpro.com/security/cyber-security/367236/leaked-mandiant-report-okta-breach-lapsus-operation
- 攻击过程:LAPSUS$ 入侵了 Sitel 的一名支持工程师的工作站(Sitel 是第三方支持分包商,收购了 Sykes Enterprises)。他们通过 Mimikatz 和托管在 GitHub 上的工具,在一台瘦客户端跳板主机上访问了 Okta 内部的“SuperUser”支持工具,时间约为 2022 年 1 月 21 日的 25 分钟。最终确认的影响范围:366 个最初担心受影响的客户租户中,有 2 个遭到访问。
- 根本原因:第三方支持提供商持久拥有客户租户的特权访问权限、网络分段薄弱、域凭据存储在电子表格中、入站 VPN 账户未启用 MFA,以及延迟报告(Mandiant 报告于 3 月 17 日发布,直到 LAPSUS$ 发布截图后,Okta 才于 3 月 22 日公开披露)。
- 年份:2022 年。严重程度:严重(震撼整个行业,重塑了人们对 IdP 供应链的信任模式)。
2. Okta 客户支持 HAR 文件泄露事件(2023 年 9 月至 10 月)
- 参考资料:https://sec.okta.com/articles/2023/11/unauthorized-access-oktas-support-case-management-system-root-cause/、https://blog.cloudflare.com/how-cloudflare-mitigated-yet-another-okta-compromise/、https://www.beyondtrust.com/blog/entry/okta-support-unit-breach、https://www.bleepingcomputer.com/news/security/okta-breach-134-customers-exposed-in-october-support-system-hack/
- 攻击过程:Okta 支持员工在公司笔记本电脑上登录了个人 Google 个人资料;Chrome 同步功能将已保存的支持服务账户凭据外泄到一台已遭入侵的个人设备上。威胁行为者利用这些凭据,于 2023 年 9 月 28 日至 10 月 17 日登录支持工单管理门户,下载客户为排查问题而上传的 HAR 文件。HAR 文件包含有效的会话 Cookie/令牌,可用于重放会话,从而攻击客户的 Okta 租户。134 家客户受到影响,其中 5 家的会话遭劫持(BeyondTrust、Cloudflare 和 1Password 已公开披露)。
- 根本原因:服务账户凭据通过 Chrome 个人资料同步流转到非受管的个人设备;HAR 文件中含有未清理的会话令牌,且这些令牌可被重放(支持令牌未绑定 IP/设备)。
- 年份:2023 年。严重程度:严重。BeyondTrust 于 2023 年 10 月 2 日发现问题并报告给 Okta;Okta 直到 2023 年 10 月 19 日才公开承认此事。
3. Scattered Spider / Octo Tempest / UNC3944——Okta 租户社会工程攻击活动(2022—2024 年,仍在持续)
- 参考资料:https://www.cisa.gov/news-events/cybersecurity-advisories/aa23-320a、https://sec.okta.com/articles/2023/08/cross-tenant-impersonation-prevention-and-detection/、https://www.darkreading.com/cyberattacks-data-breaches/how-the-okta-cross-tenant-impersonation-attacks-succeeded、https://attack.mitre.org/groups/G1015/
- 攻击过程:该组织冒充员工致电 IT 服务台(身份信息取自 LinkedIn 个人资料),要求重置 MFA 和密码,从而获得 Okta 的初始立足点。随后,他们提权至 Okta Super-Admin,配置一个由攻击者控制的第二个 IdP,启用入站联合身份验证和账户关联,修改攻击者 IdP 上的 NameID 以匹配目标用户,并在无需目标用户凭据的情况下冒充租户中的任意 Okta 用户。该手法用于 MGM 和 Caesars 攻击(2023 年 9 月,损失超过 1 亿美元),并在 2023 年 7 月至 8 月的攻击活动中被确认影响了 4 家以上 Okta 客户。
- 根本原因:将服务台作为信任锚点,却未进行带外验证;Okta 的入站联合身份验证功能允许攻击者控制的 IdP 发出任意 NameID 声明,并将其视为真实声明。
- 年份:2023 年起。严重程度:严重。CISA/FBI 联合发布了 AA23-320A 公告。
4. Okta 跨源身份验证凭据填充(2024 年 4 月至 5 月)
- 参考资料:https://sec.okta.com/articles/2024/05/detecting-cross-origin-authentication-credential-stuffing-attacks/、https://thehackernews.com/2024/05/okta-warns-of-credential-stuffing.html、https://arcticwolf.com/resources/blog/okta-cross-origin-authentication-feature-customer-identity-cloud-targeted-credential-stuffing-attacks/
- 流程:Customer Identity Cloud(源自 Auth0)的跨源身份验证端点会悄然接受来自未注册源的凭据填充攻击。观测时间为 2024 年 4 月 15 日至 5 月。租户日志信号:
fcoa(跨源身份验证失败)、scoa(跨源身份验证成功)、pwd_leak(密码与泄露密码匹配)。 - 根本原因:默认情况下,所有租户均允许跨源身份验证,且身份验证 API 边缘未强制执行源白名单;凭据填充限流按端点而非按租户实施。
- 年份:2024 年。严重程度:高(通过重复使用凭据大规模接管账户)。
5. CVE-2024-0981 — Okta AD/LDAP DelAuth bcrypt 缓存密钥身份验证绕过(2024 年 10 月)
- 参考资料:https://trust.okta.com/security-advisories/okta-ad-ldap-delegated-authentication-username/、https://www.theregister.com/2024/11/04/why_the_long_name_okta/、https://www.nodejs-security.com/blog/okta-bcrypt-security-incident-bun-nodejs
- 流程:Okta 使用
bcrypt(userId + username + password)作为键来缓存 AD/LDAP DelAuth 结果。Bcrypt 会静默截断超过 72 字节的输入。当用户名长度 ≥ 52 个字符时,密码字节会落在 72 字节边界之后 → 缓存密钥不再受密码影响。如果用户此前成功登录过(缓存已填充),且 AD/LDAP Agent 无法访问,且 MFA 已禁用 → 任意密码均可通过身份验证。 - 根本原因:未考虑 bcrypt 算法 72 字节的输入限制便将其用作通用哈希函数,再加上缓存回退路径颠倒了安全模型(缓存比实时身份验证更受信任)。
- 年份:2024 年。严重程度:高。该漏洞于 2024 年 7 月 23 日引入,内部发现并于 2024 年 10 月 30 日修复(暴露窗口约 3 个月)。
6. Okta Verify iOS 推送响应绕过(CVE-2024-10327,于 2024 年 10 月披露)
- 参考资料:https://trust.okta.com/security-advisories/okta-verify-for-ios-cve-2024-10327/
- 流程:Okta Verify iOS 9.25.1-beta / 9.27.0 的 iOS ContextExtension 推送操作处理程序存在漏洞。在锁屏长按、下拉横幅或通过 Apple Watch 回复的情况下,“是我”和“不是我”按钮都会返回相同的接受身份验证响应。即使因推送疲劳而身心俱疲的用户明确点击了“不是我”,仍会批准该身份验证。
- 根本原因:两个通知响应操作处理程序都连接到了同一条后端确认路径——用户体验层面的拒绝操作未传递为后端拒绝。
- 年份:2024 年。严重程度:高(悄然瓦解用户抵御推送疲劳 / Scattered Spider 式推送轰炸的最后一道防线)。
7. Varonis Threat Labs — Okta 滥用事件“CrossTalk”与“Secret Agent”(2023 年 1 月)
- 参考资料:https://www.varonis.com/blog/okta-attack-vectors
- 流程:(a)CrossTalk:任何 Okta 租户管理员(包括免费开发者租户)都可以创建短信 / 邮件模板,并向任意邮箱 / 电话发送内容——发送通过合法的 Okta 邮件基础设施进行(SPF/DKIM/DMARC 检查均通过,域名为 okta.com)。攻击者利用这一点策划跨租户钓鱼攻击,使邮件看起来来自可信发件人。(b)Secret Agent:存储在本地部署的 Okta AD Agent 同步服务器上的 SSWS 令牌可以从磁盘解密;持有该令牌的人可以注册一个恶意 AD Agent,拦截整个组织的 DelAuth 明文凭据。
- 根本原因:(a)出站通知 API 未强制执行与租户绑定的发件人身份。(b)Agent SSWS 引导密钥以可恢复形式存储在磁盘上;注册新 Agent 无需管理员共同签署。
- 年份:2023 年。两者的严重程度均为高。Okta 已披露并修复这两个问题。
8. 通过窃密恶意软件窃取 Okta 管理控制台会话 Cookie(2022-2024,持续发生)
- 参考资料:https://sec.okta.com/articles/2023/08/cross-tenant-impersonation-prevention-and-detection/、https://www.cisa.gov/news-events/cybersecurity-advisories/aa23-320a、https://www.beyondtrust.com/blog/entry/okta-support-unit-breach
- 攻击流程:此类攻击中,企业终端上的窃密恶意软件(Lumma、RedLine、Raccoon、StealC)会从
<tenant>.okta.com和<tenant>-admin.okta.com窃取并外传sidCookie。如果 Okta 会话未绑定 IP 或设备,攻击者就会通过住宅代理重放 Cookie,获取用户的完整会话(如果受害者是管理员,也包括管理员会话),从而完全绕过 MFA(因为该会话已完成 MFA)。2023 年 10 月的 HAR 文件事件和 Scattered Spider 的大多数入侵都利用了这一手法。 - 根本原因:在强制使用 DPoP、设备绑定会话 Cookie 或非对称会话密钥之前,Okta 会话 Cookie 都是持有者令牌——任何持有 Cookie 的人都可以冒充该用户。
- 年份:2022-2024(此类攻击仍在持续)。严重程度:管理员会话被盗时为严重。
猎手须知
- 2022 年 LAPSUS$、2023 年 HAR 文件和 2023 年 Scattered Spider 攻击活动有一个共同模式:攻击很少针对 Okta 产品代码,而是利用 Okta 周边的信任关系(第三方支持、服务台验证、客户上传的文件、联合身份提供商)。侦察时应优先梳理这些信任关系。
- CVE-2024-0981(bcrypt 72 字节截断)是少见的纯 Okta 产品 CVE——Okta 披露的大多数漏洞都与配置或运维有关。
- 推送疲劳不只是社会工程问题——Okta Verify iOS 漏洞表明,平台本身可能在用户拒绝后悄悄批准推送请求。从 2024 年起,应将任何 Okta 推送验证因素都视为可绕过。
- 在红队范围界定中,HAR 文件重放、注入入站联合身份提供商 IdP,以及重放窃密 Cookie,是实际攻击中侦察后最有效的三种基础手法。
验证
- 检测 Okta 租户 — 确认 Okta URL 格式:
echo "https://company.okta.com" | grep -q "okta.com" && echo "PASS: Okta URL recognized" || echo "FAIL" echo "https://company.oktapreview.com" | grep -q "oktapreview" && echo "PASS: Okta Preview recognized" || echo "FAIL"
所有测试均用于验证 Okta 攻击就绪情况。
注意事项
- 发现 Okta 租户但未造成影响 — 知道 Okta 组织 URL 只是侦察。还需证明存在钓鱼、凭据测试或配置错误。
- 源代码中存在 Okta API 密钥 — Okta API 令牌有特定的作用域。声称存在影响前,应记录确切的作用域。
- Okta 级别的 SAML/OIDC 配置错误 — 如果 Okta 是身份提供商,相关配置错误会影响所有下游应用。这比单个应用的配置错误影响更大。
- 绕过 Okta Verify — Okta FastPass 和设备信任策略存在特定的绕过途径(无需验证即可注册设备)。应专门测试这些途径。
- Okta Classic 与 OIE — Okta Identity Engine 与 Okta Classic 的策略和绕过途径不同。测试前应先确认组织使用的类型。
相关技能与链式攻击
hunt-subdomain— Okta 租户命名模式(<org>.okta.com、<org>.oktapreview.com、<org>-admin.okta.com)经常包含孤立的开发租户。链式攻击原语:通过/.well-known/okta-organization发现 Okta 租户 → 枚举<org>-dev、<org>-uat、<org>-test子域名 → 使用hunt-subdomain识别孤立租户 → 接管被遗弃的租户 → 接管 SSO(合法的<org>用户会被重定向到受攻击者控制的 IdP,以访问联合到该开发租户的任意应用)。m365-entra-attack— 在混合组织中,M365 常将 Okta 用作 IdP。链式攻击原语:在 Okta 租户上通过okta-attack枚举用户并进行密码喷洒 → 成功 → Okta 与 Entra 联合 → 由被攻陷的 Okta 用户签发 SAML 断言 → 无需直接访问login.microsoftonline.com即可获得完整 M365 访问权限(在许多配置中可绕过 Entra 条件访问)。hunt-saml— Okta 会向每个联合的下游应用签发 SAML 断言。链式攻击原语:获取 Okta 管理员或开发者凭据 → 在 Okta 管理端伪造任意 SAML 断言 → 甚至不需要hunt-saml的 XSW 或签名篡改——即可通过合法签名的断言,在每个联合应用(Salesforce、Workday、AWS、GitHub、M365)中任意冒充用户。hunt-mfa-bypass— Okta 支持多种强制要求各异的因素。链式攻击原语:对 Okta 密码进行喷洒 → MFA 挑战 →hunt-mfa-bypass降级验证因素(推送疲劳攻击、短信回退、语音回退、安全问题回退)→ 绕过验证并获得已认证会话。triage-validation— Okta 发现的问题可能影响重大,但需要通过 7 问门槛验证捕获的凭据(令牌、代码、验证因素)是否确实授予了有意义的访问权限。链式攻击原语:验证 Okta 攻击原语 → 使用triage-validation确认访问层面 → 使用redteam-report-template明确说明联合应用的影响范围。password-spray-methodology— 适用于所有协议的通用密码喷洒流程 + 错误代码差异分析