Iniciamos como siempre observando los puertos abiertos en la maquina.
nmap -sCV -p80,8080172.16.241.216-oN target.txtStarting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-31 15:57 ESTNmap scan report for offensive.thl (172.16.241.216)Host is up (0.00070s latency).PORTSTATESERVICEVERSION80/tcp open http Apache httpd 2.4.62 ((Debian))|_http-generator: WordPress 6.7.1|_http-server-header: Apache/2.4.62 (Debian)|_http-title: rodgar8080/tcp open http Node.js Express framework|_http-title: ErrorMAC Address: 00:0C:29:6E:9D:15 (VMware)
Versiones y servicios que corren para cada uno de los puertos.
Si vamos a la web observamos un servicio simple.
whatweb -v http://offensive.thl/WhatWeb report for http://offensive.thl/Status :200OKTitle : rodgarIP :172.16.241.216Country :RESERVED,ZZSummary : Apache[2.4.62],HTML5, HTTPServer[Debian Linux][Apache/2.4.62 (Debian)], MetaGenerator[WordPress 6.7.1], Script, UncommonHeaders[link], WordPress[6.7.1]Detected Plugins:[ Apache ] The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows NT. The goal ofthis project is to provide a secure, efficient and extensible server that provides HTTP services in sync with the current HTTP standards. Version :2.4.62 (from HTTP Server Header) Google Dorks: (3) Website : http://httpd.apache.org/[ HTML5 ]HTML version 5, detected by the doctype declaration [ HTTPServer ]HTTP server header string. This plugin also attempts to identify the operating system from the server header. OS : Debian Linux String : Apache/2.4.62 (Debian) (from server string)[ MetaGenerator ] This plugin identifies meta generator tags and extracts its value. String : WordPress 6.7.1[ Script ] This plugin detects instances of script HTML elements and returns the script language/type. [ UncommonHeaders ] Uncommon HTTP server headers. The blacklist includes all the standard headers and many non standard but common ones. Interesting but fairly common headers should have their own plugins,eg. x-powered-by, server and x-aspnet-version. Info about headers can be found at www.http-stats.com String :link (from headers)[ WordPress ] WordPress is an opensource blogging system commonly used as a CMS. Version :6.7.1 Aggressive functionavailable (check plugin file or details).GoogleDorks: (1)Website : http://www.wordpress.org/HTTPHeaders:HTTP/1.1 200 OKDate: Tue, 31 Dec 2024 21:01:00 GMTServer: Apache/2.4.62 (Debian)Link: <http://offensive.thl/index.php/wp-json/>; rel="https://api.w.org/"Vary:Accept-EncodingContent-Encoding:gzipContent-Length:8864Connection:closeContent-Type:text/html; charset=UTF-8
Si hacemos un whatweb observamos que hay un CMS wordpress en especifico.
wfuzz -c -t 200--hc=403,404-w /usr/share/wordlists/dirb/common.txt -u 'http://offensive.thl/FUZZ'/usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSLsites. Check Wfuzz's documentation for more information.********************************************************* Wfuzz 3.1.0- The Web Fuzzer *********************************************************Target: http://offensive.thl/FUZZTotal requests:4614=====================================================================ID Response Lines Word Chars Payload =====================================================================000001991: 3019L28W315 Ch "images"000002021: 3010L0W0 Ch "index.php"000002145: 3019L28W319 Ch "javascript"000004485: 3019L28W317 Ch "wp-admin"000004501: 3019L28W320 Ch "wp-includes"000004495: 3019L28W319 Ch "wp-content"000000001: 200213L1261W38827 Ch "http://offensive.thl/"
Si hacemos una enumeracion de sub/directorios pues llegamos a ellos pero el unico que nos muestra contenido es images los demas no tenemos directory listen o directamente un 404.
La imagen ahora vamos a descargarla y haber si hay algo.
Vamos por punto.
Primero intentamos extraer el contenido que haya usando steghide, tiene contraseña.
Asi que usamos esta segunda herramienta llamada stegseek que es para hacer fuerza bruta directamente.
Ultimo punto obtenemos credenciales para extraer el contenido, lo extraemos y tenemos una contraseña que debido al nombre de la imagen es para el panel de autenticacion del wordpress.
Tenemos un usario y una contraseña pero no podemos acceder al panel, vamos a ver el puerto 8080 haber que hay por ahi.
Puerto 8080
wfuzz -c -t 200--hc=403,404-w /usr/share/wordlists/dirb/common.txt -u 'http://offensive.thl:8080/FUZZ'/usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSLsites. Check Wfuzz's documentation for more information.********************************************************* Wfuzz 3.1.0- The Web Fuzzer *********************************************************Target: http://offensive.thl:8080/FUZZTotal requests:4614=====================================================================ID Response Lines Word Chars Payload =====================================================================000001887: 2000L17W203 Ch "Help"000001886: 2000L17W203 Ch "help"000002376: 2000L1W176 Ch "ls"000000777: 5000L3W31 Ch "cat"
Tenemos 4 directorios observaremos el help, que suena a panel de ayuda.
Help nos muestra este panel.
Con el parametro ls, nos dirigimos a la ruta plugins del wordpress que corre para observar que plugins hay y asi observar que nos puede estar impidiendo llegar al panel del wordpress.
WPS Hide Login es un complemento ligero que te permite cambiar de forma fácil y segura la URL de la página del formulario de inicio de sesión a lo que desees.
Esto nos esta bloqueando.
Borramos el plugins con la funcion que tenemos rm. Ahora ya deberiamos poder acceder al panel administrativo del wordpress.
Ya podemos llegar y iniciamos session con las credenciales que tenemos.
Nos enviamos una revshell usando el plugin que hay ahi.
Buscando la forma de escalar privilegios, encontramos un servicio que corre interno en el puerto 5000 puerto que desde fuera no logramos ver pero internamente si.
Vamos a hacer un portfor usando chisel, yo useo chisel.
En estos articulos explico lo que vamos a hacer acontinuacion.
Como punto numero uno nos ponemos como cliente desde nuestra maquina atacante.
Y como segundo nos conectamos como cliente.
Ahora que podemos llegar al puerto observamos este panel donde debemos averigurar la combinacion correcta ya que ya tenemos las credenciales.
Interceptamos la peticion con Burp y ahora nos creamos una lista de posibles pings usando seq.
Ok lo tenemos listo fijado ya.
Este codigo ping es diferente con su codigo de estado a los demas lo probaremos.
Entramos a un panel que lo ejecuta maria.
Nos enviamos una revshell.
Primer punto podemos ejecutar una aplicacion en el directorio de maria, que hace un cat del /etc/shadow donde no me lo muestra todo si no que solo las primeras lineas lo que podria ser un indicativo que se esta usando head para hacerlo.
Y segundo tenemos la flag de user.
Si hacemos un strings para ver las cadenas imprimibles filtrando por head observamos que lo estan empleando dos veces de manera relativa y absoluta para catear las primeras lineas del etc/shadow.
Esto lo podemos deribar a un PATH Hijaking.
Punto uno nuestro directorio actual /home/maria.
Segundo observamos donde inicia el recorrido.
Tercero exportamos el PATH para que el recorrido no inicie por /usr/ si no por /home/maria.