O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

OWASP y seguridad WordPress

478 visualizações

Publicada em

Ponencia sobre seguridad WordPress y OWASP de Fernando Tellado en WordCamp Pontevedra 2018.

Publicada em: Internet
  • Entre para ver os comentários

OWASP y seguridad WordPress

  1. 1. La seguridad en WordPress está sobrevalorada Aprendiendo a vivir peligrosamente y feliz con tu web Fernando Tellado @fernandot #PONTEWORDCAMP
  2. 2. Bio: Culpable de Ayuda WordPress Profesor, consultor, escritor Admin es.WordPress.org GTE WordPress España Brand Ambassador SiteGround España Brand Ambassador YITH Promotor CampusWP Organizador WooCommerce Madrid y WordCamp Madrid Presidente ADEWEB Autor de varios libros WordPress Fernando Tellado @fernandot #PONTEWORDCAMP
  3. 3. ¿Es wordpress seguro? wordpress es Bastante seguro Los plugins son peligrosos Los temas son peligrosos los usuarios son muy peligrosos Fernando Tellado @fernandot #PONTEWORDCAMP
  4. 4. hardening wordpress actualiza, actualiza, actualiza contraseñas seguras plugin de seguridad backup Fernando Tellado @fernandot #PONTEWORDCAMPhttps://codex.wordpress.org/Hardening_WordPress
  5. 5. ¿actualiza? Fernando Tellado @fernandot #PONTEWORDCAMP
  6. 6. ¿actualiza? Fernando Tellado @fernandot #PONTEWORDCAMP
  7. 7. ¿actualiza? Fernando Tellado @fernandot #PONTEWORDCAMP
  8. 8. ¿contraseñas seguras? Fernando Tellado @fernandot #PONTEWORDCAMP
  9. 9. ¿contraseñas seguras? Fernando Tellado @fernandot #PONTEWORDCAMP
  10. 10. ¿contraseñas seguras? Fernando Tellado @fernandot #PONTEWORDCAMP
  11. 11. ¿contraseñas seguras? Fernando Tellado @fernandot #PONTEWORDCAMP
  12. 12. ¿contraseñas seguras? Fernando Tellado @fernandot #PONTEWORDCAMP
  13. 13. ¿plugin de seguridad? Fernando Tellado @fernandot #PONTEWORDCAMPFuente: https://www.pluginvulnerabilities.com
  14. 14. ¿plugin de seguridad? Fernando Tellado @fernandot #PONTEWORDCAMPFuentes: https://www.pluginvulnerabilities.com y websec
  15. 15. ¿BACKUP? Fernando Tellado @fernandot #PONTEWORDCAMPFuente: KASPERSKY LABS
  16. 16. ¿HARDENING WORDPRESS? Fernando Tellado @fernandot #PONTEWORDCAMP
  17. 17. ¿HARDENING WORDPRESS? Fernando Tellado @fernandot #PONTEWORDCAMP
  18. 18. ¿HARDENING WORDPRESS? Fernando Tellado @fernandot #PONTEWORDCAMP
  19. 19. ¿HARDENING WORDPRESS? Fernando Tellado @fernandot #PONTEWORDCAMP
  20. 20. ¡estás viviendo peligrosamente! Fernando Tellado @fernandot #PONTEWORDCAMP
  21. 21. ¡¡¡¿qué hago?!!! Fernando Tellado @fernandot #PONTEWORDCAMP
  22. 22. Fernando Tellado @fernandot #PONTEWORDCAMP
  23. 23. O.W.A.S.P. TOP 10 A1 - INYECCIÓN A2 - PÉRDIDA DE AUTENTIFICACIÓN A3 - EXPOSICIÓN DE DATOS SENSIBLES A4 - ENTIDADES EXTERNAS XML (XXE) A5 - PÉRDIDA DEL CONTROL DE ACCESO A6 - CONFIGURACIÓN DE SEGURIDAD INCORRECTA A7 - CROSS SITE SCRIPTING (XSS) A8 - DESERIALIZACIÓN SEGURA A9 - USO DE COMPONENTES CON VULNERABILIDADES CONOCIDAS A10 - REGISTRO Y MONITOREO INSUFICIENTES Fernando Tellado @fernandot #PONTEWORDCAMPhttps://www.owasp.org/images/5/5e/OWASP-Top-10-2017-es.pdf
  24. 24. o.w.a.s.p. y WordPress https://www.owasp.org/index.php/OWASP_Wordpress_Security_Implementation_Guideline Fernando Tellado @fernandot #PONTEWORDCAMP
  25. 25. a1 - inyección siempre versiones seguras de wordpress plugins seguros y bien programados (no versiones piratas) temas seguros y bien programados (no versiones piratas) buenas contraseñas, sí nada "por defecto" (usuario admin, prefijo wp_, /?author=1) moderación de comentarios hosting de calidad, con medidas específicas de seguridad para wordpress hosting con versiones seguras de software y waf PERMISOS 400 EN ARCHIVOS SENSIBLES (.HTACCESS, WP-CONFIG.PHP) mueve el archivo wp-config.php al directorio superior desactiva ejecución php Fernando Tellado @fernandot #PONTEWORDCAMP
  26. 26. a1 - inyección Fernando Tellado @fernandot #PONTEWORDCAMP Options -Indexes Options +FollowSymLinks RewriteEngine On RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2}) RewriteRule ^(.*)$ index.php [F,L] .htaccess
  27. 27. a1 - inyección Fernando Tellado @fernandot #PONTEWORDCAMP <FilesMatch “.(php|php.)$”> Order Allow,Deny Deny from all </FilesMatch> .htaccess
  28. 28. a1 - inyección Fernando Tellado @fernandot #PONTEWORDCAMP if (!is_admin()) { if (preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING'])) die(); add_filter('redirect_canonical', 'shapeSpace_check_enum', 10, 2); } function shapeSpace_check_enum($redirect, $request) { if (preg_match('/?author=([0-9]*)(/*)/i', $request)) die(); else return $redirect; } functions.php
  29. 29. a2 - pérdida de autentificación siempre versiones seguras de TODO (NO VERSIONES PIRATAS) buenas contraseñas, sí nada "por defecto" (usuario admin, prefijo wp_, /? author=1) define las secret_keys de wordpress en wp-config.php no mostrar errores de login solo 2 administradores, no para tareas habituales doble verificación Fernando Tellado @fernandot #PONTEWORDCAMP
  30. 30. a2 - pérdida de autentificación Fernando Tellado @fernandot #PONTEWORDCAMP add_filter('login_errors',create_function('$a', "return null;")); functions.php
  31. 31. a2 - pérdida de autentificación Fernando Tellado @fernandot #PONTEWORDCAMP <files wp-config.php> order allow,deny deny from all </files> <FilesMatch "^."> Order allow, deny Deny from all </FilesMatch> .htaccess
  32. 32. A3 - EXPOSICIÓN DE DATOS SENSIBLES ¿te acuerdas del RGPD? hosting rgpd hosting pci compliance aplica todo lo visto en a1 y a2 buena gestión de permisos de usuarios borrado programado de datos sensibles ssl = https Fernando Tellado @fernandot #PONTEWORDCAMP
  33. 33. A4 - ENTIDADES EXTERNAS XML (XXE) software original y de calidad (a1) evita la carga de extensiones externas (DOM, XMLWRITER, XMLREADER) EVITA CUALQUIER PARSER XML Fernando Tellado @fernandot #PONTEWORDCAMP
  34. 34. A4 - ENTIDADES EXTERNAS XML (XXE) software original y de calidad (a1) evita la carga de extensiones externas (DOM, XMLWRITER, XMLREADER) EVITA CUALQUIER PARSER XML EVITA PARSERS EN PHP: Fernando Tellado @fernandot #PONTEWORDCAMP libxml_disable_entity_loader(true);
  35. 35. A5 - PÉRDIDA DEL CONTROL DE ACCESO aplica las medidas para a1 y a2 controla las llamadas de las apis (json rest api especialmente) ten siempre a mano backups desactiva xml-rpc Fernando Tellado @fernandot #PONTEWORDCAMP
  36. 36. A5 - PÉRDIDA DEL CONTROL DE ACCESO Fernando Tellado @fernandot #PONTEWORDCAMP <Files xmlrpc.php> <IfModule mod_authz_core.c> Require all denied </IfModule> <IfModule !mod_authz_core.c> Order allow,deny Deny from all </IfModule> </Files> .htaccess
  37. 37. A5 - PÉRDIDA DEL CONTROL DE ACCESO Fernando Tellado @fernandot #PONTEWORDCAMP RewriteCond %{REQUEST_METHOD} ^(GET|POST| PUT|PATCH|DELETE) [NC] RewriteCond %{REQUEST_URI} ^.*wp-json/wp/ [NC] RewriteRule ^(.*)$ - [F] .htaccess
  38. 38. A5 - PÉRDIDA DEL CONTROL DE ACCESO Fernando Tellado @fernandot #PONTEWORDCAMP location = /xmlrpc.php { deny all; } nginx
  39. 39. A6 - CONFIGURACIÓN DE SEGURIDAD INCORRECTA No uses nada por defecto, tampoco en tu router, móvil, ordenador no uses permisos de archivos y carpetas incorrectos (650 para archivos, 750 para carpetas, 400 para .htaccess y wp- config.php) recuerda a1 y a2 Fernando Tellado @fernandot #PONTEWORDCAMP
  40. 40. A7 - CROSS SITE SCRIPTING (XSS) es la vulnerabilidad más común y extendida software actualizado y con garantías = a1 desarrollador: valida, sanea y escapa todo … Fernando Tellado @fernandot #PONTEWORDCAMP
  41. 41. A7 - CROSS SITE SCRIPTING (XSS) Fernando Tellado @fernandot #PONTEWORDCAMP is_numeric() preg_match() filter_var() in_array() VALIDA todo sanea todo escapa todo sanitize_email sanitize_file_name sanitize_html_class sanitize_text_field sanitize_textarea_field esc_url_raw sanitize_option  sanitize_meta wp_kses sanitize_key sanitize_user sanitize_mime_type sanitize_title wp_filter_post_kses esc_html  esc_url esc_js esc_attr esc_textarea
  42. 42. A8 - DESERIALIZACIÓN SEGURA afecta a cachés, bases de datos, tokens de apis, a todo wordpress uso de objetos serializados desde fuentes inseguras mantén todo actualizado aplica a1 a muerte Fernando Tellado @fernandot #PONTEWORDCAMP
  43. 43. A9 - USO DE COMPONENTES CON VULNERABILIDADES CONOCIDAS https://wpscans.com/ https://sitecheck.sucuri.net/ https://wpvulndb.com/ https://www.pluginvulnerabilities.com/ Fernando Tellado @fernandot #PONTEWORDCAMP
  44. 44. A10 - REGISTRO Y MONITOREO INSUFICIENTES BUSCA CÓDIGO OFUSCADO BUSCA CÓDIGO BASE64 BUSCA LLAMADAS AL SISTEMA (exec, passthru, system, shell_exec, etc.) BUSCA EJECUCIONES DE CÓDIGO PHP (eval, assert, preg_replace, etc.) BUSCA EXPOSICIONES DE INFORMACIÓN (phpinfo, getenv, getmygid/pid/uid, etc.) BUSCA FUNCIONES DEL SISTEMA DE ARCHIVOS (fopen, bz/gzopen, chgrp/own/mod, etc.) ¿Te acuerdas del RGPD?: https:// es.wordpress.org/plugins/wp- security-audit-log/ Fernando Tellado @fernandot #PONTEWORDCAMP
  45. 45. HOJA DE RUTA DESARROLLADORES DEFINIR SEGURIDAD Y REQUISITOS DE SEGURIDAD (ASVS) SEGURIDAD POR DISEÑO (MASTER CHEAT SHEET) controles estándar de seguridad (proactive controls) ciclo de vida de desarrollo seguro (Samm) EDUCAR EN SEGURIDAD Fernando Tellado @fernandot #PONTEWORDCAMPhttps://www.owasp.org/images/5/5e/OWASP-Top-10-2017-es.pdf
  46. 46. resumiendo seguridad preventiva hosting de confianza software de confianza permisos adecuados monitoreo constante No dejes que la sangre llegue al río
  47. 47. ¡GRACIAS! Fernando Tellado @fernandot #PONTEWORDCAMP
  48. 48. Fernando Tellado @fernandot #PONTEWORDCAMP ¿PREGUNTAS?

×