Gitea 1.4.0 目录穿越导致命令执行漏洞
Gitea是从gogs衍生出的一个开源项目,是一个类似于Github、Gitlab的多用户Git仓库管理平台。其1.4.0版本中有一处逻辑错误,导致未授权用户可以穿越目录,读写任意文件,最终导致执行任意命令。
参考链接:
- https://security.szurek.pl/gitea-1-4-0-unauthenticated-rce.html
- https://www.leavesongs.com/PENETRATION/gitea-remote-command-execution.html
漏洞复现
环境启动后,访问http:/192.168.44.132:3000
,将进入安装页面,填写管理员账号密码,并修改网站URL,其他的用默认配置安装即可。(不要修改端口号)
安装完成后,创建一个公开的仓库,随便添加点文件进去(比如使用选定的文件和模板初始化仓库):
然后,需要执行一次docker-compose restart
重启gitea服务。(原因详见第二个参考链接)
由于漏洞链整体利用比较复杂,我们只复现文件读取部分,剩余利用方法详见第二个参考链接。
打开gitea,找到刚才创建的公开项目,如admin1/repo,发送如下数据包,添加一个Git LFS对象:
1 | POST /admin1/repo.git/info/lfs/objects HTTP/1.1 |
然后,访问http://192.168.44.132:3000/admin1/repo.git/info/lfs/objects/......%2F..%2F..%2Fetc%2Fpasswd/sth
,即可看到/etc/passwd
已被成功读取: