Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Hackear un Sitio Web
2
Claudio Morales Godinez @pronuer @ComunidadDePHP
3
Seguridad WEB La seguridad Web NO es una característica, SON ACCIONES
4
Equipo de trabajo
5
Gran Hacker
6
Seguridad WEB Un problema en constante crecimiento
7
Seguridad WEB La seguridad debe de ser considerada todo el tiempo de desarrollo
8
Seguridad WEB Tipos de Ataques
9
SQL Injection
11
Primeros Pasos 1.Valores tipo ?id=3 indentificar 2.Concer columnas “-1 UNION SELECT ALL 1,2,3” 3.Versión Myslq “-1 UNION SELECT ALL 1, @@VERSION,3” 4.Nombre Base “-1 UNION SELECT ALL 1,group_concat(table_name),3+from+information _schema.tables+where+table_schema=database( )”
12
SQL Injection Manos a la obra http://seguridadweb.azurewebsites.net/
13
SQL Injection 6.Final nombre de usuario “id=- 1+union+select+1,2,group_concat(' ',' Id: ',id,' User: ',usuario,' Pas: ', clave),4+from+administradores http://www.blackploit.com/2011/02/diccionarios-para- fuerza-bruta.html
14
SQL Injection ¿Dónde quedo mi BD?
15
SQL Injection Ejemplo Java conn = pool.getConnection( ); String sql = "select * from user where username='" + username +"' and password='" + password + "'"; stmt = conn.createStatement(); rs = stmt.executeQuery(sql); if (rs.next()) { loggedIn = true; out.println("Successfully logged in"); } else { out.println("Username and/or password not recognized"); }
16
SQL Injection Ejemplo Python try: conn = MySQLdb.connect (host = "localhost”,user = "uname”, passwd = "pass”,db = "mydb") cursor = conn.cursor() email = "' OR '1'='1" query = "SELECT * FROM user_info WHERE email = '" + email + "'" print query cursor.execute(query) if cursor.rowcount > 0: print cursor.fetchall() else: print "no item found" except MySQLdb.Error, e: print "Error %d: %s" % (e.args[0], e.args[1])
17
SQL Injection
18
Algunas soluciones o Validar datos antes de usarlos en el SQL dinámicos is_int() is_long() gettype() o Usar PDO (PHP Data Objects) o Usar declaraciones parametrizadas MySQLi’s o Usar mínimo mysql_real_escape_string() o El uso de addslashes() no es suficiente.
19
Cross-site Scripting (XSS)
22
Algunas soluciones No confiar nunca en datos que obtengas de los usuarios o de cualquier fuente de datos Saneando los datos strip_tags($_POST['comentario']); Escapando los datos htmlspecialchars(); Las validaciones de datos de entrada, deben realizarse siempre del lado del servidor, no sólo en el lado del cliente
23
Cross Site Request Forgery (CSRF)
27
function verificar($form, $token, $delta_time=0) { // comprueba si hay un token registrado en sesión para el formulario if(!isset($_SESSION['csrf'][$form.'_token'])) { return false; } // compara el token recibido con el registrado en sesión if ($_SESSION['csrf'][$form.'_token']['token'] !== $token) { return false; } // si se indica un tiempo máximo de validez del ticket se compara la fecha actual con la de generación del ticket // if($delta_time > 0){ $token_age = time() - $_SESSION['csrf'][$form.'_token']['time']; if($token_age >= $delta_time){ return false; } return true; }
28
Cross Site Request Forgery (CSRF)
29
Recomendaciones para PHP
31
Recomendaciones Mantener CMS actualizado a la última versión Instalar solamente plugins y temas seguros Blinda la carpeta wp-admin o admin, o bien si puedes, fuerza la autentificación mediante SSL Revisar la sección de seguridad de ayuda del CMS para comprobar que has realizado todas las acciones de seguridad Suscribirte al feed de Ayuda del CMS para estar informado de las alertas de seguridad Reportar Errores al CMS Quitar todos los archivos CHANGELOG.txt y demás archivos.txt de los módulos que instalamos en nuestro sitio Poner un limite de intentos en el login.
32
Recomendaciones Generales No Confíes en Nadie
33
Recomendaciones Generales Piensa como ellos https://www.owasp.org/index.php/Top_10_2013-Top_10
34
Recomendaciones Generales Actualizate Siempre
35
Preguntas y Respuestas
36
¡¡¡¡Muchas Gracias!!!! Claudio Morales Godinez @pronuer www.comunidaddephp.org @ComunidadDePHP
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.