Técnicas Generales
Determinar S.O. de una maquina
Para determinar el S.O. de una maquina tendremos que fijarnos en el numero de TTL
cuando se hace un ping
...
Con esto enviaremos un paquete a la maquina victima y sabremos si responde con el mismo paquete, por lo que sabremos que nos hace ping
y que podriamos interactuar con la misma...
Con eso podremos ver de manera mas detallada el proceso que hace el paquete desde nuestra IP
hasta la suya...
De las dos manera podremos ver la opcion donde pone ttl=
el numero que ponga ahi podremos determinal si es una maquina Linux
o Windows
ya que se diferencian con que la de Linux
tiene un ttl
de hasta 64
y las de Windows
tienen un ttl
de hasta 128
y para automatizar todo esto con utilizar el siguiente script en python
nos lo dira directamente...
NMAP
Para hacer un nmap
mas rapido que el tipico...
Haremos lo siguiente ya que con este comando que se mostrara sera mucho mas rapido y sigiloso...
Con esto lo que hacemos es que nos escanee todos los puertos -p-
, solo nos muestre los abiertos --open
, lo haga por TCP
y de forma sigilosa -sS
, que escane 5000
puertos por segundo --min-rate 5000
, que nos muestre un triple verbose por lo que nos vaya mostrando los puertos que vaya encontrando con todas estas caracteristicas en vez de tener que esperar hasta que termine -vvv
, para que no nos aplique resolucion DNS
-n
, para desactivar la fase de descubrimiento de host y que sea mas rapido el proceso -Pn
y para que toda esta informacion nos la guarde en un archivo de texto -oG <FILE_NAME>
...
El formato con el que se exporta no es el mas bonito y para copiar solo los puertos que se muestran en el archivo de texto que se creo con nmap
de forma rapida para posteriormente hacer una busqueda mas detallada de ellos, utilizaremos un script...
Ahora tendiendo los puertos copiados haremos un escaneo mas exhaustivo y generando un archivo con el contenido del mismo con el siguiente comando...
Si queremos utilizar un script con nmap
de fuerza bruta para que vaya probando diversas rutas y que nos muestre solo las del estado codigo 200 OK
seria de la siguiente manera...
python3 + cat
Si quieres ver un archivo con colores sin necesidad de utilizar el editor de texto, haciendolo con el binario cat
+ python3
se podria hacer de la siguiente manera...
Y nos metera dentro del python3
, seguidamente...
Por ejemplo...
Busqueda de vulnerabilidades en el reconocimiento
Cuando el nmap
te reporta los detalles de algunas versiones como el ssh
, ftp
, etc... Se pueden buscar de forma rapida si tienen alguna vulnerabilidad en la siguiente URL
...
URL = https://launchpad.net/
Y tendrias que poner algo parecido a lo siguiente, de ver esto...
A poner esto...
Dominios de IP
Para saber si una IP
tiene un dominio en concreto podremos hacer lo siguiente...
whatweb
Para saber que tecnologias, gestores de contenidos, versiones de cada uno de ellos, etc... que estan corriendo detras de una web seria de la siguiente manera...
Con esto nos mostrara la informacion dicha anteriormente...
Subdominios
En vez de utilizar fuerza bruta y ahorarrtelo se puede utilizar otra tecnica con el siguiente comando...
Y con eso nos podria descubrir subdominios interesantes y si a parte tenemos un dominio a parte de nuestra IP
...
Tambien podriamos mirar otras interesantes...
Wfuzz
Tambien podemos utilizar la herramienta wfuzz
para poder descubrir subdominios
a fuerza bruta, si en primer lugar ponemos el siguiente comando...
Lo que nos va hacer es que va a probar todas las palabras donde se encuentra la palabra FUZZ
con los nombres del wordlist
indicado, devolviendonos un codigo 200 OK
, pero si todas las palabras son un codigo 200 OK
y lo queremos filtrar por los characters
que es como se suele hacer de primeras veremos que todas las respuestas que nos esta dando tienen unos determinados characters
, por lo que pondremos un parametro extra para que nos oculte ese numero de characters
y solo nos muestre el diferente que seria el correcto...
Donde pone <CHARACTERS_NUMBER>
tendremos que cambiarlo por los characters
que queremos que no nos muestre...
De la misma forma si sabemos que tiene que ir una palabra por delante del subdirectorio
la colocaremos antes con un .
de FUZZ
, todo esto se puede ir ajustando conforme a las necesidades de cada uno, ya que donde este la palabra FUZZ
es donde pondra la fuerza bruta de las palabras del diccionario...
Si por ejemplo quieres ocultar los characters
que se repiten todo el rato dejando asi solo los distintos, haremos lo siguiente...
Crear diccionario a-z
Para crear un diccionario de la a-z podremos automatizarlos todo con el siguiente comando...
Info:
Y si lo queremos pasar a un archivo de texto...
Local File Inclusion (LFI)
Esta tecnica se utiliza para poder leer o descubrir archivos delicados ya sea el contenido de una pagina .php
, el /etc/passwd
, etc...
Hay varios Bypasses
que se pueden utilizar si estuvieran sanitizados, en los siguientes comandos se muestra la estructura de lo que podria ser un LFI
y las tecnicas en cada caso que se deberian de hacer...
Para mas informacion proporciono la siguiente URL
...
URL = https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/File%20Inclusion/README.md#local-file-inclusion
Estructura de la que puede dar pie a que sea un (LFI)
Tecnica sin sanitizar nada
Si funciona te mostraria el archivo del passwd
de la maquina victima ya sea mediante codigo interno inspeccionandolo o en la propia pagina web...
Tecnica añadiendo un
Null Byte
⚠️ En versiones de PHP
por debajo de 5.3.4
se puede implementar el null byte
...
Tecnica de doble codificacion
Tecnica de codificado UTF-8
Tecnica de trucos para saltar los filtros puestos
Bypass
La mas utilizada es la siguiente...
Esto se hace por si tiene algun filtro que cuando detecta ../
lo pone vacio, por lo que si hacemos...
Ya que eliminara los ..
y la /
...
Remote File Inclusion (RFI)
Tecnica sin filtros
Se utiliza para descargarte una archivo de tu maquina host
e inyectar un payload
...
Tecnica con
Null Byte
Tecnica con doble codificacion
LFI / RFI usando wrappers
Tecnica
Wrapper php://filter
Utilizando la llamada de php
para ejecutar lo que le pongamos, podremos hacer lo siguiente...
El mas utilizado es el siguiente...
Aqui lo que estamos haciendo es que nos muestre de forma codificada en Base64
el contenido del index.php
en este caso para que al decodificarlo veamos su contenido y asi podremos ver las funciones de php
que se utiliza, a parte se puede utilizar con home
, user
, etc... Dependiendo del caso...
Tecnica para automatizar todo esto
Para automatizar todo lo anterior podemos utilizar un script que te genera lo que tienes que indtroducir en la URL
en el apartado despues del =
...
URL_Script = https://github.com/synacktiv/php_filter_chains_oracle_exploit/blob/main/filters_chain_oracle_exploit.py
Si queremos por ejemplo crear un parametro llamado cmd
que ejecute cualquier comando que le pongamos, seria de la siguiente forma...
Copiamos eso y lo metemos despues del igual de la siguiente manera...
smtp (25)
Si tenemos este puerto abierto y tenemos sospechas de que puede existir un usuario en la maquina podremos comprobarlo de la siguiente manera...
Si pones eso y te devuelve lo siguiente 252 2.0.0 <USERNAME>
significa que existe, pero si te devuelve algo parecido como Denied o Refused
significa que la IP
esta mal o que no existe...
Tambien podemos utilizar una herramienta que te automatiza todo esto para descubrir usuarios de la siguiente manera...
Con esto lo que hara es verificar del diccionario que le hemos pasado todas las palabras y nos mostrara las que coincidan sabiendo que existe ese usuario, generalmente se utiliza el siguiente diccionario llamado...
Descubrir directorios
A parte de Gobuster
tambien podemos utilizar una herramienta bastante mas potente llamada wfuzz
...
Con el -c
estamos añadiendo color a la informacion que adquiramos, con --hc=404
lo que hacemos es ocultar los codigos 404
ya que no nos interesan por que significa que no existen los directorios, con el -t 200
lo que hacemos es realizar este escaneo con 200
hilos por lo que ira mas rapidos, como si hicieramos 200
tareas a la vez cada segundo...
Tambien podemos buscar por extensiones, en concreto con especificat haciendo lo siguiente...
EJEMPLO
Y en este caso te buscara a fuerza bruta los archivos que contengan .php
...
Crear 2 o mas directorios a la vez con mkdir
mkdir
Entendiendo que los directorios /home/user/
existen pero los siguientes no, lo que hara sera crear los directorios que detecte que no exsiste...
De esta manera se habrian creado 2 directorios a la vez llamados /example/example2
...
Curl
Una de los principios basicos para utilizar la herramienta curl
es cuando quieres hacer una peticion a una pagina web de manera que te lo muestre en terminal el contenido de la misma de forma simple, pero a veces se ve muy mal, por lo que utilizaremos el siguiente comando para que se vea mucho mejor...
Con esto lo que haremos sera solicitar la peticion a esa IP
y que nos la muestre en terminal su contenido a la vez de que nos lo muestre en formato html
y con el color propio del lenguaje de html
...
Si por ejemplo nos interesa mas ver lo que hay entre ""
lo que haremos sera filtrar mediante el siguiente comando (Esto lo hacemos ya que normalmente los css
,js
, etc... estan entre ""
)
Y si queremos a parte filtrar todo eso por un nombre que nos interese buscar...
Tambien para que nos muestre las que no se repitan...
Y esto nos mostrara en terminal el contenido filtrado de la pagina acorde a los que estemos buscando...
Generalmente en un js
viene bien mirar ya que podemos encontrar en el propio codigo subdominios
o URL's
interesantes, por lo que si queremos filtrar alguna posible ruta distinta a la conocida por algun js
encontrado haremos lo siguiente...
Con esto solo te aparecera su contenido, pero si filtramos por lo que dije anteriormente...
EJEMPLO
o
Y si por ejemplo queremos filtrar por el contenido entre ""
como hicimos anteriormente ya que puede ser contenido sensible y a parte por el comienzo de http
, tambien seguido de que solo te aparezcan los que no esten repetidos, seria de la siguiente forma...
Grep
Si nos encontramos dentro de una maquina y queremos filtrar en algunos archivos de configuracion ya sea de js
, php
, etc.. alguna palabra que contenga password
para poder descubrir alguna password
podremos hacer lo siguiente...
Port Forwarding
Si en una de las maquinas encontramos algun puerto 8000
de forma interna con un Lavel v8
u otra version que pueda ser explotable, podemos hacer esta tecnica con lagunos repositorios de GitHub o para algun otro puerto que queramos transladar a nuestro Host
para operar desde ahi ya que sirve para lo mencionado anteriormente (Esta tecnica sirve para transladar algun puerto o depende de lo que quieras hacer a tu Host
para operar desde ahi mas facilmente)
URL = https://github.com/jpillora/chisel
Utilizaremos la herramienta chisel
que es la mas utilizada para este tipo de tecnicas y sirve para abrirnos una especie de servidor para que podamos interactuar desde nuestro Host
como si fuera una Reverse Shell
haciendo una especie de tunel
hacia tu host
...
Una vez clonado en tu maquina host
hacemos lo siguiente para montarlo...
Con el siguiente comando veremos lo que pesa la herramienta chisel
...
Por lo que abrimos un servidor de python3
para pasarnos el chisel
a nuestra maquina victima...
Maquina victima
Ya ahora para pasarnos el puerto que queremos por ejemplo el puerto 8000
a nuestra maquina Host
haremos lo siguiente...
Maquina Host
Donde pone server
es el nombre que le quieras dar a tu "Servidor" y despues de -p
ponemos el puerto al que queremos abrir el server por ejemplo el 1234
...
Y con eso ya estaria montado el servidor y abierto...
Maquina victima
Adaptandolo a nuestro ejemplo quedaria de la siguiente manera...
Lo que estamos haciendo aqui es conectarnos desde la maquina victima de tipo cliente
a nuestra IP
de la maquina Host
donde tenemos el servidor corriendo en el puerto 1234
de manera que el parametro R:
significa que nos estamos pasando en forma de tunel el puerto 8000
de la maquina victima con la IP
del localhost
a nuestro puerto 8000
de la maquina Host
, por lo que una vez echo esto si nos vamos a nuestra maquina Host
y buscamos por el puerto 8000
en este caso pertenece a una pagina web...
Nos mostrara el contenido del puerto 8000
que contiene la maquina victima...
Por lo que si tiene alguna vulnerabilidad podremos explotarla desde nuestro Host
...
EJEMPLO
Si esta pagina tiene un CMS
llamado Laravel v8
como ya dije anteriormente puede ser ecplotado por un exploit de GitHub, ya que lo esta ejecutando root
desde la maquina victima...
URL = https://github.com/nth347/CVE-2021-3129_exploit
Si esto nos lo clonamos en nuestro Host
y lo explotamos desde nuestro Host
lo estaremos haciendo como si fuera en la maquina victima y como lo esta ejecutando root
podremos ser root
ya que todo lo que toquemos en ese puerto transformado en un tunel se ejecutara en la maquina victima...
Con el ifconfig
veremos la IP
de la maquina victima con esto ya confirmamos que se esta ejecutando desde la maquina victima...
Y si todo funciona veremos que es root
el que lo esta ejecutando, por lo que haremos una Reverse Shell
con curl
...
Crearemos el archivo index.html
...
Guardamos el archivo y ahora lo ejecutaremos desde curl
con el exploit el cual nos deja ejecutar comandos...
Donde tengamos el archivo abrimos un servidor de python3
de la siguiente manera...
Una vez hecho eso, estaremos a la escucha...
Y por ultimo lo ejecutaremos con curl
de la siguiente forma mediante el exploit...
Y con esto ya tendriamos la shell autenticada como root
ya que lo esta ejecutando el usuario root
todo esto y como si se estuviera ejecutando desde la maquina victima...
Squid Proxy
Si alguna vez vemos un puerto...
Nos da una pista de que podremos conectarnos a ese proxy mediante curl
enviando una peticion, pero tiene que ser de forma autenticada, por lo que tendremos que conseguir las credenciales...
Podemos probar a intentar conectarnos de la siguiente manera...
Con esto lo que estamos haciendo es intentar conectarnos a esa IP
de la maquina victima con el puerto en el que esta el Squid proxy
a nuestro puerto 80
por que si no le especificamos un puerto al 127.0.0.1
se redirige automaticamente al puerto 80
, pero sin credenciales pondra un acceso denegado
...
Pero si queremos conectarnos teniendo una credenciales haremos lo siguiente...
Y si las credenciales fueron las correctas, podremos ver un Welcome
...
Gobuster con proxy
Por lo que ya podremos listar directorios de esa URL
pasando por un proxy
autenticado...
Si por ejemplo diera erro el proxy
habria que URL Encodearlo
sobre todo los signos raros o signos sin mas, por ejemplo (><^
) etc...
Esto lo podemos ver con el comando...
Y llendote al simbolo que quieres cambiar y siempre en este caso fijandote en la columna de hexadecimal
poniendo delante un %
Por ejemplo (> = %3E
)
rpcbind
Pero si por ejemplo tenemos un puerto 24007
abierto o que se llame rpcbind
lo mas seguro es que se pueda utilizar la herramienta Gluster
para poder inspeccionar lo que hay en ese puerto o lo que contiene...
Por lo que nos lo instalaremos en nuestro equipo...
Gluster
Una vez instalado mirando la ayuda de la propia herramienta con...
Podremos ver un parametro en concreto que sirve para listar los archivos de la IP
y puerto que especifiquemos y que se pueda, en este caso como en este puerto se puede aprovecharemos eso...
Con esto si funciona lo que hace es listarte los volumenes que hay en esa IP
...
EJEMPLO
Pongamos que hay 2 volumenes y que solo uno de ellos se puede montar en nuestro host
, aprovecharemos el que se pueda montar para montarlo en nuestro host
...
Con esto lo que estamos haciendo es montar el volumen que hemos encontrado a nuestra carpeta de /mnt
dentro del directorio que queramos o que tengamos creado para ello, por ejemplo...
Una vez que tengamos montado todo ese volumen en nuestra carpeta elegida veremos que hay...
Imaginemos que hay una base de datos de mysql
dentro de ese volumen montado, comprometiendo asi a cualquier usuario y contraseña...
Para poder ver esa base de datos que se encuentra en nuestra carpeta de montado, podremos crear un docker
con la version que utilice ese mysql
, para ello podremos ver la version en el siguiente archivo...
U otro archivo interesante seria...
Crearemos una carpeta que es donde depositemos toda la carpeta de montado para trabajar mas facil...
Ahora lo que vamos hacer es copiarnos todo el contenido de nuestra carpeta de montado con la base de datos de mysql
a nuestra carpeta creada como mysql/
en /tmp
...
(SUPONIENDO QUE
example
CONTIENE TODO EL MONTADO)
Una vez copiado todo a nuestra carpeta mysql
en tmp
, haremos lo siguiente...
Podremos crear un docker
con la version de mysql
que queremos montar y de la que se esta utilizando en la carpeta que copiamos para dentro del mismo poder abrir mysql
y poder visualizar el contenido de ese mysql
...
Docker para mysql
Lo que estamos haciendo aqui es montar todo lo que hay en la carpeta /tmp/mysql
que contiene la copia de la montura de la base de datos de mysql
a la tura donde se encuentra por defecto los archivos de mysql
indicandole despues del -d
el nombre de la base de datos que por defecto es mariadb
y la version que quieres montar o que esta utilizando la base de datos que queremos visualizar...
EJEMPLO
Pero el problema de esto es que cuando nos qureamos meter en la interfaz de mysql
saltara un error tipico de este tipo de casos, esto se soluciona haciendo lo siguiente...
Dira algo como que falta un plugin, esto se arregla insertando ese plugin de forma manual antes de montar el docker
, crearemos el siguiente archivo en /tmp
...
Contenido:
Una vez guardado crearemos el docker
con ese plugin que creamos llevandolo a la ruta donde tiene que estar...
Una vez creado el docker
con ese plugin ya no puede dar ningun problema, por lo que nos metemos dentro diretamente en la interfaz de mysql
...
Una vez hecho esto ya estariamos dentro de mysql
dentro del docker
...
Openssl brute force
Si en algun momento encuentras un archivo con alguna extension rara por ejemplo .enc
o .decrypt
etc... Y sobre todo si hacemos lo siguiente...
Info:
Si vemos alguna vez ese tipo de mensaje quiere decir que el contenido del archivo esta cifrado con una contraseña que tienes que saber para que pueda ser legible...
Te pedira la contraseña para desencriptarla y eso suponiendo que la codificacion es en SHA-256
, pero para ello hay herramientas que te automatizan todo esto...
URL = https://github.com/HrushikeshK/openssl-bruteforce/tree/master
URL = https://github.com/glv2/bruteforce-salted-openssl (En vez de descargartelo desde el repositorio recomiendo instalartelo como herramienta...)
Una de las 2 sirve...
Sin embargo para encriptar algun archivo que contenga algo, se podra hacer de la siguiente forma...
Y te pedira una contraseña que sera con la que podras desencriptarlo...
Uso de la herramienta openssl-bruteforce de la primera URL
Comandos S.O. Linux
Para borrar los saltos de lineas de algun archivo se podra hacer de la siguiente manera...
Y con eso lo que hacemos es borrar todos los saltos de lienas de cualquier archivo que queramos y especifiquemos...
Si quieres copiarte algun texto desde terminal sin necesidad del raton en la clipboard
se hara de la siguiente forma...
Y cuando se haga Ctrl+V
se pegara ese texto...
Y para dejarlo todo en una misma linea se podra hacer de la siguiente manera...
Para poder ver el codigo de estado de un archivo anterior representandolo como 1
y como 0
, siendo el 1
(ERROR) y el 0
(EXITOSO)...
En un archivo /etc/passwd
para de un comando limpiar lo de despues de los :
y que te muestre solo los usuarios, seria de la siguiente forma...
H2 Console (Database)
Para explotar algun puerto con ese CMS corriendo en el, seguir el siguiente video...
URL = https://www.youtube.com/watch?v=qiCozh2m0yE&ab_channel=S4viOnLive%28BackupDirectosdeTwitch%29
Minuto (1:35:00) Mas o menos
Basicamente si te pide insertar un comando para ejecutarlo y el propietario del que lo esta ejecutando ese CMS sea root
se podra hacer lo siguiente...
Buscar por Google
'Abuse H2 Database' y en la siguiente URL
...
URL = https://mthbernardes.github.io/rce/2018/03/14/abusing-h2-database-alias.html
Por lo que si haces lo siguiente en el recuadro de ejecutar comandos...
Con eso se podra ver el id
del usuario que lo esta ejecutando y para poder escalar privilegios si lo esta ejecutando root
y con otro usuario estas dentro de la maquina, se podra hacer lo siguiente...
Y con el otro usuario hacer...
Y ya serias root
...
Exportar puerto con ssh a tu host
Si en la maquina victima hay un puerto web que quieres visualizar en un navegador y tienes las credenciales para conectarte por ssh
, podremos pasar ese puerto de la maquina victima a un puerto nuestro del host
para poderlo visualizar en nuestro host
con el contenido de la maquina victima...
EJEMPLO
Se ingresaria la contraseña del usuario y te meteria dentro del ssh
, pero si ahora nos vamos a visualizar desde el host
ese puerto con la siguiente URL
...
Te visualizara la pagina que se este corriendo en ese puerto de la maquina victima...
Archivo XML para verlo en puerto 80 localhost
Si en un escaneo de puertos te exportas tu archivo XML
a un fichero con los puertos y todo eso, lo puedo exportar a un archivo index.html
para verlo de mejor manera todo ello, y se haria con las siguiente herramientas...
Para exportar un archivo de un escaneo de puerto a un archivo XML
haremos lo siguiente...
Utilidad...
Habilitamos nuestro servicio apache para verlo en la siguiente URL
...
Y ya lo podriamos visualizar...
Y para parar el servicio...
smb Windows
Para poder chequear un smb
o sacarle algo de informacion podemos utilizar una herramienta...
Con esta otra herramienta tambien puede escanear un smb
...
Escucha conseguir credenciales Gestor de contenido
Hay algunas paginas tipicas en las que se pueden conseguir o autenticar algunas credenciales cambiando algunos parametros estando a la escucha...
Si por ejemplo tenemos una web en la que podemos tocar el dominio al que se conecta poniendo nosotros nuestra IP
y con las credenciales ya puestas a parte de mostrando el puerto a que se esta conectando en vez de llegarle la peticion al servidor llegaria a la IP
que nosotros pusimos estando a la escucha, por lo que la contraseña seria visual para nosotros ya que estaria intentando hacer una comparacion mostrando la contraseña para validarla...
EJEMPLO
Pongamos que tenemos ese panel con las credenciales y donde pone Server Address
lo cambiamos por nuestra IP
y estando a la escucha...
En este caso seria por el puerto 389
...
Y enviamos la solicitud en este caso dandole a Update
nos llegara esa peticion y podremos ver las credenciales...
crackmapexec [Authenticated]
Si tenemos unas credenciales que pueden ser validas las probamos con la siguiente herramienta al puerto de smb
...
Si nos salta con un resultado [+]
y despues las credenciales separadas por :
es que las credenciales son correctas, si no, serian incorrectas...
Para comprobar si definitivamente nos podemos conectar a la maquina con esas credenciales, probaremos el siguiente comando, que es solamente sustituyendo el parametro smb
por el de winrm
...
Si el resultado a parte de lo anteriormente dicho sale a la derecha de las credenciales el siguiente nombre de esta manera...
Significa que ya nos podremos conectar por evil-winrm
...
Ya que despues para autenticarnos utilizariamos la herramienta evil-winrm
que actua como un ssh
en linux...
evil-winrm
Si la herramienta no esta instalada...
Teniendo unas credenciales para conectarnos mediante esta herramienta, haremos lo siguiente...
Si todo esto ha funcionado, tendriamos una shell interactiva dentro del servidor y se habria vulnerado (Ya digo es como un ssh
de linux, pero en Windows
)
Comandos basicos en S.O. Windows
Para poder visualizar los archivos y listarlos utilizaremos...
Actua como un ls
en Linux...
Para poder leer archivos de texto en Windows
utilizaremos...
Como si fuera un cat
en Linux...
Para poder ver nuestros privilegios dentro de la maquina, seria de la siguiente manera...
Y el objetivo es ser Administradores
que es como ser root
en Linux...
Para ver la informacion del usuario que tenemos de manera actual, en que grupos y cosas asi esta metido seria de la siguiente manera...
Para descargarte un archivo a tu host
se podria hacer de la siguiente manera...
Las rutas tienen que ser de esa manera inidicando el disco y con las barras inversas...
Para ver los servicios que hay activos, se mira de la siguiente manera...
Active Directory Group Server Operators
Server Operators
Estando dentro de este grupo y pudiendo para y correr servicios del sistema se puede escalar privilegios de la siguiente manera...
Primero veremos en nuestro host
donde esta el nc.exe
para que sirva en Windows
....
Info:
Nos copiamos ese .exe
a nuestro directorio actual para pasarlo a la maquina Windows
...
Hacemos un pwd
para ver en la ruta actual en la que estamos y en la que hemos llevado el archivo, en mi caso...
Por lo que en la maquina Windows
haremos lo siguiente para pasarnoslo...
Una vez hecho esto ya estaria el nc.exe
ya estaria en la maquina Windows
...
Ahora lo que haremos sera arrancar un servicio ya que estamos en el grupo para poder hacerlo, de la siguiente manera haciendo una reverse shell y como lo esta ejecutando por asi decirlo el administrador
conseguiriamos una shell como el mismo...
Con esto lo que estamos haciendo es crear un servicio de que cuando se inicie cierto servicio arranque el nc.exe
que se encuentra en ese PATH
ejecutando el mismo una Reverse Shell
con los siguientes paraemtros...
Ahora nos pondremos a la escucha...
Pero si al crear eso nos pone Access Denied
manipularemos un servicio que ya este creado de la siguiente manera...
Lo miraremos con services
los servicios que estan abiertos y eligiendo uno de ellos le cambiaremos la configuracion de la siguiente manera...
EJEMPLO
A lo mejor no te deja con todos los servicios pero es ir probando hasta que te deje cambiarle la configuracion alguno de ellos...
Si encontramos uno que te deje cambiar la configuracion, haremos lo siguiente...
Y ahora estaremos a la escucha...
Ahora en la maquina Windows
iniciamos el servicio para que se inicie la Reverse Shell
...
Y con esto ya habriamos conseguido una Reverse Shell
como Administrador
en la maquina Windows
...
Decrypt Firefox
Si en alguna vez se encuentra una carpeta en una maquina llamado algo como .mozilla/firefox
y dentro de esas ruta puede haber una via potencial para desencriptar coockies
de inicios de sesion...
URL = https://github.com/unode/firefox_decrypt
Si nos encontramos una carpeta que contiene cosas de firefox
nos las podemos pasar a neustro host
utilizando el siguiente comando...
Para descargarte todo el contenido de esa IP
y de ese puerto...
Y para utilizar la herramienta anterior una vez que tengamos nuestra carpeta entera de .mozilla/firefox/
haremos lo siguiente con la herramienta...
Esto te pedira una contraseña si estuviera protegida la informacion, pero si no te daria las credenciales directamente encontradas...
Serializar en URL
con PHP
sabiendo el codigo [Ataque de Serealizacion y Deserealizacion]
URL
con PHP
sabiendo el codigo [Ataque de Serealizacion y Deserealizacion]Si por ejemplo estamos en una maquina y nos muestran el codigo de algun backup
de algun .php
de alguna pagina, podremos ver el codigo de php
por dentro por lo que estudiaremos como funciona y de ahi crearemos nosotros un .php
para poder crear cosas dentro de la URL
con los parametros que veamos o poder aprovechar la informacion para inyectar cosas...
Pero en este caso imaginamos que obtuvimos de una pagina un .php
con su codigo y sabemos como funciona, vemos que se esta tramitando una peticion por parametro llamado example=
en el archivo test.php
y a lo ultimo se esta serializando
la informacion en la URL
, por lo que tendremos que crear un .php
que nos genere el contenido de un parametro cmd=
, craendo una archivo .php
en el que podamos ejecutar cualquier comando de forma que nos lo serialice para que se lo trague la URL
en este caso...
Con este .php
cuando lo ejecutemos...
Nos mostrara lo que tendremos que meter de forma serializada en el parametro que sabemos que esta creado llamado example=
para crear un archivo llamado payload.php
en la base de datos que sabemos que existe por el backup
creando en ese archivo el parametro cmd=
pudiendo ejecutar cualquier comando del sistema y por ultimo nos lo serializa para que funcione todo esto, aprovechando las variables publicas que ya estan creadas...
Esto lo que hara sera ejecutar lo que ya dije anteriormente desde la herramienta curl
...
Ahora si nos vamos a la misma URL
pero en vez de pone test.php
ponemos nuestro archivo creado llamado payload.php
y poniendo el parametro creado por ese archivo cmd=
y un comando deberia de funcionar...
URL = https://opsecx.com/index.php/2017/02/08/exploiting-node-js-deserialization-bug-for-remote-code-execution/
Esto se puede aprovechar mirando el archivo server.js
si estuviera disponible, una vez sabiendo esas informacion se puede aprovechar un bug
con la URL
anterior en la Cookie de sesion
para ejecutar comandos de forma libre, ya que si se deserializa, se puede hacer lo siguiente...
Ajustandolo a tus necesidades, eso se podria URL Encodear
y ponerlo en la Cookie
para que cuando recargues la pagina se ejecute un comando en el espacio de ls /
...
sshpass
Si queremos conectarnos por ssh
directamente proporcionando la contraseña automaticamente, seria de la siguiente forma...
Capturar peticion de un .sh
para inyectar codigo nuestro [Reconditioning the Abuser]
.sh
para inyectar codigo nuestro [Reconditioning the Abuser]Si por ejemplo tenemos un .sh
que podemos ejecutar con privilegios de super usuario o no, da igual, pero si tenemos un ejecutable que genera de forma temporal un archivo con nombres temporales aleatorios, cunado lo ejecutemos podemos por otro lado estar de forma bruta generando muchos archivos temporales con nombres aleatorios y cuando coincidan de cuando yo lo ejecute que se escriba lo que yo quiero en vez de de lo que esta programado el programa, haciendo asi una captura de la peticion de ese ejecutable y escribiendo lo que yo quiera...
EJEMPLO
Imaginemos que se esta escribiendo una id_rsa.pub
de root
al archivo authorized_keys
por lo que si capturamos la peticion cuando yo ejecute ese .sh
y escribimos nuestra id_rsa.pub
de nuestro host
en ese archivo de root
podremos conectarnos por ssh
como root
con nuestra id_rsa
privada...
La parte de /tmp/ssh-*
se hace por que en el archivo se supone que genera en /tmp
el archivo llamado ssh-XXXXX
y las X
significan que se sustituyen por palabras aleatorias, por lo que cuando hacemos /tmp/ssh-*
estamos haciendo que pruebe todas las combinaciones posibles de esas X
que se estan sustituyendo cuando ejecuto el .sh
...
Si ejecutamos esto estara como a la escucha probando muchisimos nombres temporales hasta que coincida uno cuando yo ejecute el archivo .sh
, por lo que una vez que este esto probando las combinaciones, haremos lo siguiente...
Y si todo salio bien y capturo a tiempo el nombre del ejecutable habria inyectado nuestra id_rsa.pub
por lo que probaremos a conectarnos como root
...
Y sin proporcionar contraseña ya seriamos root
si todo funciono...
FTP
Dentro de ftp
se puede desactivar un modo para que no te este preguntando por cada archivo que te descargues y a la vez otro comando para descargarte todo a la vez...
Y con eso desactivar las preguntas y despues te descargas todo...
Poetry
Es similar a hydra
o medussa
, esta herramienta lo que hace es verificar los usuarios y contraseñas que le pases mediante el puerto del ssh
por ejemplo, smb
, ftp
, etc... Se haria de la siguiente manera...
En tal caso de que se quisiera probar una contraseña con diversos usuarios, seria...
Si quieres que continue para que siga probando aunque de un Success
...
Si quieres probar contraseñas frente a un usuario...
Hacking Wifi [Herramienta]
Para el hacking wifi hay una herramienta muy utilizada llamada Reaver
o tambien wpspingenerator
de wifislax
...
Para hacer auditorias wifi se utilizaria la herramienta wifimosys
...
Por lo que Reaver
se utilizaria de la siguiente manera...
EJEMPLO
Supongamos que estamos en una maquina que al hacer ifconfig
vemos que hay una red en modo monitor, que se suele asignar el nombre tipico de mon0
dependiendo de cuantas redes haya...
Como esta herramienta solo se puede ejecutar con privilegios de root
como usuario normal no se podria tocar, pero si hacemos...
Para ver las capabilitys
que tiene dicho usuario y vemos que entre ellas esta la siguiente...
Veremos que podremos ejecutar ese binario como si lo estuviera ejecutando root
por decirlo de alguna manera, por lo que lo podremos utilizar para la red que esta en modo monitor u otras posibles redes wifi que empiezan con el termino wlan
...
Con esto podremos ver de forma mas detallada la estructura de redes como esta compuesta e identificar el Punto de Acceso
a la red representado como AP
...
Se veria algo como lo de arriba...
Tambien viendo que el ssid
es OpenWrt
por lo que supongamos que esa red que simula tener un punto de acceso se llama wlan0
...
Identificando de esa red la pssid
que se representa como la MAC
llamada addr
y la red en modo monitor llamada mon0
podremos explotar esto...
Ya que necesitamos la addr
de un tipo que sea AP
(Punto de Acceso) para acceder y despues poniendo la red que esta en modo monitor para capturarlo por asi decirlo con la herramienta dicha anteriormente...
Una vez hecho esto te mostrara el parametro WPS PIN
con el PIN
de la misma red y el parametro WPA PSK
con la contraseña en texto plano...
Por lo que habria funcionado y tendramos la contraseña de algun posible usuario o de alguna posible red wifi...
NoSQL Injection
Esta tecnica es similar a SQL Injection
pero con la diferencia de que haces peticiones que no tienen que coincidir entre si...
Si por ejemplo en SQL Injection
se hacia la comparacion logica para que siempre sea cierto ' OR 1=1-- -
de esa manera, en esta tendra que ser al contrario pero en formato JSON
de la siguiente manera...
Si tenemos un panel de login y por lo que sea descubrimos el usuario, pero nos falta la contraseña, podremos hacerlo de la siguiente forma...
Mediante el BurpSuit
capturamos la peticion del login, seguidamente donde pone Username
y Password
los cambiamos de la siguiente manera...
Quedaria de la siguiente manera en BurpSuit
...
Y con esto si funciona estaria Bypasseado
el login haciendo una comparacion logica negativa, ya que estamos diciendo que admin
no es igual a example
por lo que te logea...
Todo esto esta reflejado en la siguiente pagina...
URL = https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/NoSQL%20Injection
Cuando hay un NoSQL Injection
en alguna web o algo parecido por detras siempre suele haber un mongoDB
por lo que si podemos entrar en la maquina y buscar por mongo
si esta activa la base de datos podemos entrar en mongo
poniendo lo siguiente...
O irnos a /tmp
y hacer un volcado de las bases de datos de mongo
haciendo lo siguiente...
Y esto lo que hara sera crear una carpeta llamada dump
con todas las bases de datos que esten dentro de mongo
con su respectiva informacion, para poder ver posibles contraseñas...
Si encontramos un archivo dentro de la carpeta dump
bastante interesante sobre un usuario y una contraseña pero se ve muy mal por que esta en formato .bson
podremos hacer lo siguiente...
Imaginemos que el archivo se llama user.bson
...
Y esto te lo mostrara de manera mas clara toda la informacion...
XXE Injection
URL = https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XXE%20Injection
Supongamos que tenemos una web en la que podemos subir cosas en formato xml
y que la estructura la procesa bien mostrandonos asi el input que nosotros hemos metido, si se fia de cualquier input que le podamos meter, podremos hacer la inyeccion XXE
...
Supongamos que la estructura del xml
es la siguiente...
Y ese input se refleja en la pagina cuando lo vamos a subir, por lo que podremos hacer lo siguiente...
Si es vulnerable a este tipo de inyeccion deberiamos de poder ver el archivo passwd
en el espacio donde estamos poniendo &xxe;
y este nombre puede ser cualquiera que le queramos asignar en la parte de arriba en la zona <!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
donde pone xxe
podemos nombrarlo como queramos por ejemplo...
Si le cambiamos el nombre quedaria de esta manera...
Sacar password de un KeePassXC
Si por ejemplo tenemos un archivo con un .dmp
del volcado de memoria del Keepass
el cual se puede utilizar para abrir Keepass
y con la clave maestra decodificarlo para ver su contenido, pero antes se necesitara esa clave maestra, dependiendo de la version hay una vulnerabilidad en el mismo que permite dumpear la password
desde la memoria del propio archivo del programa teniendo asi un fallo de seguridad...
Los primeros pasaos para dumpear dicha contraseña seria la siguiente...
URL = https://github.com/matro7sh/keepass-dump-masterkey
Con esa herramienta le pasamos el archivo .dmp
para sacar la contraseña...
Esto te mostrara una serie de contraseñas, una vez dentro metiendo la clave maestra proporcionada, supongamos que te encuentras una clave privada pero no de ssh
si no en formato Putty
...
Pasar de formato Putty (PPK) a formato SSH (id_rsa [PEM])
URL = https://tecadmin.net/convert-ppk-to-pem-using-command/
Hay nos explica como convertir una clave privada Putty
a una clave privada id_rsa
...
Y con esto la comversion se habria hecho perfectamente...
Last updated