一、服务器漏洞(1)

目录

1.路径遍历

1.1 通过路径遍历读取任意文件

示例:含有文件遍历漏洞​编辑

2.存取控制

2.1 什么是访问控制?

2.2 垂直权限提升

2.3 未受保护的功能

示例:一个未受保护的管理员面板,删除用户

2.4 未受保护的功能 - 续

示例:

2.5 基于参数的访问控制方法

示例:

2.6 水平权限提升

注意

实例 

2.7 水平到垂直的权限提升

 示例


学习工具:Web Application Security, Testing, & Scanning - PortSwigger

(以下部分知识内容由浏览器自带翻译翻译而来)

1.路径遍历

    路径遍历也称为目录遍历。这些漏洞使攻击者能够读取运行应用程序的服务器上的任意文件,包括:

  • 应用程序代码和数据
  • 后端系统的凭据
  • 敏感的操作系统文件

    在某些情况下,攻击者可能能够写入服务器上的任意文件,从而允许他们修改应用程序数据或行为,并最终完全控制服务器。

1.1 通过路径遍历读取任意文件

想象一下,一个显示待售商品图像的购物应用程序。这可能会使用以下 HTML 加载图像:

<img src="/loadImage?filename=218.png">

URL 采用参数并返回指定文件的内容。映像文件存储在磁盘上的位置。为了返回图像,应用程序将请求的文件名追加到此基目录,并使用文件系统 API 读取文件的内容。换句话说,应用程序从以下文件路径读取:loadImagefilename/var/www/images/

/var/www/images/218.png

此应用程序不实施针对路径遍历攻击的防御。因此,攻击者可以请求以下 URL 以从服务器的文件系统中检索文件:/etc/passwd

https://insecure-website.com/loadImage?filename=../../../etc/passwd

这会导致应用程序从以下文件路径读取:

/var/www/images/../../../etc/passwd

该序列在文件路径中有效,意味着在目录结构中提升一个级别。三个连续的序列从文件系统根级递增,因此实际读取的文件是:../..//var/www/images/

/etc/passwd

在基于 Unix 的操作系统上,这是一个标准文件,其中包含在服务器上注册的用户的详细信息,但攻击者可以使用相同的技术检索其他任意文件。

在 Windows 上,和 都是有效的目录遍历序列。以下是针对基于 Windows 的服务器的等效攻击示例:../..\

https://insecure-website.com/loadImage?filename=..\..\..\windows\win.ini

示例:含有文件遍历漏洞

使用Burpsuite抓包

修改数据包并发送

2.存取控制

2.1 什么是访问控制?

访问控制是对有权执行操作或访问资源的人员或内容应用约束。在 Web 应用程序的上下文中,访问控制依赖于身份验证和会话管理:

  • 身份验证确认用户是他们所说的人。
  • 会话管理可识别同一用户正在发出哪些后续 HTTP 请求。
  • 访问控制确定是否允许用户执行他们尝试执行的操作。

    损坏的访问控制很常见,并且通常存在严重的安全漏洞。访问控制的设计和管理是一个复杂且动态的问题,它将业务、组织和法律约束应用于技术实现。访问控制设计决策必须由人类做出,因此出错的可能性很高。

2.2 垂直权限提升

    如果用户可以访问他们不允许访问的功能,则这就是垂直权限提升。例如,如果非管理员用户可以访问管理员页面,他们可以在其中删除用户帐户,则这就是垂直权限提升。

2.3 未受保护的功能

    在最基本的情况下,当应用程序不对敏感功能实施任何保护时,就会发生垂直权限提升。例如,管理功能可能从管理员的欢迎页面链接,但不能从用户的欢迎页面链接。但是,用户可能能够通过浏览到相关的管理员 URL 来访问管理功能。

    例如,网站可能会在以下 URL 上托管敏感功能:

https://insecure-website.com/admin

    任何用户都可以访问此内容,而不仅仅是在其用户界面中具有指向该功能的链接的管理用户。在某些情况下,管理 URL 可能会在其他位置披露,例如文件:robots.txt

https://insecure-website.com/robots.txt

    即使 URL 未在任何地方披露,攻击者也可能能够使用单词列表来暴力破解敏感功能的位置。

示例:一个未受保护的管理员面板,删除用户

1.在url中输入/robots.txt

  User-agent: *:这一行表示这个指令适用于所有的搜索引擎爬虫。* 是通配符,表示任何搜索引擎。

  Disallow: /administrator-panel:这一行表示搜索引擎爬虫不应该访问网站的           /administrator-panel 路径。也就是说,这个路径下的内容不会被搜索引擎索引到。

    这个文件的作用是帮助网站管理员控制哪些部分的内容可以被搜索引擎抓取和索引,从而保护一些敏感内容或不希望被公开的部分。

访问/administrator-panel路径

获得管理员权限。

2.4 未受保护的功能 - 续

    在某些情况下,通过为其提供不太可预测的 URL 来隐藏敏感功能。这就是所谓的“隐蔽性安全”的一个例子。但是,隐藏敏感功能并不能提供有效的访问控制,因为用户可能会以多种方式发现混淆的 URL。

想象一下,一个应用程序在以下 URL 上托管管理功能:

https://insecure-website.com/administrator-panel-yb556

    攻击者可能无法直接猜到这一点。但是,应用程序仍可能将 URL 泄露给用户。URL 可能会在 JavaScript 中公开,该 JavaScript 根据用户的角色构建用户界面:

<script> var isAdmin = false; if (isAdmin) { ... var adminPanelTag = document.createElement('a'); adminPanelTag.setAttribute('https://insecure-website.com/administrator-panel-yb556'); adminPanelTag.innerText = 'Admin panel'; ... } </script>

    如果用户是管理员用户,则此脚本会向用户的 UI 添加一个链接。但是无论其角色如何,包含 URL 的脚本对所有用户都是可见的。

示例:

    一个未受保护的管理员面板。它位于不可预测的位置,但该位置在应用程序中的某处公开。通过访问管理员面板并使用它删除用户。

1.访问页面源代码

如果 isAdmin 被设置为 true,则会在 top-links 元素中动态添加一个指向 /admin-4x6g0a 的管理员面板链接。访问此链接

成功获得管理员权限。

2.5 基于参数的访问控制方法

    某些应用程序在登录时确定用户的访问权限或角色,然后将此信息存储在用户可控制的位置。这可能是:

  • 一个隐藏的字段。
  • 一个cookie。
  • 预设的查询字符串参数。

应用程序根据提交的值做出访问控制决策。例如:

https://insecure-website.com/login/home.jsp?admin=true https://insecure-website.com/login/home.jsp?role=1

这种方法是不安全的,因为用户可以修改他们无权访问的值和访问功能,例如管理功能。

示例:

  有一个管理员面板,用于识别使用可伪造 Cookie 的管理员。/admin

  通过访问管理员面板并使用它来删除用户。carlos

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

 1.访问页面,用所给的用户名和密码登录账户

2.开启Burpsuite进行抓包将Admin=false改为Admin=true

我们得到管理员面板链接,点击

此时我们就可以得到管理员权限删除用户

2.6 水平权限提升

    如果用户能够访问属于另一个用户的资源,而不是他们自己的该类型的资源,则会发生水平权限提升。例如,如果员工可以访问其他员工的记录以及他们自己的记录,则这就是水平权限提升。

    横向权限提升攻击可能使用与垂直权限提升类似的利用方法。例如,用户可以使用以下 URL 访问自己的帐户页面:

https://insecure-website.com/myaccount?id=123

    如果攻击者将参数值修改为其他用户的参数值,他们可能会获得对其他用户的帐户页面以及相关数据和功能的访问权限。

注意

    这是不安全的直接对象引用 (IDOR) 漏洞的一个示例。当用户控制器参数值用于直接访问资源或功能时,就会出现此类漏洞。

    在某些应用程序中,可利用参数没有可预测的值。例如,应用程序可能使用全局唯一标识符 (GUID) 来标识用户,而不是递增的数字。这可以防止攻击者猜测或预测其他用户的标识符。但是,属于其他用户的 GUID 可能会在引用用户的应用程序中的其他位置披露,例如用户消息或评论。

实例 

此实验室在用户帐户页面上存在水平权限提升漏洞,但使用 GUID 识别用户。若要解决实验问题,请找到 的 GUID,然后提交其 API 密钥作为解决方案。carlos

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

打开实验界面 这里显示其用户名

点击,此时我们可以获取到其用户ID,记住此ID

用所给的账号和密码登录我们的账户

将我们的ID替换为刚才保存的其他用户的ID,我们就可以看到其API秘钥,提交此秘钥,此实验结束。

2.7 水平到垂直的权限提升

    通常,水平权限提升攻击可以通过危害特权更高的用户来转变为垂直权限提升。例如,水平升级可能允许攻击者重置或捕获属于其他用户的密码。如果攻击者以管理用户为目标并破坏其帐户,则他们可以获得管理访问权限,从而执行垂直权限提升。

    攻击者可能能够使用已针对水平权限提升描述的参数篡改技术来访问其他用户的帐户页面:

https://insecure-website.com/myaccount?id=456

    如果目标用户是应用程序管理员,则攻击者将获得对管理帐户页面的访问权限。此页面可能会泄露管理员的密码或提供更改密码的方法,或者可能提供对特权功能的直接访问。

 示例

此实验室具有用户帐户页,其中包含当前用户的现有密码,并预填充在屏蔽输入中。

要解决实验室问题,请检索管理员的密码,然后使用它删除用户。carlos

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

 根据所给的账号和密码登录自己的账号,界面如下:

开启Burpsuite,在url中更改ID为adminstrator,点击update Password进行抓包

得到adminstrator账号密码,复制此Password,用此账号登录

此时便可以删除用户

到此,此实验结束。

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值