Super Vulnerable Java Application (SVJA) 在 Roniel 和 DaRon 播客秀中进行了演示,它是一个 Apache Struts 应用程序,旨在包含大量非常常见的漏洞。与其他“故意存在漏洞”的软件不同,该软件旨在模仿常见漏洞在现实中最常见的呈现方式,而不是采用过于简单化的方式或更偏向“夺旗赛”(capture the flag)的方式。该软件会定期进行更新和扩充,并在播客中演示其中的部分漏洞。
RDPS 超级易受攻击 Java 应用程序(Super Vulnerable Java Application)顾名思义,就是一个超级易受攻击的 Java 应用程序,其创建目的是让所有人看到各种常见、往往“复杂”的漏洞。该软件是 Roniel 和 DaRon 播客节目(https://www.youtube.com/channel/UCbj1JFcSJeTuf3qf9GPRemA)的一部分,这样我们就可以以一种比网上许多其他工具更真实的方式来讨论和展示我们经常遇到的一些漏洞。要查看示例漏洞利用,请观看我们的播客。
请记住,此应用程序有意针对许多方面高度易受攻击。请小心运行它的位置,限制谁能访问它(Tomcat 服务器应仅在 localhost 上监听,并且只能在你个人的机器上)。如果你不能妥善保管自己的东西,让你的副本暴露在外,任由任何人窃取你的数据或严重破坏你的机器,我们概不负责。我们建议你在一台已加固、不包含任何敏感内容且未连接互联网的虚拟机(VM)中运行它。如果未能妥善保护运行此程序及其实例的系统,很可能让你今天很难受。就像没有采取适当保护措施的随意肉体关系一样,你只是在把自己置于一个将来会后悔的境地。提醒过你了,但还是鼓励你玩 ;-)
RDPS SVJA 由一个运行 react 的 Java Struts 2 应用程序组成。只需运行以下命令即可构建:mvn clean package
这会在 target 目录中生成一个 WAR 文件 -- svja.war。只需将该 WAR 文件放入你的 Tomcat webapps 文件夹即可。在默认的 Tomcat 构建中,访问 http://127.0.0.1:8080/svja 即可使用该应用程序。
如果你运行的是 Tomcat 10 或更高版本,请将 <Loader jakartaConverter="TOMCAT" /> 添加到你的 Tomcat context.xml 配置文件中。
对于想用它来开个好头的人来说,根路径(http://127.0.0.1:8080/svja)现在提供了 Swagger UI 和一份基本的 OpenAPI 规范(http://127.0.0.1:8080/svja/specification.yaml)供你使用。请注意,该规范以及 Swagger UI 只是触及了表面(这可不就是不安全反序列化等问题的意义所在吗?)。
以下是系统中按操作分类的一些_主要_漏洞。
admin:admin (application administrator account)
bill:baker (privileged user account)
bob:barker (basic, read-only user account)
/api/authenticate?user.username=admin&user.password=admin
/api/authenticate?user.username=bill&user.password=baker
/api/authenticate?user.username=bob&user.password=barker
认证后,您可以使用 JSON 或 Struts 调用任何您想要的操作。
GET /svja/api/authenticate?user.username=bill&user.password=baker HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Host: localhost
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Length: 0
DNT: 1
Connection: close
Cache-Control: max-age=0
GET /svja/api/authenticate HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Host: localhost
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 61
DNT: 1
Connection: close
Cache-Control: max-age=0
{
"user": {
"username": "bill",
"password": "baker"
}
}
GET /svja/api/authenticate/federated?user.username=bill%40rdps.local&usernameTranslationRegex=%2F%40rdps%5B.%5Dlocal%2F%2F HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Host: localhost
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Length: 0
DNT: 1
Connection: close
Cache-Control: max-age=0
GET /svja/api/authenticate/federated HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Host: localhost
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 61
DNT: 1
Connection: close
Cache-Control: max-age=0
{
"user": {
"username": "[email protected]"
},
"usernameTranslationRegex": "/@rdps[.]local//"
}
请记得更改 svjatoken
GET /svja/api/projects?projectId=1 HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Cookie: svjatoken=RaMu5vhFBgL8goV6Ja1ffLnpmcixNuAL7fUP;
Cache-Control: max-age=0
请记得更改 svjatoken
GET /svja/api/projects HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 19
DNT: 1
Connection: close
Cookie: svjatoken=RaMu5vhFBgL8goV6Ja1ffLnpmcixNuAL7fUP;
Cache-Control: max-age=0
{
projectId:1
}
这是一个正在进行的项目,我们计划了更多漏洞和内容(包括一个超级易受攻击的前端以及其他超级易受攻击的应用程序)——每隔几个月回来看看,并观看 Roniel 和 DaRon 播客节目以获取更新、示例漏洞利用和其他想法。我们也鼓励你尝试找出如何缓解或修复这些漏洞……破坏很容易……缓解、修复和加固才是困难的。祝你好运,狩猎愉快!