让安全编码变得实用
探索安全编码指南,了解并缓解 OWASP Top 10 等软件漏洞,并通过引导式训练任务在真实的应用程序模拟中进行实践。
浏览所有任务
目录

SQL 注入
我们收到用户报告称,他们利用了网上银行解决方案中交易搜索功能的 SQL 注入漏洞。据其所述,他们能够查看属于其他用户的交易,并指出该漏洞可能允许攻击者对数据库进行各种恶意操作,例如删除表、查看其他表中的数据、插入数据等。请尝试在本任务中复现该用户的操作。

Spring MvcRequestMatchers
2023 年 3 月,Spring 发布了针对内部发现的漏洞 CVE-2023-20860 的修复程序。该漏洞中,在 mvcRequestMatchers 使用双通配符 ** 可能导致 Spring Security 和 Spring MVC 之间的模式匹配不一致,最终可能导致用户获得某些端点的未经授权访问权限。我们搭建了一个包含少量端点的简化版银行应用程序。请按照说明操作,尝试复现此访问控制漏洞的影响。

心灵感应签名 - 使用已知易受攻击的组件
CVE-2022-21449 是漏洞界最酷的别名,即 Java 中的“心灵感应签名”。这个名字是怎么来的呢?它源自《神秘博士》中的“心灵感应纸”。当人们看到这些空白纸张时,上面会自动浮现出他们期望看到的内容。Java(15 至 18 版本)在实现 ECDSA 算法时也出现了类似的情况,这会影响 JWT 的签名验证。我们可以提交一个无效签名,但 Java 却会将其判定为有效。想了解其原理吗?让我们开始吧。

Apache 路径遍历 - 使用已知易受攻击的组件
2021 年 10 月 4 日,Apache 团队发布了 2.4.49 版本,以修复 Apache 2.4.48 中存在的路径遍历和远程代码执行漏洞(即 CVE-2021-41773)。由于 2.4.50 热修复补丁不完整,他们于 2021 年 10 月 7 日又发布了 2.4.51 版本,该漏洞被追踪为 CVE-2021-42013。快来尝试这个任务,亲身体验该漏洞是如何被利用的。

Log4j - 使用已知易受攻击的组件
2021 年 12 月初,广受欢迎的日志库 Log4j 曝出一个 0-day 漏洞(CVE-2021-44228),在 Java 社区引发了巨大震动。该漏洞被称为 Log4Shell,影响 Log4j v2 2.0-beta9 至 2.14.1 版本,可能导致远程代码执行。我们搭建了一个模拟该漏洞的环境,让您可以直观地了解其影响。立即尝试。

特洛伊木马源 - 使用来自不可信来源的组件
Viking Bank 的一名开发人员在编写用于管理信用卡的管理员授权检查代码时,天真地从互联网上的不可信来源复制了一些代码,其中可能包含易受攻击的组件。我们发现,尽管只有管理员才有此权限,但普通用户却能够更改其信用卡额度。我们认为那段代码有问题。请尝试完成此任务以调查该代码。

Codestashbin - 不安全的密码重置功能
CodeStashBin 是全球最大的代码版本控制托管公司之一。据传其“忘记密码”流程存在不安全的密码重置漏洞。攻击者或许能够更改特权用户的密码并获取其账户访问权限。立即加入本次任务,深入调查该问题。

“ChatterGPT”中的跨站脚本攻击(XSS)
本任务展示了一个流行大语言模型(LLM)的熟悉界面,并使用了 2023 年 11 月下旬生成的真实代码片段。用户可以解读此片段,并探究若将其用于预期用途时可能存在的安全隐患。