La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Hackear un Sitio Web. Claudio

Presentaciones similares


Presentación del tema: "Hackear un Sitio Web. Claudio"— Transcripción de la presentación:

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

10

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)

20

21

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)

24

25

26

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

30

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


Descargar ppt "Hackear un Sitio Web. Claudio"

Presentaciones similares


Anuncios Google