Tutoriales y Manuales
Entradas Mensuales
-
►
2024
(Total:
1058
)
- ► septiembre (Total: 50 )
-
►
2023
(Total:
710
)
- ► septiembre (Total: 65 )
-
►
2022
(Total:
967
)
- ► septiembre (Total: 72 )
-
►
2021
(Total:
730
)
- ► septiembre (Total: 56 )
-
►
2020
(Total:
212
)
- ► septiembre (Total: 21 )
-
►
2019
(Total:
102
)
- ► septiembre (Total: 14 )
-
▼
2017
(Total:
231
)
- ► septiembre (Total: 16 )
-
▼
marzo
(Total:
39
)
- Vulnerabilidad crítica en IIS 6.0: Más de 8,3 mill...
- Telegram incorpora llamadas de voz y 2 minutos par...
- Lavavajillas para hospitales incluye grave fallo d...
- Fin de vida: se acabó el ciclo de soporte a Window...
- Extensión de Metasploit: RFTransceiver permite tes...
- Herramientas Hacking de la CIA para los Mac e iPhone
- Descubierto grave fallo en LastPass que permite ro...
- Extorsionan a Apple: piden dinero a cambio de no b...
- Granjeros americanos utilizan firmware alternativo...
- Intel presenta SSD Optane, tan rápido que se puede...
- Vulnerabilidad crítica para 300 modelos de disposi...
- Mozilla corrige una vulnerabilidad de Firefox 22 h...
- MOSH, SSH estable, rápido y basado en UDP
- USB Kill versión 3.0 con más poder de destrucción ...
- Pwn2Own 2017: Caen Windows, Ubuntu, Edge, Safari, ...
- 18 mil dólares de premio por encontrar grave fallo...
- EE.UU. acusa a dos oficiales de la Inteligencia ru...
- El creador del ransomware CryptoLocker, Bogachev: ...
- Un padre inocente arrestado por pedofilia por una ...
- Es posible hackear teléfonos mediante ondas sonoras
- Empresa consoladores que espían usuarios multada a...
- Protege tus puertos USB de pendrives roba datos
- Google presenta los nuevos reCAPTCHA invisibles pa...
- Recompensa de 5 mil $ por encontrar fallo en app d...
- Cómo proteger correctamente la seguridad de WordPress
- Cerca de 200 mil cámaras Wifi chinas vulnerables e...
- Actualizada la distibución Parrot Security OS vers...
- Disponibles Tails 2.11 y Tor Browser 6.5.1
- Disponible actualización de seguridad para WordPress
- WikiLeaks revela las herramientas hacking de la CIA
- Alertan de varios fallos de seguridad en los NAS d...
- Nueva campaña Ransomware CryptoLocker con extensió...
- Dridex, el troyano bancario más complejo y temido
- Ataque de las alertas y el script Zombie en Intern...
- Un comando mal escrito, el motivo de la caída de A...
- Grave fallo de Inyección SQL en plugin de WordPres...
- NVIDIA anuncia la GEFORCE GTX 1080 TI
- Hackathon de ciberseguridad 4YFN-Mobile World Cong...
- Yahoo! desvela otro hackeo, y ya es el tercero
-
►
2016
(Total:
266
)
- ► septiembre (Total: 38 )
-
►
2015
(Total:
445
)
- ► septiembre (Total: 47 )
-
►
2014
(Total:
185
)
- ► septiembre (Total: 18 )
-
►
2013
(Total:
100
)
- ► septiembre (Total: 3 )
-
►
2011
(Total:
7
)
- ► septiembre (Total: 1 )
Blogroll
Etiquetas
seguridad
(
396
)
privacidad
(
364
)
google
(
354
)
ransomware
(
340
)
vulnerabilidad
(
303
)
Malware
(
264
)
Windows
(
244
)
android
(
243
)
cve
(
235
)
tutorial
(
235
)
manual
(
220
)
software
(
204
)
hardware
(
193
)
linux
(
125
)
twitter
(
116
)
ddos
(
95
)
WhatsApp
(
91
)
Wifi
(
85
)
cifrado
(
77
)
herramientas
(
75
)
hacking
(
73
)
sysadmin
(
67
)
app
(
65
)
Networking
(
56
)
nvidia
(
52
)
ssd
(
51
)
youtube
(
50
)
adobe
(
43
)
firmware
(
43
)
office
(
41
)
hack
(
40
)
firefox
(
36
)
contraseñas
(
32
)
eventos
(
32
)
antivirus
(
31
)
juegos
(
31
)
cms
(
30
)
flash
(
28
)
anonymous
(
27
)
MAC
(
25
)
apache
(
25
)
programación
(
25
)
exploit
(
23
)
multimedia
(
23
)
javascript
(
22
)
Kernel
(
20
)
ssl
(
19
)
SeguridadWireless
(
17
)
documental
(
16
)
Forense
(
15
)
conferencia
(
15
)
Debugger
(
14
)
lizard squad
(
14
)
técnicas hacking
(
13
)
auditoría
(
12
)
delitos
(
11
)
metasploit
(
11
)
Virtualización
(
10
)
adamo
(
9
)
reversing
(
9
)
Rootkit
(
8
)
Ehn-Dev
(
7
)
MAC Adress
(
6
)
antimalware
(
6
)
oclHashcat
(
5
)
Entradas populares
-
Después de ver qué es una vCPU y la diferencia entre núcleos (cores) e hilos en los procesadores, pasamos a explicar toda la nomenclatura d...
-
Un fallo de diseño en el mecanismo de registro del servidor VPN de Fortinet puede aprovecharse para ocultar la verificación exitosa de cre...
-
Trinity asegura haber robado 560 GB de datos de la Agencia Tributaria (AEAT) española, así como haber secuestrado parte de sus sistemas, ci...
Cómo proteger correctamente la seguridad de WordPress
sábado, 11 de marzo de 2017
|
Publicado por
el-brujo
|
Editar entrada
WordPress es el gestor de contenidos CMS por excelencia y el más extendido entre la comunidad de desarrolladores, pero se calcula que 3 de cada 4 sitios hackeados utilizan WordPress. La seguridad en servidores y plataformas web es un aspecto muy importante, pero que no todos los administradores tienen en cuenta, o incluso no se toman el tiempo suficiente para configurarlos correctamente.
Algunas buenas prácticas a la hora de configurar WordPress son:
No esperes ver un defacement en la portada de tu sitio web, eso no les interesa a los atacantes, prefieren que tu no puedas ver que has sido hackeado mientras ellos distribuyen usando tu blog todo tipo de malware.
Los principales indicadores que sitio web ha sido comprometido son:
Podemos crear una sencilla regla en el firewall de CloudFlare para prevenir ataques de fuerza bruta de la página de login del CMS Wordpress
También en el plan gratuito podemos hasta 5 reglas del Firewall (en el plan de pago pro 20 reglas.
Fortalecer la seguridad en WordPress
Algunas buenas prácticas a la hora de configurar WordPress son:
- Mover el directorio wp-content: esta acción ayuda a proteger al sitio contra ataques automatizados Zero Day.
/** Permite mover el directorio wp-content **/ define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/blog/wp-content' ); define( 'WP_CONTENT_URL', 'http://example/blog/wp-content' );
- Cambiar el nombre de usuario admin: este usuario es el que viene por defecto, por lo que es uno de los primeros objetivos de un cibercriminal a la hora de realizar un ataque de fuerza bruta. En las versiones más recientes de WordPress, es posible seleccionar el nombre de usuario durante la instalación.
- Mínima instalación de plugins: muchos de éstos son susceptibles a Cross-Site Scripting (XSS) e inyección de SQL; si se instalan pocos plugins se reducirán vectores de ataques.
- Mover wp-config.php fuera del directorio raíz web: si movemos este archivo una carpeta más arriba del directorio web raíz, lograremos que no se vea la configuración de nuestro WordPress.
- Quitar el listado de directorios en el servidor: WordPress sufre Full Path Disclosure lo que ayuda a realizar ataques como Path Transversal.
- Administración a través de SSL: a veces, el panel de administración se usa por protocolo sin cifrar HTTP, pero si ingresamos mediante HTTPS estamos enviando los datos encriptados, lo que dificulta la intercepción de información y evita ataques de tipo MITM.
define( 'FORCE_SSL_ADMIN', true ); //Forzar inicio de sesión seguro administración define( 'FORCE_SSL_LOGIN', true ); //Forzar inicio de sesión seguro
- Usar la base de datos sin privilegios de administrador cuando no se requiere: por defecto WordPress solo usa una base de datos de usuarios para todos ellos. Pero con algunos ajustes de código se puede usar un usuario de una base con menos privilegios para usuarios anónimos, lo que reduce considerablemente los riesgos.
- Mantener usuarios con privilegios mínimos: existe la posibilidad de que un usuario con privilegios de administrador tenga una contraseña débil. Concediendo a los usuarios los privilegios indispensables se reducen las posibilidades de que se vean comprometidas sus cuentas.
- Sacar el “Powered by WordPress” del pie de página: los ciberdelincuentes usan este pie de página en buscadores para encontrar potenciales víctimas vulnerables. Para ocultar esa información, tienes que incluir la siguiente línea en el archivo functions.php de tu WordPress:
Remove_action('wp_head', 'wp_generator');
- Lista blanca de IP para acceder al wp-login.php: generalmente los administradores acceden a su blog desde la misma dirección IP, por lo que se configuran estas direcciones como “de confianza” para poder acceder.
- Cambiar el prefijo de las tablas de las bases de datos
/** Prefijo de las tablas de la base de datos, cambiarlas
por seguridad */
siempre en lo posible$table_prefix = 'ehn_'; //Sólo números, letras y guiones bajos por favor!
Evitar la ejecución de PHP
Otra cosa que recomendamos hacer es fortalecer el directorio wp-content/uploads colocando un .htaccess con el siguiente código dentro:
<Files * .php>deny from all</Files>
Esto evitaría la ejecución de cualquier script PHP desde el directorio de uploads en un entorno Apache. Incluso si un atacante pudiera cargar su puerta trasera, no podría hacer mucho con él.
Cómo saber si tu WordPress ha sido hackeado
No esperes ver un defacement en la portada de tu sitio web, eso no les interesa a los atacantes, prefieren que tu no puedas ver que has sido hackeado mientras ellos distribuyen usando tu blog todo tipo de malware.
Los principales indicadores que sitio web ha sido comprometido son:
- Puedes comprobar la salud de tu WordPress con Google Safe Browsing: https://www.google.com/transparencyreport/safebrowsing/diagnostic/?hl=es
- O también directamente en Google Console (antes Webmaster Tools): https://www.google.com/webmasters/tools/security-issues
Indicadores comunes de un sitio web hackeado WordPress
- Advertencias lista negra de Google, Bing, McAfee
- Comportamientos extraños o anormales navegador
- Correo no deseado en el contenido del motor de búsqueda
- La notificación de suspensión sitio web por parte de tu hosting
- Las modificaciones del archivo o temas centrales de integridad
- Advertencias en los resultados de búsqueda de Google (SEO envenenamiento)
- Renombrar fichero wp-login.php para evitar ataques por fuerza bruta (logear intentos e instalar captcha)
Ataques Fuerza Bruta WordPress wp-login.php
Podemos crear una sencilla regla en el firewall de CloudFlare para prevenir ataques de fuerza bruta de la página de login del CMS Wordpress
También en el plan gratuito podemos hasta 5 reglas del Firewall (en el plan de pago pro 20 reglas.
Ejemplo regla:
Si el request URI (si la URL) incluye wp-login.php y la IP no sea de España pues podemos mostrar un captcha Challenge (Captcha) o bloquear (Block) directamente.
O instalar plugins gratuitmos como:
Estructura interna de WordPress
En el fichero de configuración: wp-config.php
Para los Themes y plugins añadir:
Introducido por primera vez en WordPress versiones 2.5, 2.6 y 2.7
Otra opción no recomendada sería evitar todo tipo de cambios desde el escritorio
Si quieres evitar que desde la administración de WordPress se pueda modificar el código de ficheros, puedes añadir la siguiente línea al fichero wp-config.php
Si la web ya está creada y no necesitas añadir nuevos plugins o plantillas, también puedes deshabilitar la instalación de temas y plantillas añadiendo:
También sería útil cambiar el prefijo (prefix) por defecto de las tablas de wp:
Usar algún plugin de seguridad como el de Sucuri , iThemes o Acunetix:
El plugin de Sucuri se encarga de:
Ocultar la versión de WordPress:
Por defecto WordPress tiene una meta etiqueta con el número de la versión:
Pero sigue apareciendo en el feed de RSS.
Así que es mejor usar una función en el fichero functions.php para ocultar la versión en todas partes:
(http.request.uri.path contains "/wp-login.php" and ip.geoip.country ne "ES")
Si el request URI (si la URL) incluye wp-login.php y la IP no sea de España pues podemos mostrar un captcha Challenge (Captcha) o bloquear (Block) directamente.
O instalar plugins gratuitmos como:
- Limit Login Attempts Reloaded
- WP Limit Login Attempts
Proteger - Securizar - Hardening - WordPress
- Mantener actualizada la versión Core (Núcleo) de WordPress
- Mantener actualizados los Plugins
- Mantener actualizados los Themes (temas de diseño)
- Usar themes y plugins con buena reputación
- Evitar usar contraseñas y/o usuarios por defecto (admin) y/o contraseñas débiles
UPDATE wp_users SET user_login = 'elhacker' WHERE user_login = 'admin';
,
Estructura interna de WordPress
Within
/
- The root WordPress directory: all files should be writable only by your user account, except
.htaccess
if you want WordPress to automatically generate rewrite rules for you./wp-admin/
- The WordPress administration area: all files should be writable only by your user account.
/wp-includes/
- The bulk of WordPress application logic: all files should be writable only by your user account.
/wp-content/
- User-supplied content: intended to be writable by your user account and the web server process.
/wp-content/
you will find:
/wp-content/themes/
- Theme files. If you want to use the built-in theme editor, all files need to be writable by the web server process. If you do not want to use the built-in theme editor, all files can be writable only by your user account.
/wp-content/plugins/
- Plugin files: all files should be writable only by your user account.
En el fichero de configuración: wp-config.php
// automatic wordpress updates
//https://codex.wordpress.org/Configuring_Automatic_Background_Updates
define( 'WP_AUTO_UPDATE_CORE', true );
# Disables all core updates:
define(
'WP_AUTO_UPDATE_CORE'
, false );
# Enables all core updates, including minor
and
major:
define(
'WP_AUTO_UPDATE_CORE'
, true );
# Enables core updates
for
minor releases (
default
):
define(
'WP_AUTO_UPDATE_CORE'
,
'minor'
);
Para los Themes y plugins añadir:
add_filter( 'auto_update_plugin', '__return_true' );Recuerda también cambiar las "secret keys" (security keys) en el fichero de configuración:
add_filter( 'auto_update_theme', '__return_true' );
Introducido por primera vez en WordPress versiones 2.5, 2.6 y 2.7
define('AUTH_KEY', 'put your unique phrase here');Usar SSL/TLS, es decir, https si tu hosting lo soporta o lo implementa:
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
Otra opción no recomendada sería evitar todo tipo de cambios desde el escritorio
Si quieres evitar que desde la administración de WordPress se pueda modificar el código de ficheros, puedes añadir la siguiente línea al fichero wp-config.php
define( ‘DISALLOW_FILE_EDIT’, true );
Si la web ya está creada y no necesitas añadir nuevos plugins o plantillas, también puedes deshabilitar la instalación de temas y plantillas añadiendo:
define(‘DISALLOW_FILE_MODS’,true)
También sería útil cambiar el prefijo (prefix) por defecto de las tablas de wp:
$table_prefix = 'wp_';
Plugins de Seguridad en WordPress
Usar algún plugin de seguridad como el de Sucuri , iThemes o Acunetix:
- https://wordpress.org/plugins/sucuri-scanner/ (Sucuri)
- https://wordpress.org/plugins/better-wp-security/ (iThemes Security)
- https://wordpress.org/plugins/wp-security-scan/
- https://wordpress.org/plugins/bulletproof-security/
- https://github.com/wpscanteam/wpscan
El plugin de Sucuri se encarga de:
- Security Activity Auditing
- File Integrity Monitoring
- Remote Malware Scanning
- Blacklist Monitoring
- Effective Security Hardening
- Post-Hack Security Actions
- Security Notifications
- Website Firewall (add on)
Ocultar la versión de WordPress:
Por defecto WordPress tiene una meta etiqueta con el número de la versión:
meta name="generator" content="WordPress " /Una opción sería:
remove_action('wp_head', 'wp_generator');
Pero sigue apareciendo en el feed de RSS.
Así que es mejor usar una función en el fichero functions.php para ocultar la versión en todas partes:
function wpversion_remove_version() { return ''; } add_filter('the_generator', 'wpversion_remove_version');
Actualizaciones de seguridad programadas automáticas
O puedes usar un cliente en línea de comandos como wp-cli
Puedes programar para actualizar WordPress con una sencilla tarea programa si la necesidad de usar el navegador.
Ejemplo actualización del WordPress hwagm.elhacker.net
Core:
Following is a list of desired permissions on sensitive items and fallback options:
Protegiendo el fichero wp-config.php para que no sea visible vía el navegador
O restringir el acceso vía ip (si tenemos una ip fija) del fichero wp-login.php
Si te decides a deshabilitar XMLRPC, puedes hacerlo manualmente o utilizando el plugin XMLRPC Disable.
Para hacerlo manualmente has de añadir esta línea en el fichero functions.php:
O usar un fichero htaccess:
La mejor forma de añadir esta cabecera sería añadiendo unas líneas de código al archivos functions.php del tema de WordPress que estemos usando. Este archivo se encuentra en la ruta wp-content/themes/NOMBRE_TEMA, en donde NOMBRE_TEMA es el nombre del tema que tenemos activado. En primer lugar, haremos una copia de seguridad del archivo functions.php. Después lo editamos y añadimos el siguiente código al final del mismo:
Existen otras maneras de poner añadir esta cabecera . Si tenemos Apache como servidor web podremos usar el fichero .htaccess, agregando el código que se indica a continuación:
En el caso de usar Nginx, habría que introducir el siguiente código en el fichero de configuración de Nginx:
Ver más opciones de cabeceras de seguridad:
https://blog.elhacker.net/2016/03/cabeceras-http-opciones-de-seguridad-hardering-en-el-servidor-web-apache-nginx.html
Puedes programar para actualizar WordPress con una sencilla tarea programa si la necesidad de usar el navegador.
Ejemplo actualización del WordPress hwagm.elhacker.net
Core:
/usr/local/bin/php /home/hwagm.elhacker.net/wp-cli.phar --path=/home/hwagm.elhacker.net/public_html/hwagm-elhacker-net core updatePlugins
/usr/local/bin/php /home/hwagm.elhacker.net/wp-cli.phar --path=/home/hwagm.elhacker.net/public_html/hwagm-elhacker-net plugin update --allThemes
/usr/local/bin/php /home/hwagm.elhacker.net/wp-cli.phar --path=/home/hwagm.elhacker.net/public_html/hwagm-elhacker-net theme update --all
Permisos
Following is a list of desired permissions on sensitive items and fallback options:
- wp-config.php
- Desired: 400
- Fallback: 440, 600, 640
- uploads folder
- Desired: 755
- Fallback: 766, 777 (not recommended)
- .htaccess files
- Desired: 400
- Fallback: 440, 444, 600, 640
Protegiendo el fichero wp-config.php para que no sea visible vía el navegador
<files wp-config.php>
order allow,deny
deny from all
</files>
O restringir el acceso vía ip (si tenemos una ip fija) del fichero wp-login.php
order deny,allowDeshabilitar XML-RPC
Deny from all
# allow access from my IP address
allow from 192.168.5.1
Si te decides a deshabilitar XMLRPC, puedes hacerlo manualmente o utilizando el plugin XMLRPC Disable.
Para hacerlo manualmente has de añadir esta línea en el fichero functions.php:
add_filter('xmlrpc_enabled', '__return_false');
O usar un fichero htaccess:
Y si usamos ngninx en vez de Apache.
## block any attempted XML-RPC requests order deny,allow deny from all allow from 123.123.123.123
## block any attempted XML-RPC requests location = /xmlrpc.php { deny all; }
Los backdoors suelen usar las siguientes funciones de PHP:
Funciones para deshabilitar en PHP
Funciones para deshabilitar en PHP
- base64
- str_rot13
- gzuncompress
- eval
- exec
- create_function
- system
- assert
- stripslashes
- preg_replace (with /e/)
- move_uploaded_file
Avanzado - Cabeceras de Seguridad en WordPress
La mejor forma de añadir esta cabecera sería añadiendo unas líneas de código al archivos functions.php del tema de WordPress que estemos usando. Este archivo se encuentra en la ruta wp-content/themes/NOMBRE_TEMA, en donde NOMBRE_TEMA es el nombre del tema que tenemos activado. En primer lugar, haremos una copia de seguridad del archivo functions.php. Después lo editamos y añadimos el siguiente código al final del mismo:
add_action( 'send_headers', 'add_header_xframeoptions' );
function add_header_xframeoptions() {
header( 'X-Frame-Options: SAMEORIGIN' );
}
add_action( 'send_headers', 'add_header_seguridad' );
function add_header_seguridad() {
header( 'X-Content-Type-Options: nosniff' );
header( 'X-Frame-Options: SAMEORIGIN' );
header( 'X-XSS-Protection: 1;mode=block' );
}
Existen otras maneras de poner añadir esta cabecera . Si tenemos Apache como servidor web podremos usar el fichero .htaccess, agregando el código que se indica a continuación:
Header always append X-Frame-Options SAMEORIGIN
En el caso de usar Nginx, habría que introducir el siguiente código en el fichero de configuración de Nginx:
add_header X-Frame-Options SAMEORIGIN;
Ver más opciones de cabeceras de seguridad:
https://blog.elhacker.net/2016/03/cabeceras-http-opciones-de-seguridad-hardering-en-el-servidor-web-apache-nginx.html
Enviar por correo electrónico
Escribe un blog
Compartir en X
Compartir con Facebook
Compartir en Pinterest
3 comentarios :
renombrar archivos del core no es buena idea ya que frente a una actualización vuelven al original como es el caso de wp-login.php es recomendable usar un plugin como el siguiente que ademas permite un maximo de logins:
https://wordpress.org/plugins/rename-wp-login/
Tambien logear logins exitosos y fallidos para detectar ataques no previstos
https://wordpress.org/plugins/user-login-log/
Por ultimo el post habla de RPC pero versiones nuevas usan UNA API REST que deberiamos bloquear si no pensamos usarla:
https://wordpress.org/plugins/disable-json-api/
ya solucionaron varios fallos en wordpress, aunque no está de mal aprender todo esto, gracias, aunque no entiendo un carajo. pero es interesante todo lo que aportan aquí. gracias mis panas. saludos de dominicana.
How to print your own checks (1).pdf
Publicar un comentario
Los comentarios pueden ser revisados en cualquier momento por los moderadores.
Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.
Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.