技术社区
安全培训
技术社群
积分商城
先知平台
漏洞库
历史记录
清空历史记录
相关的动态
相关的文章
相关的用户
相关的圈子
相关的话题
注册
登录
Golang项目cmall-go代码审计
a7cc
漏洞分析
175浏览 · 2025-03-27 02:38
返回文档
壹 项目介绍
1.1 前言
项目地址:
cmall-go
技术
版本
Gin
v1.5.0
gorm
v1.9.10
该项目主要用到了
golang
主流的
web
框架
Gin
,这一点直接可以通过
go.mod
看出:
1.2 环境搭建
首先修改配置文件
.env.example
为
.env
,然后修改数据库信息:
接着在
main.go
下运行
go mod tidy
命令,下载对应的依赖信息:
然后就可以运行项目了,用
go run main.go
即可。
1.3 路由分析
首先进入
main.go
,进入
server.NewRouter()
方法:
跳转到
router.go
文件中,到这里我们可以看到路由的基本情况了,如果我们要访问登录,那么就构造
/api/v1/user/login
路由即可进入登录页面:
参数的获取,这里以用户登录为例子:
进入
api.UserLogin
方法,前面是通过
session
获取对应的信息,然后创建一个
service.UserLoginService
变量,接着使用
c.ShouldBind
绑定,基本上看到这里,我们就可以通过这个绑定方法确认需要传入的参数,就是
service.UserLoginService
变量:
查看
service.UserLoginService
变量有什么参数,共有
5
个,我们只需要用
json
设置参数名即可构造:
最后得到的请求为:
贰 代码审计
2.1 用户名枚举
进入登录接口:
跟进
Login
方法:
查询用户,如果用户不存在,设置
code
为
ERROR_NOT_EXIST_USER
,并返回用户不存在(管理员和普通用户登录处均有):
2.2 水平越权修改用户信息
在
v1
接口组下的
user
接口处,这里需要登录一个账号,进入
UserUpdate
方法:
接着进入
Update
方法,通过
ID
查找用户信息,然后将前端获取的其他信息进行赋值,即可修改成功,这里没有做任何的当前用户校验,导致水平越权:
2.3 水平越权添加用户购物车
在
v1
接口组下的
user
接口处,这里需要登录一个账号,进入
carts
方法,跟进
service.Create()
:
可以发现,只是通过用户
id
和产品进行绑定,但是没有验证用户是否为当前用户,后面的代码也仅仅只是做一些用户是否有购物记录的判断,所以该系统存在水平越权修改用户购物车:
2.4 水平越权添加其他用户地址
进入
api.CreateAddress
方法,调用
service.Create
方法创建收货地址:
这里我们可以看一下需要传递的参数,用户
id
、名字、电话号码和地址,这些参数都是可以从客户端获取的:
可以发现直接获取客户端信息创建地址信息,并没有对当前用户做任何的鉴权操作:
叁 复现
3.1 用户名枚举
3.2 水平越权修改用户信息
首先查看数据库中用户信息:
登录普通用户:
获取
token
,放到接口
/api/v1/user
中,并设置其他用户
id
和信息,这里我们设置用户
id
为
2
的用户,修改成功:
3.3 水平越权添加用户购物车
直接登录
A
用户添加
b
用户的购物车:
3.4 水平越权添加其他用户地址
直接登录
A
用户添加
b
用户的地址:
肆 收尾
该系统存在大量的水平越权漏洞,还有上传漏洞(这里没有本人没有设置环境变量就没有复现),
0
元购等。一般情况下,如果用了
gorm
依赖去做数据库查询的话,基本上很少有
SQL
注入(当然不排除愣头青),如果对
Golang
代码审计有兴趣的话,可以查看我的靶场项目:
Vulnerabilities_Server
。因为很少见到有写关于
Golang
项目的代码审计文章,所以想到是能给这部分空白加一点自己的微薄之力,如果有不错的漏洞可以扣我。
相对与
php
和
java
来说,
Golang
是一个比较安全的语言,在产出漏洞方面,更多出现的漏洞是一些逻辑漏洞,例如越权、权限绕过,当然不排除存在
SQL
注入、文件上传(一般需要搭配路径才能
RCE
)、命令执行、
SSTI
等,对于
Golang
的代码审计,个人的思路基本上和
Java
审计差不多,通过
go.mod
查看组件(目前
golang
公开的组件漏洞少之又少),然后便是查看路由,
golang
的路由一般会比较集中,可以在
router.go
、
main.go
下查找,而且接口的显示也很明了。
对于一些开源项目的查找,通过以下语法在
github
上试试:
最后我挑选了一些项目(不一定会有漏洞):
0
人收藏
1
人喜欢
转载
分享
0
条评论
某人
表情
可输入
255
字
评论
发布投稿
热门文章
1
从零掌握java内存马大全(基于LearnJavaMemshellFromZero复现重组)
2
突破网络限制,Merlin Agent助你轻松搭建跳板网络!
3
从白帽角度浅谈SRC业务威胁情报挖掘与实战
4
基于规则的流量加解密工具-CloudX
5
从0到1大模型MCP自动化漏洞挖掘实践
近期热点
一周
月份
季度
1
从零掌握java内存马大全(基于LearnJavaMemshellFromZero复现重组)
2
突破网络限制,Merlin Agent助你轻松搭建跳板网络!
3
从白帽角度浅谈SRC业务威胁情报挖掘与实战
4
基于规则的流量加解密工具-CloudX
5
从0到1大模型MCP自动化漏洞挖掘实践
暂无相关信息
暂无相关信息
优秀作者
1
T0daySeeker
贡献值:38700
2
一天
贡献值:24800
3
Yale
贡献值:18000
4
1674701160110592
贡献值:18000
5
1174735059082055
贡献值:16000
6
Loora1N
贡献值:13000
7
bkbqwq
贡献值:12800
8
手术刀
贡献值:11000
9
lufei
贡献值:11000
10
xsran
贡献值:10600
目录
壹 项目介绍
1.1 前言
1.2 环境搭建
1.3 路由分析
贰 代码审计
2.1 用户名枚举
2.2 水平越权修改用户信息
2.3 水平越权添加用户购物车
2.4 水平越权添加其他用户地址
叁 复现
3.1 用户名枚举
3.2 水平越权修改用户信息
3.3 水平越权添加用户购物车
3.4 水平越权添加其他用户地址
肆 收尾
转载
标题
作者:
你好
http://www.a.com/asdsabdas
文章
转载
自
复制到剪贴板