Docker

Task 16

Depois de estabilizar o shell, podemos começar com a enumeração pós-exploração, ou seja, encontrar maneiras de escalar privilégios.

Em um sistema Linux padrão, deve estar bastante vazio. No entanto, no contêiner, o arquivo é preenchido com entradas do grupo de controle, podemos confirmar que estamos em uma instância docker

www-data@f3d5e5247683:/var/www/admin$ cat /proc/1/cgroup
cat /proc/1/cgroup
12:freezer:/docker/f3d5e524768348feffab6658b953af06f8cce5141d605b1d2004845d2230653e
11:blkio:/docker/f3d5e524768348feffab6658b953af06f8cce5141d605b1d2004845d2230653e
10:hugetlb:/docker/f3d5e524768348feffab6658b953af06f8cce5141d605b1d2004845d2230653e
9:net_cls,net_prio:/docker/f3d5e524768348feffab6658b953af06f8cce5141d605b1d2004845d2230653e
8:devices:/docker/f3d5e524768348feffab6658b953af06f8cce5141d605b1d2004845d2230653e
7:cpu,cpuacct:/docker/f3d5e524768348feffab6658b953af06f8cce5141d605b1d2004845d2230653e
6:rdma:/
5:perf_event:/docker/f3d5e524768348feffab6658b953af06f8cce5141d605b1d2004845d2230653e
4:cpuset:/docker/f3d5e524768348feffab6658b953af06f8cce5141d605b1d2004845d2230653e
3:pids:/docker/f3d5e524768348feffab6658b953af06f8cce5141d605b1d2004845d2230653e
2:memory:/docker/f3d5e524768348feffab6658b953af06f8cce5141d605b1d2004845d2230653e
1:name=systemd:/docker/f3d5e524768348feffab6658b953af06f8cce5141d605b1d2004845d2230653e
0::/system.slice/containerd.service

Podemos verificar o endereço ip do conteiner

O endereço IP atual é 192.168.100.100. O gateway do contêiner pode ser determinado com arp -a.

Agora vamos verificar se existe alguma porta aberta neste container

Aqui, vemos que o gateway possui 4 portas abertas:

  • Porta 22 – SSH

  • Porta 80 e Porta 8080 – servidores web

  • Porta 3306 – SQL

Qual é o gateway padrão para o contêiner Docker?

192.168.100.1

Qual é a porta web alta aberta no gateway do contêiner?

8080

Qual é a porta baixa do banco de dados aberta no gateway do contêiner?

3306

Task 17

No /var/www/wordpress/diretório, encontramos um arquivo chamado wp-config.php. Este arquivo contém credenciais do banco de dados. No entanto, DB_HOSTrefere-se a localhost, que não é nosso alvo. Portanto, essas provavelmente não são as credenciais que desejamos. Ainda os manteremos em mente.

A seguir, no /var/www/admindiretório, existe um arquivo chamado db_connect.php. Este arquivo contém exatamente o que estávamos procurando! Credenciais de banco de dados para o DB_SRB 192.168.100.1!

Agora podemos utilizar as credenciais obtidas para nos conectarmos ao servidor SQL em 192.168.100.1

Isso nos dá acesso total ao banco de dados! Agora podemos pesquisar dados confidenciais. O mais interessante para nós seriam algumas credenciais que poderiam ser usadas para acesso SSH ao gateway.

Qual é o endereço do servidor do banco de dados remoto?

192.168.100.1

Qual é a senha do banco de dados remoto?

!123SecureAdminDashboard321!

Qual é o nome de usuário do banco de dados remoto?

admin

Qual é o nome do banco de dados remoto?

DashboardDB

Qual nome de usuário pode ser encontrado no próprio banco de dados?

gurag

Exploração do SQL - Task 18

Vamos injetar um código PHP para obter execução de comando.

Com qual usuário o banco de dados está sendo executado?

www-data

Task 19

Então, vamos estabelecer um shell reverso. Portanto, como pode ser visto na captura de tela abaixo, primeiro criamos uma carga útil de shell reverso. Em seguida, hospedamos essa carga em um arquivo em um servidor HTTP.

Agora podemos iniciar um ouvinte usando Netcat ou Metasploit para capturar seu shell reverso depois de executado.

  • nc -lvnp 4444

Pode usar o RCE para obter um shell na máquina do alvo. Comando usado:

E com obtemos o shell reverso em nossa máquina

Last updated