pu

Buscar este blog

martes, 23 de septiembre de 2014

Recorrer un GridView y verificar si un CheckBoxField esta Checked o no usando C# y ASP.NET

Hola Amigos, si te gusta los posts en mi blog, por favor sígueme en Twitter bajo @tmaoner para ver mis aportaciones. 





Para la mayoría de ustedes que leen mi blog, este post es bien simple, pero créanme que muchos en la comunidad no lo sabían el día de hoy, por lo tanto los posteo para que los que me pidieron que lo hicieran lo puedan leer hoy en la noche y hacerlo funcionar en sus páginas.





El problema cae en lo siguiente, cuando tenemos un GridView y en una de las columnas manejamos un CheckBoxField  varios de los programadores con los que hable hoy no sabían cómo verificar del lado de la programación al momento de recorrer el GridView si estaba Checked o no.





Es fácil poder verificarlo, primero que todo deben de recorrer el  GridView , esto se hace de la siguiente forma usando un foreach :





        foreach (GridViewRow grd_Row in this.grd_Items.Rows)


        {


        }





Si ven en el foreach vamos a utilizar GridViewRow para ir utilizando cada fila. Después de tener este foreach vamos a insertar en el el siguiente código:





CheckBox chk_Publicar = (CheckBox)grd_Row.Cells[6].Controls[0];





Lo que estamos hacienda acá es que vamos a declarar un CheckBox  y en el mismo lo vamos a instanciar por medio de elegir la columna donde se encuentra el CheckBoxField  y con el método Controls  el cual le vamos a indicar que esta columna es especial.





Ya cuando tenemos nuestro CheckBox declarado, ya podemos hacer uso de el de forma normal, para verificar si esta Checked o no, ya pueden usar un simple if:





            if (chk_Publicar.Checked)


            {


                // Codigo


            }


            else


            {


                // Codigo


            }





Ya con esto, pueden hacer uso de cualquier CheckBoxField  en un GridView. El código final, debe de quedarles algo parecido:





        foreach (GridViewRow grd_Row in this.grd_Items.Rows)


        {


            CheckBox chk_Publicar = (CheckBox)grd_Row.Cells[6].Controls[0];





            if (chk_Publicar.Checked)


            {


                // Codigo


            }


            else


            {


                // Codigo


            }


        }

martes, 16 de septiembre de 2014

WPHardening: Automatizar la Fortificación de WordPress

La seguridad en WordPress es un tema más que importante hoy en día. Constantemente vemos bugs en plugins como el RFU de MailPoet o el 0day de TimThumb que ponen en riesgo las instalaciones de estos frameworks. Pero no solo eso, hay ataques de fuerza bruta contra WordPress, ataques de elevación de privilegios en WordPress, fallos de privacidad con la indexación de borradores,configuraciones inseguras que permiten el registro de usuarios, configuraciones inseguras que permiten listar los plugins instalados y un montón más de exploits conocidos para atacarlos.

Figura 1: WP Hardening ayuda a mejorar la seguridad de tu WordPess

Cada instancia de WordPress, una vez implantada, puede ser fortificada - igual que se fortifica el servidor Linux donde se esté ejecutando - cambiando permisos, borrando archivos de instalación, cambiando configuraciones o instalando plugins de seguridad.

WPHardening es una herramienta creada en Python, bajo licencia libre GNU/GPLv3, con la idea de no ser un plugin como tal de este framework, de esos que estamos acostumbrados a instalar y que en muchos casos extienden su funcionalidad. Es una herramienta de auditoria diseñada con la idea concreta de poder automatizar la eliminación de archivos innecesarios, dar recomendaciones de plugins de seguridad, aportar un asistente para la creación del archivo de configuración y algunas cosas más que paso a contaros.

¿Que se puede hacer con WPHardening? 

Está diseñada como una herramienta de consola, con el objetivo de ser versátil y que pueda ser utilizada con diferentes argumentos de invocación - con los que se podrán realizar diferentes acciones - y desde diferentes scripts automatizados en procesos completos de cumplimientos de seguridad.

Figura 2: WPhardening en su GitHub

Para comenzar a utilizar esta herramienta, lo primero que vamos a hacer es descargar WPHardening desde su repositorio en GitHub de la siguiente manera:

$ git clone https://github.com/elcodigok/wphardening
Cloning into 'wphardening'...
remote: Counting objects: 534, done.
remote: Total 534 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (534/534), 121.84 KiB | 93 KiB/s, done.
Resolving deltas: 100% (370/370), done.


$ cd wphardening/

Ahora vamos a necesitar tener descargado y descomprimido en algún directorio de nuestro equipo una versión de WordPress, hasta la fecha de hoy se recomienda la última versión estable 4.0 llamada “Benny”  y que fue liberada hace unos días. En estos ejemplos, la copia de WordPress 4.0 que hemos descargado está en el siguiente PATH:

/home/cspammers/wordpress

Con estos dos componente ya podemos utilizar WPHardening y automatizar su fortificación sin necesidad que el framework de WordPress se encuentre instalado o esté en ejecución dentro del servidor.

Para obtener ayuda sobre la herramienta y cuáles los parámetros que podemos utilizar hay que ejecutar:

$ ./wphardening.py -h

El único flag obligatorio es ( -d ) donde se indica el PATH en el que se encuentra la instancia deWordPress previamente descargado. Haciendo uso de este único argumento podemos validar que realmente sea un proyecto de WordPress. Se hace de la siguiente manera:

$ ./wphardening.py -d /home/cspammers/wordpress -v

Si no se especifica ningún archivo de Log para guardar los resultados salida con la opción ( -o ), todos los cambios van a ir almacenándose en el archivo wphardening.log de esa forma vamos a poder seguir todo lo que se fue ejecutando.

Para evitar el síndrome 777 en donde el usuario regala permisos a los archivos y directorios,wphardening tiene la posibilidad de hacer un control de permisos de seguridad adecuado utilizando la opción -c ó --chmod. Este sería un ejemplo de uso para mejorar los permisos de los archivos deWordPress:

$ ./wphardening.py -d /home/cspammers/wordpress --chmod

En cada proyecto que utilizamos de WordPress podemos encontrar archivos de documentación o presentación como son los ficheros de readme.html o de licencias que son muy utilizados en fases de fingerprinting para detectar la versión exacta de nuestra instalación, rutas dentro del servidor y hasta posibles configuraciones inseguras. Para evitar tener que ir eliminando manualmente todos estos archivos dentro de un proceso de fortificación, podemos utilizar la opción -r o --remove conWPhardening:

$ ./wphardening.py -d /home/cspammers/wordpress --remove

Figura 3: Ejemplo de borrado de archivos de licencia e información en WordPress

Para dificultar aún más los procesos de fingerprinting se puede eliminar la versión de WordPress de todos los lugares en los que se encuentra y con ( -f ) las marcas buscadas por las herramientas populares de scanning de WordPress, para ello se puede utilizar las opción de ( -v es el modoverbose ):

$ ./wphardening.py -d /home/cspammers/wordpress --delete-version -f -v

También es posible crear y personalizar el archivo robots.txt en donde le indicamos a las arañas de los motores de búsqueda cuáles los límites y permisos que vamos a asignar usando la opción -b o --robots:

$ ./ wphardening.py -d /home/cspammers/wordpress --robots

En este último tiempo la libreria TimThumb, una de las más usadas para manipular imágenes en PHP fue vulnerada en varias oportunidades. El problema radica en que los usuarios no acostumbran a actualizarla cuando esta incluida en su tema del sitio, por lo que wphardening cuenta con un diccionario de búsqueda para alertar al usuario sobre la existencia del mismo:

$ ./wphardening.py -d /home/cspammers/wordpress --timthumb -v

Una herramienta que se incorporó en estas últimas versiones es la posibilidad de contar con un asistente para la creación del archivo de configuraciones wp-config.php, que va a generar un archivo llamado wp-configu-wphardening.php para que sea renombrado en la instalación. Esto se puede activar de la siguiente manera:

$ ./wphardening.py -d /home/cspammers/wordpress --wp-config

La popularidad de WordPress llegó por la gran facilidad que tiene para extender sus funcionalidades y crear los plugins. Es por ello que desde WPHardening recomendamos varios plugins específicamente de seguridad, tales como: AntiVirus, Bad Behavior, Block Bad Queries, Exploit Scanner, Latch, Limit Login Attempts, One-Time Password, UPDATE NOTIFICATIONS, User Locker, WordPress File Monitor Plus, WP Login Security 2, WP Security Scan y WP-DBManager.


Figura 4: Vídeo Tutorial de integración de Latch para WordPress.
También puede ser usado para gestionar muchos WordPress con un solo Latch.

Para comprobar si puedes mejorar la seguridad de tu WordPress con alguno de ellos puedes usar la siguiente opción:

$ ./wphardening.py -d /home/cspammers/wordpress --plugins

Finalmente, en caso que nuestro servidor acepte la navegación entre sus directorios, podemos crear - con un solo comando - todos sus archivos index.php y una directiva en el archivo .htaccess para evitar que alguien liste el contenido de alguno de nuestros directorios:

$ ./wphardening.py -d /home/cspammers/wordpress --indexes

Dijimos al principio, que WPHardening es una herramienta muy versátil que nos va a permitir ejecutar la cantidad de opciones previas a una instalación o actualización, por lo cual podríamos llegar a combinar todos sus argumentos de la siguiente manera:

$ ./wphardening.py -d /home/cspammers/wordpress -c -r -b -f -t --wp-config --delete-version --plugins --indexes -o wordpress4.log -v

Conclusiones

WPHardening es un proyecto muy joven, en una fase muy temprana, pero que está siendo cuidado con mucho cariño e ilusión, por lo que aceptamos cualquier sugerencia o idea de mejora. Están todos invitados a colaborar y probar WPHardening, reportar fallos o cambios desde el repositorio en GitHub, para que puedan seguir creciendo con mejoras y nuevas funcionalidades. Ya estamos comenzando a ver que es lo nuevo para su version 1.4 así que cualquier idea será bienvenida.

Saludos!

Autor: Daniel Maldonado (@elcodigok)
http://caceriadespammers.com.ar

ReblogUn informático en el lado del mal
http://www.elladodelmal.com/

lunes, 1 de septiembre de 2014

crea usuario con privilegios de root

Existen varios métodos para crear un nuevo usuario con privilegios de root en Linux.

método rápido

se trata de crearlo de golpe añadiéndolo al grupo desde el propio comando useradd.
Añadir el usuario:
sudo useradd -u 0 -o -g 0 nombreusuario
Establecer la nueva contraseña:
sudo passwd nombreusuario
Este método hay veces que no va del todo bien ya que no crea la carpeta home personal y hay problemas con el historial bash en algunos VPS.

método típico

es mas largo, pero es el que se usa siempre.
Añadir el usuario:
sudo adduser nombreusuario
sudo /usr/sbin/visudo
En este fichero, añadimos después de la línea donde pone ‘root’, el nombre de nuestro usuario, con las líneas de ALL iguales.
# User privilege specification
root            ALL=(ALL:ALL) ALL 
nombreusuario ALL=(ALL:ALL) ALL

eliminar usuario

Si nos hubiésemos equivocado, podemos eliminar el usuario:
sudo userdel nombreusuario
O también cambiar la contraseña:
sudo passwd nombreusuario
Ahora ya nos podremos loguear con el nuevo usuario.

Habilitar o deshabilitar el login de root en SSH

Por razones de seguridad se suele desactivar el acceso root via SSH. Si queremos habilitarlo o deshabilitarlo debemos hacer lo siguiente:
# cd /etc/sshd
# vi sshd_config
Deshabilitarlo
PermitRootLogin no
Habilitarlo
PermitRootLogin yes
Despues de guardar los cambios reiniciamos el servicio SSH.
EN FREEBSD
/etc/rc.d/sshd restart
EN LINUX
/etc/init.d/sshd restart