首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >滥用反向代理,第 2 部分:内部访问 核 代理人 研究

滥用反向代理,第 2 部分:内部访问 核 代理人 研究

作者头像
Khan安全团队
发布于 2022-01-17 16:47:46
发布于 2022-01-17 16:47:46
8670
举报
文章被收录于专栏:Khan安全团队Khan安全团队

介绍

如第 1 部分:滥用反向代理:元数据中所示,开放代理可以允许攻击者访问云元数据 API 服务。然而,即使没有可用的元数据服务,开放代理也可能成为攻击者的福音。

开放代理类型入门:

  • 转发:典型的用例是允许私有网络用户通过一个公共出口点访问互联网。这允许组织为用户可以访问哪些类型的互联网服务制定规则。

内部专用网络客户端通过代理服务器访问 Internet。

  • 反向:典型的用例是允许互联网用户通过网关访问某些可访问互联网的服务,并阻止对其他后端系统的访问。这样做的原因有很多,包括负载平衡、故障转移、安全等,以及何时有助于限制来自 Internet 的攻击面。

Internet 用户使用代理从内容服务器检索信息。

在大多数安全扫描程序中,开放代理检查执行基本测试以确定它们是否可以以某种明显的方式被滥用——主要是通过连接到一个通用或自定义域名。然而,这种方法还有很多未经测试的地方,包括能够使用代理连接到其自身的其他端口甚至网络“内部”的主机的高严重性问题。

一批新的核心模板专注于反向代理,如果配置错误,攻击者可以访问代理的“localhost”接口上的服务,并可能访问其他内部主机。这些模板侧重于以下用例:

  • 访问元数据服务
  • 在任何端口上访问代理的localhost接口
  • 访问专用网络上的其他系统

反向代理配置错误

应用程序团队很容易错误配置反向代理以允许意外访问。例如,对于 Apache mod_proxy ,一个简单的错误是允许使用以下语句进行访问:<Proxy "*">. 这允许代理用户通过代理访问任何主机,而不仅仅是预期的访问。

开放代理:互联网

开放式 Internet 代理可能允许攻击者通过使用开放式代理隐藏流量的原始来源,以无意的方式滥用服务。这可能因多种原因被滥用,包括 DOS 攻击、垃圾邮件、扫描或其他情况。Nuclei 有一个预先存在的模板用于这种基于请求的交互。

开放代理:本地主机

如果代理允许连接到代理的 localhost 接口(通过 localhost 或 127.0.0.1),则可以访问受限内容或服务。当与访问任何端口的能力相结合时(与允许访问的代理一起使用*),这也可以很容易地用作针对代理的简单端口扫描器。

可以访问代理机器上的其他端口或接口。

开放代理:内部

这种情况类似于“开放代理:本地主机”的情况,但是,它允许访问其他专用网络主机(也可以在任何端口上)。使用这种情况,攻击者可能能够识别可以通过代理访问的主机/端口,并且可以用作基本的专用网络映射器。

攻击者可以访问其他内部或专用网络主机,而不是访问预期的内容服务器。

测试的重要注意事项

在这种性质中滥用代理时,请务必注意以下几点:

  • 请求中的请求行必须是RFC中指定的绝对 URI 。
  • Host 标头必须与绝对 URI 的主机部分匹配。

这是一个完整的代理请求,供参考:

代码语言:javascript
复制
GET http://127.0.0.1:21 HTTP/1.1
Host: 127.0.0.1

复制

💡

注意:在 Burp Repeater 中发出请求时,如果 Host 标头与目标 URL 不匹配,它将生成警告。

例子:

连接到 SSH/SMTP 如前所述,配置不当的 HTTP 代理可能会被滥用来连接到非 HTTP 端口。在某些情况下,可以为某些服务创建交互式会话,但在大多数情况下,它可能至少会泄露有关目标服务的敏感信息。 以下是针对错误赏金目标进行测试时发现的两个示例:

在端口 22 (SSH) 上打开到代理内部接口的代理连接。

滥用内部代理

查找主机 一旦确定了通过代理连接到专用网络的能力,就可以执行主机和端口查找。核心模板尝试连接到常见的专用网络 IP(例如 192.168.0.1)以及一些常见的内部主机名。如果您识别出易受攻击的代理,内部主机和端口模糊测试可能是找到更多代理的更快方法。

例如,使用带有攻城锤攻击的 Burp Intruder 可以快速测试各种主机名。为端口设置的额外有效负载也有助于发现。

在两个位置上使用带有 Battering ram 攻击类型的标记,以便它们匹配每次尝试。

专业提示: - 尝试使用和不使用 FQDN - 使用子域列表作为名称 - 尝试不同的常用端口(例如,21、22、25、80、443) - 尝试内部地址方案(私有网络 IP 泄漏) - 外部使用发现的主机名

另请注意,即使最初没有找到打开的端口,您也可能会收到显示有用信息的代理错误。这可能有助于找到有效的 DNS 条目并随后寻找端口。

Apache mod_proxy 显示 DNS 查找失败。如果代理对此做出响应,则很容易确定哪些主机名没有失败查找,然后使用更长的开放端口列表扫描服务器。

密切注意来自代理的响应代码——这些也可用于查找有用的信息。

浏览内部主机 一旦识别出内部主机打开了 HTTP 端口,对 Web 服务器根 ( /) 的请求将显示原始 HTML 内容。

发现的内部主机名在网络服务器上有目录索引。

专业提示:为了方便浏览内部站点,建议将浏览器的代理设置为目标代理。

结论

几乎任何类型的开放代理都应该报告给目标客户端。通过仔细查看代理的响应,可以从任何类型的内部请求中获取大量信息,并且可以更加定制化和自动化后续攻击。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 介绍
    • 开放代理类型入门:
    • 反向代理配置错误
    • 开放代理:互联网
    • 开放代理:本地主机
    • 开放代理:内部
    • 测试的重要注意事项
    • 例子:
    • 滥用内部代理
    • 结论
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档