PortSwigger之信息泄露+访问控制漏洞笔记

声明

本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,我不承担任何法律及连带责任。

一、Information disclosure

image-20210910150259615

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。

image-20210910153037841

返回实验室,点击“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.

image-20210910162015824

image-20210910162847972

image-20210910162042101

3.在站点地图中,右键单击条目/cgi-bin/phpinfo.php并选择“Send to Repeater”。 在 Burp Repeater 中,发送检索文件的请求。请注意,它显示了各种调试信息,包括SECRET_KEY环境变量。

image-202109101621459124.返回实验室,点击“Submit solution”,进入SECRET_KEY解决实验室。

image-20210910162347051

03 Source code disclosure via backup files

描述

该实验室通过隐藏目录中的备份文件泄露其源代码。为解决实验室,识别并提交数据库密码,该密码已硬编码在泄露的源代码中。

解决方案

1.浏览/robots.txt并注意它显示/backup目录的存在。浏览以/backup查找文件ProductTemplate.java.bak。或者,右键单击站点地图中的实验室,然后转到“Engagement tools”>“Discover content”。然后,启动内容发现会话以发现/backup目录及其内容。

image-20210910163011646

image-20210910163026787

2.浏览以/backup/ProductTemplate.java.bak访问源代码。

image-20210910163042344

3.在源代码中,请注意连接构建器包含 Postgres 数据库的硬编码密码。 4.回到实验室,点击“提交解决方案”,输入数据库密码,解决实验室问题。

image-20210910163111309

04 Authentication bypass via information disclosure

描述

该实验室的管理界面存在身份验证绕过漏洞,但在不了解前端使用的自定义 HTTP 标头的情况下利用该漏洞是不切实际的。

要解决实验室问题,请获取标头名称,然后使用它绕过实验室的身份验证。访问管理界面并删除carlos的帐户。

您可以使用以下凭据登录自己的帐户:wiener:peter

解决方案

1.在 Burp Repeater 中,浏览到GET /admin. 响应表明,只有以管理员身份登录或从本地 IP 请求时才能访问管理面板。

image-20210910163803072

2.再次发送请求,但这次使用TRACE方法: TRACE /admin

image-20210910164021260

3.研究响应。请注意X-Custom-IP-Authorization,包含您的 IP 地址的标头会自动附加到您的请求中。这用于确定请求是否来自localhostIP 地址。

X-Custom-IP-Authorization: 218.7x.xxx.2

image-20210910163942742

4.转到“Proxy”>“Options”,向下滚动到“Match and Replace”部分,然后单击“add”。将匹配条件留空,但在“Replace”字段中,输入X-Custom-IP-Authorization: 127.0.0.1。Burp Proxy 现在会将此标头添加到您发送的每个请求中。

image-20210910164225607

image-20210910164311130

5.浏览到主页。请注意,您现在可以访问管理面板,您可以在其中删除 Carlos。

image-20210910164356988

image-20210910164420819

05 Information disclosure in version control history

描述

该实验室通过其版本控制历史记录披露敏感信息。要解决实验室,请获取administrator用户的密码,然后登录并删除卡洛斯的帐户。

解决方案

1.打开实验室并浏览以/.git显示实验室的 Git 版本控制数据。

image-20210910170535854

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”。

image-20210910171018495

4.仔细查看更改后admin.conf文件的差异。请注意,提交用环境变量替换了硬编码的管理员密码ADMIN_PASSWORD。但是,硬编码的密码在差异中仍然清晰可见。

安装git cola

apt-get install git
apt-get install git-cola

image-20210910171737350

打开文件夹

image-20210910171816792

image-20210910172142220

image-20210910172154051

image-20210910172220457

5.返回实验室并使用泄露的密码登录管理员帐户。

administrator/ml4m7da5t71d33zrg73r

6.要解决实验室,请打开管理界面并删除卡洛斯的帐户。

image-20210910172307312

二、Access control

01 Unprotected admin functionality

描述

该实验室有一个不受保护的管理面板。

通过删除用户解决实验室carlos

解决方案

1.转到实验室并robots.txt通过附加/robots.txt到实验室 URL 进行查看。请注意,该Disallow行公开了管理面板的路径。

image-20210911105705728

2.在 URL 栏中,替换/robots.txt为/administrator-panel以加载管理面板。

image-20210911105715221

3.删除carlos。

image-20210911105736460

02 Unprotected admin functionality with unpredictable URL

描述

该实验室有一个不受保护的管理面板。它位于不可预测的位置,但该位置已在应用程序的某处公开。

通过访问管理面板并使用它来删除用户来解决实验室问题carlos

解决方案

1.在home页的源码处发现存在一个敏感路径/admin-quniva

image-20210911110254020

2.此路径可以直接访问/admin-quniva

image-20210911110324382

3.删除carlos用户以解决实验

image-20210911110354565

03 User role controlled by request parameter

描述

这个实验室有一个管理面板/admin,它使用可伪造的 cookie 识别管理员。

通过访问管理面板并使用它删除用户来解决实验室问题carlos

您可以使用以下凭据登录自己的帐户:wiener:peter

解决方案

1.登录wiener用户,访问/admin页面

image-20210911110805822

2.查看数据包发现cookie中存在Admin用户的判断条件

image-20210911110841420

3.发送数据包到repeater,将false修改为true,成功绕过权限控制

image-20210911110919600

4.删除carlos用户解决实验

ps:我是通过将上面的响应使用浏览器访问的,但是点击delete的时候cookie又会验证Admin=false,这个问题可以再次将数据包发送到repeater修改true进行删除

image-20210911111203575

image-20210911112222676

方法2:可以设置全局的cookie中Admin字段值为true

转到“Proxy”>“Options”,向下滚动到“Match and Replace”部分,然后单击“add”。在Match位置将匹配条件设置为“false”,在“Replace”字段中,输入“true”。Burp Proxy 现在会将此标头添加到您发送的每个请求中。

image-20210911112121965

image-20210911112109021

image-20210911112136081

登录wiener用户之后,my-account也面存在管理功能,会一直保持管理员权限

image-20210911112303169

04 User role can be modified in user profile

描述

该实验室在 上有一个管理面板/admin。只有roleid为 2 的登录用户才能访问它。

通过访问管理面板并使用它删除用户来解决实验室问题carlos

您可以使用以下凭据登录自己的帐户:wiener:peter

解决方案

1.使用提供的凭据登录并访问您的帐户页面。 2.使用提供的功能更新电子邮件地址。抓包看到 “roleid”: 1

image-20210911114159833

3.将邮件提交请求发送到Burp Repeater,”roleid”:2在请求正文中添加JSON,重新发送。注意两个json块中间要用,观察响应显示您roleid已更改为 2。

image-20210911114236665

4.浏览/admin并删除carlos.

image-20210911114353938

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 。

image-20210911115013387

3.将X-Original-URL标头的值更改为/admin. 请注意,您现在可以访问管理页面。

image-20210911115052552

4.要删除 user carlos,请添加?username=carlos到真实的查询字符串中,并将X-Original-URL路径更改为/admin/delete。

image-20210911120205427

再次访问

image-20210911120229168

06 Method-based access control can be circumvented

描述

本实验部分基于请求的 HTTP 方法实现访问控制。您可以通过使用凭据登录来熟悉管理面板administrator:admin

要解决实验室问题,请使用凭据登录wiener:peter并利用有缺陷的访问控制将自己提升为管理员。

解决方案

1.使用administrator凭据登录。 2.浏览到管理面板,升级用户carlos,并将 HTTP 请求发送到 Burp Repeater。

image-20210911163744368

3.打开浏览器隐私窗口,并使用为wiener凭据登录。

4.尝试将非管理员用户wiener的cookie 替换到现有的 Burp Repeater 请求中来重新提升该用户,并观察响应显示“Unauthorized”。

image-20210911164045563

5.将方法从POST 更改为POSTX并观察响应更改为“缺少参数”。

image-20210911164132713

6.GET通过右键单击并选择“更改请求方法”, 将请求转换为使用该方法。

image-20210911164203406

7.将用户名参数更改为您的用户名wiener并重新发送请求。

image-20210911164242823

成功升级wiener权限

image-20210911164323265

07 User ID controlled by request parameter

描述

本实验室在用户账户页面存在横向提权漏洞。

解决实验室,为用户获取API密钥carlos并提交作为解决方案。

您可以使用以下凭据登录自己的帐户:wiener:peter

解决方案

1.使用提供的凭据登录并转到my-account页面。 2.请注意,该 URL 在“id”参数中包含您的用户名。

image-20210911164712988

3.将请求发送到 Burp Repeater,将“id”参数更改为carlos.

image-20210911164742013

4.检索并提交 API 密钥carlos。

image-20210911164847906

08 User ID controlled by request parameter, with unpredictable user IDs

描述

该实验室在用户帐户页面上存在横向提权漏洞,但通过 GUID 识别用户。

要解决实验室,请找到 的 GUIDcarlos,然后提交他的 API 密钥作为解决方案。

您可以使用以下凭据登录自己的帐户:wiener:peter

解决方案

1.查找 的博客文章carlos。

image-20210911231453857

2.单击carlos并观察 URL 包含他的用户 ID。记下此 ID。

userId=cf5d3103-e43b-4353-b79b-a9bb23345ee0

3.使用提供的凭据登录并访问您的帐户页面。

image-20210911231318919

4.将“id”参数更改为保存的用户 ID。

image-20210911232819314

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.

image-20210912143432823

1631431065_613da9997644232b21803.png!small?1631431067263

提交 API 密钥。

image-20210912143512911

10 User ID controlled by request parameter with password disclosure

描述

该实验室的用户帐户页面包含当前用户的现有密码,预填充为掩码输入。

要解决实验室,找回管理员的密码,然后用它删除carlos.

您可以使用以下凭据登录自己的帐户:wiener:peter

解决方案

1.使用提供的凭据登录并访问您的帐户页面。 2.在my-account页面中密码在前端显示

image-20210912143835646

image-20210912143928359

3.在my-account页面中url是这样的/my-account?id=wiener将此请求发送到 Burp Repeater。将“id”参数更改为administrator得到密码

tickurw7orvz14rvzxuq

image-20210912144050962

4.登录administrator/tickurw7orvz14rvzxuq删除carlos以解决实验

image-20210912144201096

11 Insecure direct object references

描述

该实验室将用户聊天记录直接存储在服务器的文件系统上,并使用静态 URL 检索它们。

通过找到用户的密码carlos并登录他们的帐户来解决实验室问题。

解决方案

1.打开靶机发现Live chat的功能,发送一条消息就会返回一句话

image-20210912144522474

2.点击View transcript可以下载聊天记录到本地

image-20210912144549916

3.我发现文件名是2.txt,那就下载一下1.txt看是否存在,复制下载链接修改文件名,下载成功,发现密码

image-20210912144657958

4.登录carlos/p7npfca1gzbpmrun4vu3

image-20210912144836373

12 Multi-step process with no access control on one step

描述

该实验室有一个管理面板,其中包含一个有缺陷的多步骤流程,用于更改用户的角色。您可以通过使用凭据登录来熟悉管理面板administrator:admin

要解决实验室问题,请使用凭据登录wiener:peter并利用有缺陷的访问控制将自己提升为管理员。

解决方案

1.使用管理员凭据登录。 2.浏览到管理面板,选择carlos,并点击Upgrade userYesHTTP 请求发送到 Burp Repeater。

image-20210912150424366

image-20210912150511883

3.打开私人/隐身浏览器窗口,并使用wiener凭据登录。 4.将wiener用户的会话 cookie 复制到现有的转发器请求中,将用户名更改为wiener,然后重播

image-20210912150709461

image-20210912150729455

image-20210912150757098

13 Referer-based access control

描述

该实验室根据 Referer 标头控制对某些管理功能的访问。您可以通过使用凭据登录来熟悉管理面板administrator:admin

要解决实验室问题,请使用凭据登录wiener:peter并利用有缺陷的访问控制将自己提升为管理员。

解决方案

1.使用管理员凭据登录。 2.浏览到管理面板,提升carlos,抓包。

image-20210912151131372

3.打开私人/隐身浏览器窗口,并使用非管理员凭据登录。

4.浏览/admin-roles?username=carlos&action=upgrade并观察由于缺少 Referer 标头,请求被视为未授权。

Referer: https://ac291ff11e0da74580dba4740073001f.web-security-academy.net/admin

image-20210912151228422

将这个数据包发送到Repeater

image-20210912151339533

5.将Referer的值复制到现有的 Burp Repeater 请求中,将用户名更改为wiener,然后重播。

image-20210912151432585

image-20210912151603538

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发