当前位置: 首页 > news >正文

Authentication Lab | IP Based Auth Bypass

关注这个靶场的其它相关笔记:Authentication Lab —— 靶场笔记合集-CSDN博客

0x01:IP Based Auth Bypass 前情提要

有些开发人员为了图方便,会给站点设置一个 IP 白名单,如果访问站点的用户的 IP 在白名单内,则允许访问,反之,则无法访问。

IP 白名单本无可厚非,但有些开发人员是通过 HTTP 请求包中的 X-Forwarded-For 这个字段来识别访问者 IP 的,该字段可以被攻击者轻松伪造,这就造成了安全漏洞。

扩展阅读:X-Forwarded-For

X-Forwarded-For(简称 XFF)是一个 HTTP 扩展头部字段,用于在 HTTP 请求中标识客户端的真实 IP 地址。当客户端通过代理服务器或负载均衡器连接到 Web 服务器时,这个字段就可以提供原始的客户端 IP 地址。

XFF 头部的内容通常由代理服务器在转发请求时添加,格式如下:

 X-Forwarded-For : client, proxy1, proxy2

这里的 Client 是客户端的 IP 地址,proxy1 和 proxy2 是请求经过的代理服务器的 IP 地址。如果请求没有经过任何代理,那么 XFF 字段可能不存在,或者只包含客户端的 IP 地址。

注意: XFF 字段是可以被客户端伪造的。

0x02:IP Baed Auth Bypass Write UP

进入靶场,页面显示了我本机的 IP,以及一个提示符,bypass not allowed.

通过阅读上面的内容,我们知道了,Alex 设置了站点 IP 白名单,只要我本机的 IP 也在这个白名单中,我就也可以登录这个站点啦。

下面的问题就是,服务器是如何获取客户端 IP 的呢?

我们是通过 HTTP 请求与服务器通信的,在 HTTP 请求头中与 IP 地址相关的信息主要有下面两个:

  • Remote_Addr: 表示最后发出请求的客户端主机的 IP 地址,该字段是无法伪造的。

  • X-Forwarded-For: 用来标识通过 HTTP 代理或负载均衡方式连接到 Web 服务器的客户端最原始的 IP 地址的 HTTP 请求字段,该字段可以伪造。

二选一,我选择伪造 X-Forwarded-For 字段,来尝试绕过服务端过滤逻辑,使用 BurpSuite 抓取访问靶场的流量包:

将该请求包发送到 Repeater 模块,并手动添加上 X-Forwarded-For 字段,值为 192.168.0.100-200 中的任意一个值(靶场提示中已经给你啦):

从回显看,X-Forwarded-For 字段确实能影响服务端对 IP 的识别,接下来,我们将这个请求包发送到 Intruder 模块,暴力猜解有效的 IP 地址:

从回显的请求包中可以看出,以下 IP 均为白名单 IP(成功过关):

0x03:参考资料

  • HTTP 请求头中包含的 IP 地址相关信息 - CSDN 博客

http://www.lryc.cn/news/455943.html

相关文章:

  • linux中的火墙优化策略
  • GO网络编程(三):海量用户通信系统1:登录功能初步
  • Windows安全加固详解
  • JavaScript函数基础(通俗易懂篇)
  • 云RDS MySQL迁移至本地MySQL
  • 【C++ 11】nullptr 空指针
  • Flutter + Three.js (WebView)实现桌面端3d模型展示和交互
  • 学习日志35
  • http cache-control
  • kubernetes 中的微服务
  • 电脑无法无线投屏的解决办法
  • 【多重循环在Java中的应用】
  • JVM(Java Virtual Machine) 详解
  • 【进阶OpenCV】 (4)--图像拼接
  • pg if条件语句
  • Pikachu-unsafe upfileupload-getimagesize
  • SOA是什么
  • 构建高效团队,内部CRM系统的益处详解
  • Linux文件属性
  • 什么是Anaconda
  • ubuntu24开启启动脚本
  • 流浪地球行星发动机
  • 云岚到家,使用Elasticsearch实现服务的搜索功能,使用Canal+MQ完成服务信息与ES索引同步。MQ
  • 【图论】迪杰特斯拉算法
  • 四、Python基础语法(数据类型转换)
  • 工业物联网的安全与隐私保护—SunIOT
  • 二层网络和三层网络的理解与区别(包含通俗理解和归纳总结)
  • 【C++】:lambda表达式的高级应用
  • 详解正确创建好SpringBoot项目后但是找不到Maven的问题
  • 力扣203.移除链表元素