freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

PortSwigger之信息泄露+访问控制漏洞笔记
2021-09-13 08:21:38

声明

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

一、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

# 信息泄露 # 越权漏洞 # PortSwigger # 访问控制绕过
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录