Archives: 2008

Ventajas de usar MySQLi

0

6 August 2008 at 1:02 Filed in:MySQL | PHP

A la hora de realizar aplicaciones PHP/MySQL, normalmente se suele utilizar la librería mysql, cuando existe la librería mysqli, la cual puede ser más eficiente.

    • Prepared statements: a parte de ser más cómodo a la hora de montar nuestras querys, ofrece mucha seguridad contra el SQL injected.

      1. $mysqli = new $stmt = $mysqli->prepare(“select usuario from usuarios where i = ?”);
      2. $stmt->bind_param(‘i’,$id);
      3. $stmt->execute();

      Conexiones seguras: la posibilidad de usar mysqli_ssl_set() permite realizar conexiones seguras indicando detalles del certificado mediante los parámetros.
      Múltiples querys: posibilidad de ejecutar varias querys separadas por punto y coma, en una conexión.
      Interfaz orientado a objetos: esta característica permite al desarrollador ampliar el objeto para añadir nuevas funcionalidades más específicas. Por ejemplo se podrían separar los errores de operación (conexión) a los de desarrollo (querys mal formadas).
  • Fuente: sentidoweb

    Solucionando problema de libreria 32bit en Freebsd 7

    0

    18 July 2008 at 15:19 Filed in:Uncategorized

    Estaba terminando de realizar un trabajo el cual tenía como objetivo realizar un escaneo sobre una dirección IP de mi red. Por lo cual tuve que instalar la utilidad Nessus en uno de los servidores FreeBSD 7 amd64.

    Como no tenia el port, me decidí a bajar la utilidad de su sitio oficia, pero me encontré que esta era para 32bit, igualmente le instale pero al querer ejecutarla obtuve el siguiente mensaje.

    “*ELF interpreter /libexec/ld-elf32.so.1 not found*”  

    Con lo cual tuve que realizar el siguiente procedimiento para poder instalar las librerias que me faltaban:

    1. Monto el cd instalacion

    # mount -t cd9660 /dev/acd0 /mnt/cd/

    2. Instalo las librerias

    # cd /mnt/cd/7.0-RELEASE/lib32

    # ./install.sh

    Ocultando nuestra version de BIND9

    2

    13 July 2008 at 23:36 Filed in:Uncategorized

    Vamos a dejarles un pequeño tips para ocultar nuestra version de la aplicacion BIND9, la cual cumple su funcion como servidor de DNS.

    Ya que en este ultimo mes se puso de moda el ataque "dns poisoning", vamos a tratar de hacerles un poquito mas dificil a los escaner que detecten nuestra version.

    1. Vamos a comprabar que version de BIND9 tenemos corriendo:

    # dig @ns1.localhost version.bind chaos txt

    CODE:
    1. ; <<>> DiG 9.3.4-P1.1 <<>> @ns1.localhost version.bind chaos txt
    2. ; (1 server found)
    3. ;; global options:  printcmd
    4. ;; Got answer:
    5. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31594
    6. ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
    7.  
    8. ;; QUESTION SECTION:
    9. ;version.bind.                  CH      TXT
    10.  
    11. ;; ANSWER SECTION:
    12. version.bind.           0       CH      TXT     "9.4.1-P1"
    13.  
    14. ;; AUTHORITY SECTION:
    15. version.bind.           0       CH      NS      version.bind.
    16.  
    17. ;; Query time: 2 msec
    18. ;; SERVER: 192.168.1.1#53(192.168.1.1)
    19. ;; WHEN: Sun Jul 13 19:24:30 2008

    2. Vamos a editar nuestra configuracion para ocultar la version:

    # vi /etc/bind/named.conf.options

    Donde agregamos:

    version "hola";
    # /etc/init.d/bind9 restart

    Ahora comprobamos nuevamente y vemos que cambio :D
    # dig @ns1.localhost version.bind chaos txt

    CODE:
    1. ; <<>> DiG 9.3.4-P1.1 <<>> @ns1.localhost version.bind chaos txt
    2. ; (1 server found)
    3. ;; global options:  printcmd
    4. ;; Got answer:
    5. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31594
    6. ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
    7.  
    8. ;; QUESTION SECTION:
    9. ;version.bind.                  CH      TXT
    10.  
    11. ;; ANSWER SECTION:
    12. version.bind.           0       CH      TXT     "hola"
    13.  
    14. ;; AUTHORITY SECTION:
    15. version.bind.           0       CH      NS      version.bind.
    16.  
    17. ;; Query time: 2 msec
    18. ;; SERVER: 192.168.1.1#53(192.168.1.1)
    19. ;; WHEN: Sun Jul 13 19:25:32 2008

    Configurando VLAN’s en FreeBSD

    0

    12 July 2008 at 18:13 Filed in:Uncategorized

    Antes de comenzar con el articulo vamos a dar una pequeña deficion de Vlans, la cual vamos a sacar de Wikipedia :D

    Una VLAN (acrónimo de Virtual LAN, ‘red de área local virtual’) es un método de crear redes lógicamente independientes dentro de una misma red física. Varias VLANs pueden coexistir en un único conmutador físico o en una única red física. Son útiles para reducir el dominio de colisión y ayudan en la administración de la red separando segmentos lógicos de una red de área local (como departamentos de una empresa) que no deberían intercambiar datos usando la red local (aunque podrían hacerlo a través de un enrutador).

    Ahora pasemos al proceso de configuracion.

    Debemos activar la placa de red fisica que sera asociada a la VLAN
    ifconfig (interfaz fisica) inet up
    Ejemplo:
    # ifconfig bce1 inet up

    Ahora creamos la vlan
    ifconfig (nombre de la vlan) create
    Ejemplo:
    # ifconfig vlan999 create

    El ultimo paso es configurar una direccion IP a la vlan.
    ifconfig (nombre de la vlan) (direccion ip/mascara de red) vlan (nombre de la vlan) (interfaz)
    Ejemplo:
    # ifconfig vlan999 10.10.10.4/24 vlan999 vlandev bce1

    Ahora ejecutamos el comando ifconfig para ver si hemos creado todo bien:
    # ifconfig

    CODE:
    1. vlan999: flags=8843 metric 0 mtu 1500
    2.  
    3. options=3
    4.  
    5. ether 00:19:b9:j4:04:06
    6.  
    7. inet 10.10.10.4 netmask 0xffffff00 broadcast 10.10.10.255
    8.  
    9. media: Ethernet autoselect (1000baseTX )
    10.  
    11. status: active
    12.  
    13. vlan: 999 parent interface: bce1

    Si queremos que esta configuracion quede guardada luego de reiniciar debemos agregar las siguientes lineas dentro del archivo /etc/rc.conf

    ## Activo la interfaz fisica
    ifconfig_bce1=” inet up”

    ## Creo la VLAN
    cloned_interfaces="vlan999"

    ## Configuro la direccion IP de las VLANs
    ifconfig_vlan999="inet 10.10.10.4/24 vlan 999 vlandev bce1"

    Fallo crítico en el protocolo DNS

    7

    11 July 2008 at 20:45 Filed in:DNS

    Buscando información con los problemas que tengo con speedy desde hace 2 días -esto se debe a que los servidores DNS no funcionan- encontré información bastante importante que puede ayudar a mas de uno. Para el que no esta en el tema, paso a explicar una síntesis. Un servidor DNS esta encargado de "traducir" el nombre que ponemos en la dirección de nuestro navegador por la IP, por ej. si nosotros escribimos www.google.com en la barra de direcciones, esta busca en una base de datos que IPs le corresponde a ese dominio.

    Un personaje llamado Dan Kaminsky descubrió una falla de seguridad muy grave en los protocolos DNS. Aparentemente de esto ya se sabía hace tiempo. Empresas como Debian, Microsoft, Sun, Cisco, etc. estarían sacando y aplicando los parches correspondientes en las próximas horas (eso esperamos).
    Enlace a Kriptopolis con más información detallada sobre este acontecimiento "mundial".

    Mientras tanto pueden chequear en la web del "descubridor" Kaminsky si nuestro ISP tiene los DNS vulnerables, basta con hacer click en el botón que esta a la derecha "Check My DNS".

    Para los usuarios que tenemos speedy hay que agregar los siguientes DNS provisoriamente para poder navegar 208.67.222.222 y 208.67.220.220.
    En mi caso use esos dos, que son de la web OpenDNS.

    Mas información sobre la vulnerabilidad del protocolo y una guía de como cambiar los DNS.
    Taringa!

    Cambios en los comentarios.

    0

    6 July 2008 at 21:06 Filed in:General

    Hicimos unos cambios en los comentarios para el que quiera postear no tenga que registrarse.  De esta manera basta con poner, nombre, mail, sitio web (opcional) y el comentario.

    También estamos realizando otros cambios en el sitio que se van a ver reflejado en poco tiempo.

    Auditar Linux con Lynis

    0

    1 July 2008 at 22:40 Filed in:Uncategorized

    Lynis tiene como objetivo darnos un informe de auditoria sobre nuestro servidor, en forma sensilla y con una vista muy amigable.

    1. Descomprimimos la utlidad:

    # wget http://www.rootkit.nl/files/lynis-1.1.7.tar.gz
    # tar zxfv lynis-1.1.7.tar.gz

    2. Ejecutamos la aplicacion:

    # cd lynis-1.1.7

    # ./lynis --check-all

    Con esto comenzamos la auditora de nuestro sistema, acontinuacion vamos a dar algunos titulos de los analisis:

    [+] Boot and services
    [+] Kernel
    [+] Memory and processes
    [+] Users, Groups and Authentication
    [+] Shells
    [+] File systems
    [+] Ports and packages
    [+] Networking
    [+] Printers and Spools
    [+] Software: e-mail
    [+] Software: firewalls
    [+] Software: webserver
    [+] Databases
    [+] LDAP Services
    [+] Software: PHP
    [+] Software: Malware scanners
    [+] System Tools
    [+] Home directories
    [+] Logging and files
    [+] Banners and identification
    [+] Scheduled tasks
    [+] Accounting
    [+] Time and Synchronization
    [+] Cryptography
    [+] Virtualization
    Veamos una captura de pantalla de la utilidad:

    lynis-screenshot.png

    Aqui vemos el reporte que nos entrego al analizar uno de los equipos del staff:

    k2k.png

    Saludos :D

    TrueCrypt 5 en Debian Etch

    0

    25 June 2008 at 15:34 Filed in:Uncategorized

    Les dejamos un tutorial realizado por la gente de Kriptopolis, donde nos explican como instalar la herramienta de encriptacion truecrypt en debian etch.

    http://www.kriptopolis.org/truecrypt5-debian

    Tres correcciones para WordPress

    0

    24 June 2008 at 14:45 Filed in:Uncategorized

    Los primeros dos parches solucionan un error a la hora de reiniciar la contraseña (por olvido/pérdida) y un fallo en filtro image_send_to_editor.
    La primer alternativa es descargar los 2 archivos y sobrescribir por los que estan en el host.

    La segunda cambiar manualmente las líneas correspondiente en cada archivo.

    1. Editar wp-includes/pluggable.php con el notepad o algún programa similar
    2. Buscar la siguiente cadena:

    function wp_generate_password($length = 12) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()";

    3) Cambiamos por la siguiente cadena:

    function wp_generate_password($length = 12, $special_chars = true) {
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    if ( $special_chars )
    $chars .= '!@#$%^&*()';

    1. Editar wp-login.php (esta en el raíz) con el notepad o algún programa similar
    2. Buscar la siguiente cadena:

    $key = wp_generate_password();

    3. Cambiamos por la siguiente cadena

    $key = wp_generate_password(20, false);

    Y el tercer parche soluciona un bug en los comentarios. El problema reside en que cualquier usuario podía hacerse pasar por el autor del blog. La solución es muy parecida a las otras dos.

    1. Editamos wp-comments-post.php (esta en el raíz) con el notepad o algún programa similar
    2. Buscamos la siguiente cadena:

    $comment_author = trim(strip_tags($_POST['author']));
    $comment_author_email = trim($_POST['email']);
    $comment_author_url = trim($_POST['url']);
    $comment_content = trim($_POST['comment']);

    3. A continuación ponen este código:

    // get list of user (display) names for blog
    global $wpdb;
    $valid_users = (array)$wpdb->get_results("
    SELECT display_name, user_email FROM " . $wpdb->prefix . "users");

    // get ID of logged in user (if there is one)
    global $userdata;
    get_currentuserinfo();
    $logged_in_name = $userdata->ID;
    $logged_in_email = $userdata->user_email;

    // see if the comment author matches an existing author
    $found_match = FALSE;
    foreach ($valid_users as $va) {
    if (trim($va->display_name) != '') {
    if (strtolower($va->display_name) == strtolower($comment_author)) {
    $found_match = TRUE;
    break;
    }
    }
    if (trim($va->user_email) != '') {
    if (strtolower($va->user_email) == strtolower($comment_author_email)) {
    $found_match = TRUE;
    break;
    }
    }
    }

    // if commenter is not logged in, but match was found, block the comment
    if (trim($logged_in_name) == '') {
    if ($found_match == TRUE) {
    wp_die( __('You cannot post using the name or email of a registered author.') );
    }
    }

    Para personalizar el mensaje que le aparece a los que quieren hacerse pasar por los autores del blog editar la siguiente línea

    wp_die( __('You cannot post using the name or email of a registered author.') );

    Fuentes:
    WordPressTrac, Agamum y PuntoGeek

    Desactivar el Metodo HTTP Trace Apache2

    0

    22 June 2008 at 19:42 Filed in:Uncategorized

    Es un metodo de petición HTTP utilizado para la depuración de las entradas de los usuarios.
    En este caso vamos a desactivarlo ya que mediente el se puede ejecutar un ataque web del tipo XST.

    1. Comprobamos el estado del metodo:
    # telnet mywiki 80
    Trying 1.1.1.1...
    Connected to mywiki.
    Escape character is '^]'.
    TRACE / HTTP/1.0
    Host: 1.1.1.1

    HTTP/1.1 200 OK
    Date: Sun, 22 Jun 2008 17:38:08 GMT
    Server: Apache
    Connection: close
    Content-Type: message/http

    Como podemos ver el resultado fue "200 OK" con esto vemos que el metodo se encuentra activo

    2. Desactivamos el metodo:
    Debemos agregar a la configuracion del servidor apache la siguiente variable:
    # vi /etc/apache2/apache2.conf
    TraceEnable Off

    Ahora reiniciamos el servicio y verificamos nuevamente el estado:
    # /etc/init.d/apache2 restart
    # telnet mywiki 80
    Trying 1.1.1.1...
    Connected to mywiki.
    Escape character is '^]'.
    TRACE / HTTP/1.0
    Host: 1.1.1.1

    HTTP/1.1 403 Forbidden
    Date: Sun, 22 Jun 2008 17:43:40 GMT
    Server: Apache
    Last-Modified: Mon, 31 Mar 2008 21:28:05 GMT
    ETag: "7fa0c-470-53c8e340"
    Accept-Ranges: bytes
    Content-Length: 1136
    Connection: close
    Content-Type: text/html

    Como vemos ya no tenemos acceso al metodo "Forbidden".