声明
本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,我不承担任何法律及连带责任。
一、Information disclosure
01 Information disclosure in error messages
描述
该实验室的详细错误消息表明它使用的是易受攻击的第三方框架版本。解决实验室,获取并提交该框架的版本号。
解决方案
1.在 Burp 运行的情况下,打开其中一个产品页面。 2.在 Burp 中,转到“proxy”>“HTTP history”并注意GET产品页面的请求包含一个productID参数。将GET /product?productId=1请求发送到 Burp Repeater。请注意,productId根据您加载的产品页面,您可能会有所不同。 3.在 Burp Repeater 中,将productId参数值更改为非整数数据类型,例如字符串。发送请求。 GET /product?productId="example" 4.意外的数据类型导致异常,并在响应中显示完整的堆栈跟踪。这表明该实验室正在使用 Apache Struts 2 2.3.31。
返回实验室,点击“Submit solution”,输入2 2.3.31,解决实验室问题。
02 Information disclosure on debug page
描述
此实验室包含一个调试页面,其中披露了有关应用程序的敏感信息。解决实验室,获取并提交SECRET_KEY
环境变量。
解决方案
1.在 Burp 运行的情况下,浏览到主页。 2.转到“Target”>“Site Map”选项卡。右键单击实验室的顶级条目,然后选择“Engagement tools”>“Find comments”。请注意,主页包含一个 HTML 注释,其中包含一个名为“Debug”的链接。这指向/cgi-bin/phpinfo.php.
3.在站点地图中,右键单击条目/cgi-bin/phpinfo.php并选择“Send to Repeater”。 在 Burp Repeater 中,发送检索文件的请求。请注意,它显示了各种调试信息,包括SECRET_KEY环境变量。
4.返回实验室,点击“Submit solution”,进入SECRET_KEY解决实验室。
03 Source code disclosure via backup files
描述
该实验室通过隐藏目录中的备份文件泄露其源代码。为解决实验室,识别并提交数据库密码,该密码已硬编码在泄露的源代码中。
解决方案
1.浏览/robots.txt并注意它显示/backup目录的存在。浏览以/backup查找文件ProductTemplate.java.bak。或者,右键单击站点地图中的实验室,然后转到“Engagement tools”>“Discover content”。然后,启动内容发现会话以发现/backup目录及其内容。
2.浏览以/backup/ProductTemplate.java.bak访问源代码。
3.在源代码中,请注意连接构建器包含 Postgres 数据库的硬编码密码。 4.回到实验室,点击“提交解决方案”,输入数据库密码,解决实验室问题。
04 Authentication bypass via information disclosure
描述
该实验室的管理界面存在身份验证绕过漏洞,但在不了解前端使用的自定义 HTTP 标头的情况下利用该漏洞是不切实际的。
要解决实验室问题,请获取标头名称,然后使用它绕过实验室的身份验证。访问管理界面并删除carlos的帐户。
您可以使用以下凭据登录自己的帐户:wiener:peter
解决方案
1.在 Burp Repeater 中,浏览到GET /admin. 响应表明,只有以管理员身份登录或从本地 IP 请求时才能访问管理面板。
2.再次发送请求,但这次使用TRACE方法: TRACE /admin
3.研究响应。请注意X-Custom-IP-Authorization,包含您的 IP 地址的标头会自动附加到您的请求中。这用于确定请求是否来自localhostIP 地址。
X-Custom-IP-Authorization: 218.7x.xxx.2
4.转到“Proxy”>“Options”,向下滚动到“Match and Replace”部分,然后单击“add”。将匹配条件留空,但在“Replace”字段中,输入X-Custom-IP-Authorization: 127.0.0.1。Burp Proxy 现在会将此标头添加到您发送的每个请求中。
5.浏览到主页。请注意,您现在可以访问管理面板,您可以在其中删除 Carlos。
05 Information disclosure in version control history
描述
该实验室通过其版本控制历史记录披露敏感信息。要解决实验室,请获取administrator
用户的密码,然后登录并删除卡洛斯的帐户。
解决方案
1.打开实验室并浏览以/.git显示实验室的 Git 版本控制数据。
2.下载整个目录的副本。对于非 Windows 用户,最简单的方法是使用命令wget -r https://your-lab-id.web-security-academy.net/.git. Windows 用户需要找到替代方法,或安装类似 UNIX 的环境,例如 Cygwin,才能使用此命令。windows也可以安装wget
wget -r https://ac911f391f9a733b80c4065c000d000c.web-security-academy.net/.git
3.使用本地 Git 浏览下载的目录。请注意,有一个带有消息的提交"Remove admin password from config"。
4.仔细查看更改后admin.conf文件的差异。请注意,提交用环境变量替换了硬编码的管理员密码ADMIN_PASSWORD。但是,硬编码的密码在差异中仍然清晰可见。
安装git cola
apt-get install git
apt-get install git-cola
打开文件夹
5.返回实验室并使用泄露的密码登录管理员帐户。
administrator/ml4m7da5t71d33zrg73r
6.要解决实验室,请打开管理界面并删除卡洛斯的帐户。
二、Access control
01 Unprotected admin functionality
描述
该实验室有一个不受保护的管理面板。
通过删除用户解决实验室carlos
。
解决方案
1.转到实验室并robots.txt通过附加/robots.txt到实验室 URL 进行查看。请注意,该Disallow行公开了管理面板的路径。
2.在 URL 栏中,替换/robots.txt为/administrator-panel以加载管理面板。
3.删除carlos。
02 Unprotected admin functionality with unpredictable URL
描述
该实验室有一个不受保护的管理面板。它位于不可预测的位置,但该位置已在应用程序的某处公开。
通过访问管理面板并使用它来删除用户来解决实验室问题carlos
。
解决方案
1.在home页的源码处发现存在一个敏感路径/admin-quniva
2.此路径可以直接访问/admin-quniva
3.删除carlos用户以解决实验
03 User role controlled by request parameter
描述
这个实验室有一个管理面板/admin
,它使用可伪造的 cookie 识别管理员。
通过访问管理面板并使用它删除用户来解决实验室问题carlos
。
您可以使用以下凭据登录自己的帐户:wiener:peter
解决方案
1.登录wiener用户,访问/admin页面
2.查看数据包发现cookie中存在Admin用户的判断条件
3.发送数据包到repeater,将false修改为true,成功绕过权限控制
4.删除carlos用户解决实验
ps:我是通过将上面的响应使用浏览器访问的,但是点击delete的时候cookie又会验证Admin=false,这个问题可以再次将数据包发送到repeater修改true进行删除
方法2:可以设置全局的cookie中Admin字段值为true
转到“Proxy”>“Options”,向下滚动到“Match and Replace”部分,然后单击“add”。在Match位置将匹配条件设置为“false”,在“Replace”字段中,输入“true”。Burp Proxy 现在会将此标头添加到您发送的每个请求中。
登录wiener用户之后,my-account也面存在管理功能,会一直保持管理员权限
04 User role can be modified in user profile
描述
该实验室在 上有一个管理面板/admin
。只有roleid
为 2 的登录用户才能访问它。
通过访问管理面板并使用它删除用户来解决实验室问题carlos
。
您可以使用以下凭据登录自己的帐户:wiener:peter
解决方案
1.使用提供的凭据登录并访问您的帐户页面。 2.使用提供的功能更新电子邮件地址。抓包看到 "roleid": 1
3.将邮件提交请求发送到Burp Repeater,"roleid":2在请求正文中添加JSON,重新发送。注意两个json块中间要用,
观察响应显示您roleid已更改为 2。
4.浏览/admin并删除carlos.
05 URL-based access control can be circumvented
描述
该网站在 上有一个未经/admin
身份验证的管理面板,但前端系统已配置为阻止外部访问该路径。但是,后端应用程序构建在支持X-Original-URL
标头的框架上。
要解决实验室问题,请访问管理面板并删除用户carlos
。
解决方案
1.尝试加载/admin并观察您是否被阻止。请注意,响应非常简单,表明它可能来自前端系统。
2.将请求发送到 Burp Repeater。将请求行中的 URL 更改为/
并添加 HTTP 标头X-Original-URL: /invalid。观察应用程序返回“未找到”响应。这表明后端系统正在处理来自X-Original-URL标头的 URL 。
3.将X-Original-URL标头的值更改为/admin. 请注意,您现在可以访问管理页面。
4.要删除 user carlos,请添加?username=carlos到真实的查询字符串中,并将X-Original-URL路径更改为/admin/delete。
再次访问
06 Method-based access control can be circumvented
描述
本实验部分基于请求的 HTTP 方法实现访问控制。您可以通过使用凭据登录来熟悉管理面板administrator:admin
。
要解决实验室问题,请使用凭据登录wiener:peter
并利用有缺陷的访问控制将自己提升为管理员。
解决方案
1.使用administrator凭据登录。 2.浏览到管理面板,升级用户carlos,并将 HTTP 请求发送到 Burp Repeater。
3.打开浏览器隐私窗口,并使用为wiener凭据登录。
4.尝试将非管理员用户wiener的cookie 替换到现有的 Burp Repeater 请求中来重新提升该用户,并观察响应显示“Unauthorized”。
5.将方法从POST 更改为POSTX并观察响应更改为“缺少参数”。
6.GET通过右键单击并选择“更改请求方法”, 将请求转换为使用该方法。
7.将用户名参数更改为您的用户名wiener并重新发送请求。
成功升级wiener权限
07 User ID controlled by request parameter
描述
本实验室在用户账户页面存在横向提权漏洞。
解决实验室,为用户获取API密钥carlos
并提交作为解决方案。
您可以使用以下凭据登录自己的帐户:wiener:peter
解决方案
1.使用提供的凭据登录并转到my-account页面。 2.请注意,该 URL 在“id”参数中包含您的用户名。
3.将请求发送到 Burp Repeater,将“id”参数更改为carlos.
4.检索并提交 API 密钥carlos。
08 User ID controlled by request parameter, with unpredictable user IDs
描述
该实验室在用户帐户页面上存在横向提权漏洞,但通过 GUID 识别用户。
要解决实验室,请找到 的 GUIDcarlos
,然后提交他的 API 密钥作为解决方案。
您可以使用以下凭据登录自己的帐户:wiener:peter
解决方案
1.查找 的博客文章carlos。
2.单击carlos并观察 URL 包含他的用户 ID。记下此 ID。
userId=cf5d3103-e43b-4353-b79b-a9bb23345ee0
3.使用提供的凭据登录并访问您的帐户页面。
4.将“id”参数更改为保存的用户 ID。
5.检索并提交 API 密钥。
09 User ID controlled by request parameter with data leakage in redirect
描述
该实验室包含一个访问控制漏洞,其中敏感信息在重定向响应正文中泄露。
解决实验室,为用户获取API密钥carlos
并提交作为解决方案。
您可以使用以下凭据登录自己的帐户:wiener:peter
解决方案
1.使用提供的凭据登录并访问您的帐户页面。 2.在my-account页面中url是这样的/my-account?id=wiener
将此请求发送到 Burp Repeater。 3.将“id”参数更改为carlos. 4.请注意,尽管响应现在将您重定向到主页,但它的正文包含属于carlos.
提交 API 密钥。
10 User ID controlled by request parameter with password disclosure
描述
该实验室的用户帐户页面包含当前用户的现有密码,预填充为掩码输入。
要解决实验室,找回管理员的密码,然后用它删除carlos
.
您可以使用以下凭据登录自己的帐户:wiener:peter
解决方案
1.使用提供的凭据登录并访问您的帐户页面。 2.在my-account页面中密码在前端显示
3.在my-account页面中url是这样的/my-account?id=wiener
将此请求发送到 Burp Repeater。将“id”参数更改为administrator得到密码
tickurw7orvz14rvzxuq
4.登录administrator/tickurw7orvz14rvzxuq删除carlos以解决实验
11 Insecure direct object references
描述
该实验室将用户聊天记录直接存储在服务器的文件系统上,并使用静态 URL 检索它们。
通过找到用户的密码carlos
并登录他们的帐户来解决实验室问题。
解决方案
1.打开靶机发现Live chat的功能,发送一条消息就会返回一句话
2.点击View transcript可以下载聊天记录到本地
3.我发现文件名是2.txt,那就下载一下1.txt看是否存在,复制下载链接修改文件名,下载成功,发现密码
4.登录carlos/p7npfca1gzbpmrun4vu3
12 Multi-step process with no access control on one step
描述
该实验室有一个管理面板,其中包含一个有缺陷的多步骤流程,用于更改用户的角色。您可以通过使用凭据登录来熟悉管理面板administrator:admin
。
要解决实验室问题,请使用凭据登录wiener:peter
并利用有缺陷的访问控制将自己提升为管理员。
解决方案
1.使用管理员凭据登录。 2.浏览到管理面板,选择carlos,并点击Upgrade user
将Yes
HTTP 请求发送到 Burp Repeater。
3.打开私人/隐身浏览器窗口,并使用wiener凭据登录。 4.将wiener用户的会话 cookie 复制到现有的转发器请求中,将用户名更改为wiener,然后重播
13 Referer-based access control
描述
该实验室根据 Referer 标头控制对某些管理功能的访问。您可以通过使用凭据登录来熟悉管理面板administrator:admin
。
要解决实验室问题,请使用凭据登录wiener:peter
并利用有缺陷的访问控制将自己提升为管理员。
解决方案
1.使用管理员凭据登录。 2.浏览到管理面板,提升carlos,抓包。
3.打开私人/隐身浏览器窗口,并使用非管理员凭据登录。
4.浏览/admin-roles?username=carlos&action=upgrade
并观察由于缺少 Referer 标头,请求被视为未授权。
Referer: https://ac291ff11e0da74580dba4740073001f.web-security-academy.net/admin
将这个数据包发送到Repeater
5.将Referer的值复制到现有的 Burp Repeater 请求中,将用户名更改为wiener,然后重播。