Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Gin获取访客IP的绕过(之前通杀某SRC,获得多个高危)

Gin获取访客IP的绕过(之前通杀某SRC,获得多个高危)

作者头像
OneTS安全团队
发布于 2025-02-07 08:27:30
发布于 2025-02-07 08:27:30
7200
代码可运行
举报
文章被收录于专栏:OneTS安全团队OneTS安全团队
运行总次数:0
代码可运行

声明

本文属于OneTS安全团队成员98的原创文章,转载请声明出处!本文章仅用于学习交流使用,因利用此文信息而造成的任何直接或间接的后果及损失,均由使用者本人负责,OneTS安全团队及文章作者不为此承担任何责任。

Gin框架是什么

Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。

如何开始

Gin 需要Go版本1.21或更高版本。

通过使用Gomodules时(https://go.dev/wiki/Modules#how-to-use-modules)

例如:go [build|run|test],会自动安装必要的依赖项

import "github.com/gin-gonic/gin"或go get -u github.com/gin-gonic/gin

如下为一个简单的样例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import (
  "net/http"

  "github.com/gin-gonic/gin"
)

func main() {
  r := gin.Default()
  r.GET("/ping", func(c *gin.Context) {
    c.JSON(http.StatusOK, gin.H{
      "message": "pong",
    })
  })
  r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

ClientIP绕过

通常在Gin中,我们使用类似如下的函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 func xx(c *gin.Context){ ip := c.ClientIP() }

这里不禁思考是否存在绕过

尝试发起如下请求进行爆破

结果为X-Forwarded-ForX-Real-IP能够绕过

跟进源码

代码位于:

github.com\gin-gonic\gin@v1.10.0\context.go

c.ClientIP()大概逻辑是:检测c.engine.TrustedPlatform是否为可信任地址且不为空,如果是则返回该地址;检测c.engine.AppEngine是否为True,且X-Appengine-Remote-Addr头不为空;检查远程 IP 是否是受信任的代理,这里仅检测XFF和X-Real-IP两个头(看跟进结果)。

github.com\gin-gonic\gin@v1.10.0\gin.go

绕过之后

绕过之后能做什么?不管是路由爆破还是访问原本访问不了的站点都能进行更进一步的测试,之前就遇到了绕过之后翻JS获取到jwt密钥,通过构造认证参数进入后台从而RCE,这里就不进一步展开讲了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OneTS安全团队 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Golang语言 Gin框架环境配置、报错处理、接口调用、配置和日志管理|Go主题月
安装失败的话,直接打开 github.com/gin-gonic/gin,下载压缩包,并在GOPATH路径的src目录下面建立github.com,解压到这个目录下面;
微芒不朽
2022/09/13
1.1K0
获取请求IP,nginx配置方案,gin框架,2024版,go语言
在使用 Gin 框架时,获取用户请求的真实 IP 地址涉及到多种情况,尤其在使用代理服务器(如 Nginx)时。
小锟哥哥
2024/02/22
8160
获取请求IP,nginx配置方案,gin框架,2024版,go语言
Go 获取 IP 地址
使用 net 包可以获取本地机器的 IP 地址。以下是一个获取本地 IP 地址的简单示例:
孟斯特
2023/11/29
7570
Go 获取 IP 地址
Gin框架核心源码走读
| 导语 最近考虑给SCF简单封一层web库,提供cgi的http协议处理、上下文、拦截器、html渲染等能力。很自然就想到了Gin框架,基于golang且框架比较轻量,这里简单把核心源码做个走读笔记
王昂
2020/01/25
3.1K0
Gin框架核心源码走读
深入Gin框架内幕(二) 顶
在开始分析之前,我们先简单回顾一下上一个章节中讲到的Gin框架中的几个核心的结构.
BGBiao
2020/02/13
1.5K0
gin框架之参数获取
1、get请求获得query中内容 package main import ( "fmt" "github.com/gin-gonic/gin") func main() { router := gin.Default() router.GET("/get/query", func(c *gin.Context) { //a有值就获得,没有不处理 if a, ok := c.GetQuery("a"); ok { fmt.Printf("a的值%v", a) }
大话swift
2020/03/12
1.4K0
【云+社区年度征文】深入浅出 Gin 生命周期
Gin 是一个用 Go (Golang) 编写的 web 框架,由于出色的性能优势而被广泛使用,这里我们就来分析下 Gin 的请求生命周期
柳公子
2020/12/15
1.3K0
【云+社区年度征文】深入浅出 Gin 生命周期
Golang框架Gin入门实战--(6)Gin路由文件抽离
GINDEMO目录下创建一个routers目录 并在routers目录下创建三个go文件 adminRouters.go
互联网-小阿宇
2022/11/21
7550
Gin 框架介绍与快速入门
Gin是一个轻量级的Go语言Web框架,它具有高性能和简洁的设计。由于其快速的路由匹配和处理性能,Gin成为Go语言中最受欢迎的Web框架之一。以下是一些Gin框架的主要特点:
贾维斯Echo
2024/01/05
6780
Gin 框架介绍与快速入门
使用 AI 辅助开发一个开源 IP 信息查询工具:一
在写代码时,总是会遇到一些有趣的机缘巧合。前几天,我在翻看自己之前的开源项目时,又看到了 DDNS 相关的讨论。虽然在 2021 年我写过两篇相对详细的教程:《使用 Nginx 提供 DDNS 服务(前篇)[1]》和《使用 Nginx 提供 DDNS 服务(中篇)[2]》,但总觉得还可以做得更好。
soulteary
2024/12/23
1510
使用 AI 辅助开发一个开源 IP 信息查询工具:一
开发外包--golang熟练之gin & net(二)
Godev
2023/07/26
6270
gin框架之log处理
我们自定义了log的记录方式,但是这种方式国语简单,不利于我们收集错误信息。在这里为大家推荐一个记录日志的库`github.com/sirupsen/logrus`。logrus是目前Github上star数量最多的日志库.
大话swift
2020/03/26
8.9K0
Gin框架入门01--Http请求Body和Header的获取
Gin是一个轻量级的Web开发框架,与重量级代表Beego的区别在于,Gin专注于Web 中Http协议处理,数据、表格解析,路由与中间件等,而Beego相对大而全,完整MVC模式,不仅包含了Web协议处理的内容,也包含了数据库的CURD(Beego光数据库的驱动都有三种 mysql/Sqlite/Postgres)
IT工作者
2022/03/11
5.6K0
智能在线客服系统源码GOFLY开发日志- 4. gin框架增加日志中间件
项目里面的 web 框架是 gin,这个框架给我的感觉就是非常的小巧实用。使用的时候,基础运用非常的简单,相信看看文档大家都能运行起来,没什么可说的。如果现在需求是增加一个日志中间件,记录下 http 请求的一些数据,并且需要按日期来生成每天的日志文件,我是这么做的。
唯一Chat
2022/02/22
2410
Go语言WEB框架之Gin
文档:https://gin-gonic.com/zh-cn/docs/quickstart/
码客说
2022/10/05
1.2K0
Gin 1
前言 Gin 是一款用 Go(Golang) 编写的 web 框架 Gin is a web framework written in Go (Golang). It features a martini-like API with much better performance, up to 40 times faster thanks to httprouter 因为 httprouter, 它提供了更高的性能 这里演示一下如何安装 Gin Tip: 当前的版本为 Gin 1.2 和 Go 1.10 (
franket
2021/08/10
6630
gin框架上手实践
Gin框架是一个用Go语言编写的高性能Web框架,以其速度和简洁性著称。它由一个轻量级的HTTP路由器和一个中间件架构组成,能够处理大型流量并简化开发者的工作。Gin的主要特点包括内置的路由组、简洁的API设计、强大的错误处理机制、支持多种格式的请求绑定和验证,以及内置的日志记录功能。由于其性能优越和易于使用,Gin广泛应用于构建RESTful API和Web服务。其设计理念是尽可能减少繁琐的配置和代码,让开发者专注于业务逻辑,实现快速开发和部署。
FunTester
2024/07/30
1500
gin框架上手实践
Gin-Web-Framework官方指南中文(下篇)
ShouldBind,ShouldBindJSON,ShouldBindXML,ShouldBindQuery,ShouldBindYAML
小诚信驿站
2019/10/31
2.4K0
Gin-Web-Framework官方指南中文(下篇)
我给 gin 提交了一行代码
这篇文章记录一次给 gin-gonic/gin[1] 提交了一行代码的经历,虽然没什么含金量,但是对我而言还是挺开心的哈哈。
gopher云原生
2021/10/18
1.3K1
X-Forwarded-For 是一个 HTTP 扩展头
X-Forwarded-For 是一个 HTTP 扩展头。HTTP/1.1(RFC 2616)标准中并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP,现在已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。
用户7365393
2021/09/24
1.2K0
相关推荐
Golang语言 Gin框架环境配置、报错处理、接口调用、配置和日志管理|Go主题月
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验