SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Vulnerabilidades en Aplicaciones Web PHP
Moisés H. Silva

CIISA 2007

“ You can't consider the problem of defense without first understanding the problem of attack ”
- Doug Tygar -

1
Agenda
1. Vulnerabilidades en PHP

2. SQL Injection

* PHP, lenguaje inseguro?

* Qué es?

* Estadísticas

* Cómo Atacar?
* Cómo Protegerme?

3. Code Injection

4. Session Hijacking

* Qué es?

* Qué es?

* Cómo Atacar?

* Cómo Atacar?

* Cómo Protegerme?

* Cómo Protegerme?
2
PHP, Lenguaje Inseguro?
•

- Poder, Versatilidad y Facilidad son una fórmula para la inseguridad.

•
•

- PHP ha crecido de forma desorganizada.

•

- Zend está intentando poner un orden, PHP5 es un gran paso.

- La seguridad de un lenguaje de programación es inversamente proporcional a
•
la cantidad de responsabilidad delegada al programador.
•

•

- Sólo un programador debería escribir programas , PHP se lo permite a otros.

3
Estadísticas
- Crecimiento de PHP

Fuente: http://www.netcraft.com/Survey/

4
- Servicios de red más usados

Fuente: http://www.securityseer.com/

5
- Top 10 de vulnerabilidades web

Fuente: http://www.owasp.org/

6
SQL Injection
Qué es?
- SQL injection es el término usado para la introducción de datos en una aplicación
•
con la intención de ejecutar sentencias SQL para las que el sistema no fué diseñado
•
y/o para las cuales el usuario no tiene privilegios.
•

- Cualquier aplicación que haga uso de datos externos para crear consultas SQL
•
puede ser vulnerable sin importar el lenguaje en el que se encuentre escrita.
•

•

•
•
•
•

- Las aplicaciones web son más vulnerables debido a:
* La mayoría de los sitios web tienen al menos 1 base de datos.
* Anonimato del atacante y miles de aplicaciones online.
* Ejecución remota y automatizada de ataques.
* Aplicaciones de comercio online ( objetivo: tarjetas de crédito ).

7
SQL Injection
Cómo funciona un ataque?
- Se buscan los puntos de entrada de datos de la aplicación. En web, usualmente
•
los formularios.
•

- Deliberadamente se introducen datos incorrectos o posiblemente inesperados.

•
•
•
•
•
•

* Letras donde solo números son esperados.
* Caracteres de significado especial en sentencias SQL, en especial, comillas.
* Texto de longitudes no esperadas. ( Nombre de 500 caracteres? )
* Límites impuestos en el formulario localmente pueden ser excedidos con cURL.

- Esperamos errores SQL incorrectamente mostrados junto con el HTML, esto puede
•
darnos una idea del esquema de la base de datos o de la forma en que los datos del
•
formulario están siendo usados.
•

- Usar la información obtenida para intentar inyectar SQL.

•
SQL Injection
Formas de Protección
•

- Validar TODOS los datos que ingresan a la base de datos.

•

- No confiar en datos externos. Los datos externos más comunes son:

•
•
•

•

* HTTP/GET
* HTTP/POST
* FileSystem
- Estos datos no son confiables, ningún usuario es confiable.

•
•

- register_globals = off, pero eso todo mundo lo sabe, correcto?

•

- Usa mysql_escape_string, pg_escape_string y similares..

•

- Si es posible, utiliza PDO ( PHP Data Objects ) y prepared statements.
9
Code Injection
Qué es?
- Similar al SQL injection, pero más poderoso, el objetivo es ejecutar código
•
arbitrario.
•

- La causa es la incorrecta validación de datos que pueden provenir de fuentes no
•
confiables.
•

- Uno de los ataques más conocidos se basa en una funcionalidad de PHP
•
configurada mediante la directiva allow_url_fopen y allow_url_include.
•

- Archivos incluidos con include(), include_once(), require_once() son ejecutados
•
por el intérprete de PHP.
•

10
Code Injection
Cómo funciona un ataque?
•

- Se busca la entrada de datos que alimenta la inclusión de un archivo.

- Una vez encontrado, se alimenta la inclusión del archivo con un script que
•
contenga el código que se desea ejecutar.
•

- Debido a que el código será evaluado en el servidor de la víctima, se adquiere
•
control completo sobre la aplicación pudiendo inclusive comprometer el servidor.
•

•

- Otro tipo de ataque puede basarse en el constructor de php eval().

11
Code Injection
Formas de Protección

- allow_url_fopen = off en php.ini puede ayudar, sin embargo muchas aplicaciones
•
actuales confian en tener esta directiva habilitada.
•

- A partir de php 5.2, la directiva allow_url_include fué incluida como una solución
•
al problema que presentaba allow_url_fopen = off.
•

•

- Validar todos los datos utilizados para incluir y ejecutar archivos.

12
Session Hijacking
Qué es?
- Es el término utilizado para referirse a un tipo de ataque web en la que el
•
atacante logra personificarse ante la aplicación web como un usuario que ya
•
ha iniciado una sesión.
•

•
•

- Las aplicaciones web son mas vulnerables debido a que dependen de HTTP,
un protocolo sin conciencia de la existencia de sesiones.

- HTTP es también un protocolo textual y sin protección alguna de los datos
•
transmitidos. Cualquier dato puede ser expuesto mediante sniffers como
•
tcpdump y ethereal.
•

- Las aplicaciones web usan un session id para identificar una sesión iniciada.
•
Esto significa que el session id tiene que ser enviado en cada request del
•
cliente.
•

- El session id es el objetivo principal de un atacante. Si el session id es conocido,
•
es muy probable que la sesión pueda ser comprometida.
13
•
Session Hijacking
- Flujo del establecimiento de una sesión web con cookies

14
Session Hijacking
Cómo funciona un ataque?
•

- Para secuestrar una sesión se requiere conocer el session id (sessid)

•

- El session id es transmitido usando cookies o por la URL de las páginas web.

•

- 3 formas comunes de obtener el sessid son:

•
•
•

* Fuerza Bruta
* Intercepción
* Fixation ( pre-establecimiento de la sesión )

- Fuerza bruta requiere de enviar HTTP request al sitio web con diferentes
•
sessid's. Algunos de estos sessids pueden ser obtenidos del directorio /tmp
•
de un hosting compartido.
•

- La intercepción requiere que el atacante se encuentre en el mismo segmento
•
de red que la víctima, o en algún punto por el que los paquetes TCP de la víctima
•
sean ruteados.
15
•
Session Hijacking
Cómo funciona un ataque?
- El pre-establecimiento del sessid requiere de cierta confianza o ingenuidad
•
de parte de la víctima ( factores comunmente encontrados )
•

- Sniffear el tráfico web de la red en la que se encuentra la víctima.

•

- Es posible usar ARP spoofing para obligar al switch o al usuario a que sus
paquetes pasen por la máquina del atacante.

•
•

- Una vez que el sessid es conocido solo resta hacer un request HTTP con el
•
sessid obtenido.
•

- El conocimiento del sessid suele ser suficiente para tomar el control de la
•
sesión, sin embargo otras protecciones pueden existir.
•

- Además de obtener el sessid, puede ser requerido conocer algunos datos de
•
la víctima, como su direcciòn IP.
•

16
Session Hijacking
Formas de Protección
- El pre-establecimiento de sesión puede evitarse habilitando PHP para sólo
•
usar cookies para la sesión y no aceptarlas por URL.
•

•

- Siempre crear un nuevo session id al recibir los datos de autenticación.

- Todas las sesiones deben tener un tiempo de expiración por inactividad y
•
absoluto.
•

- La intercepción puede ser evitada utilizando HTTPS ( SSL ) para la conexiones
•
que requieran ser seguras.
•

- Los ataques de fuerza bruta y otros ataques basados en el conocimiento de un
universo de sessid's pueden ser protegidos guardando los sessid's en una base
•
de datos utilizando session_set_save_handler().
•
•

•

- Para protección extra se puede crear el session id de acuerdo a la dirección
•
IP o algún otro dato proveniente del cliente de forma que desde otra dirección
•
IP o cliente no se pueda utilizar el mismo session id.
17
•

•
More people are killed every year by pigs than by sharks,
which shows you how good we are at evaluating risk.
- Bruce Schneier -

Being able to break security doesn't make you a hacker
anymore than being able to hotwire cars makes you an automotive engineer.
- Eric Raymond -

The only truly secure system is one that is powered off, cast in a block of
concrete and sealed in a lead-lined room with armed guards
- Gene Spafford 18
Referencias.
http://www.hardened-php.net/
http://www.php-security.org/
http://blog.php-security.org/
http://www.secunia.com/

19
Gracias.
Moisés Humberto Silva Salmerón
http://www.moythreads.com/
moises.silva@gmail.com
moyhu@mx1.ibm.com

20

Weitere ähnliche Inhalte

Was ist angesagt?

Owasp top 10 2017
Owasp top 10 2017Owasp top 10 2017
Owasp top 10 2017yopablo
 
Owasp top 10 2010 final (spanish)
Owasp top 10   2010 final (spanish)Owasp top 10   2010 final (spanish)
Owasp top 10 2010 final (spanish)Fabio Cerullo
 
Seguridad en Aplicaciones Web
Seguridad en Aplicaciones WebSeguridad en Aplicaciones Web
Seguridad en Aplicaciones Webguest80e1be
 
Seguridad en Aplicaciones Web
Seguridad en Aplicaciones WebSeguridad en Aplicaciones Web
Seguridad en Aplicaciones WebCarlos Fernandez
 
Argentesting 2017 - Proyecto OWASP Top 10
Argentesting 2017 - Proyecto OWASP Top 10Argentesting 2017 - Proyecto OWASP Top 10
Argentesting 2017 - Proyecto OWASP Top 10Argentesting
 
Seguridad Web
Seguridad WebSeguridad Web
Seguridad Webramos866
 
10 riesgos más críticos que deben afrontar las organizaciones sobre sus aplic...
10 riesgos más críticos que deben afrontar las organizaciones sobre sus aplic...10 riesgos más críticos que deben afrontar las organizaciones sobre sus aplic...
10 riesgos más críticos que deben afrontar las organizaciones sobre sus aplic...Internet Security Auditors
 
Seguridad En Base De Datos
Seguridad En Base De DatosSeguridad En Base De Datos
Seguridad En Base De Datosguestb40a1b0
 
Owasp top 10_2007_spanish
Owasp top 10_2007_spanishOwasp top 10_2007_spanish
Owasp top 10_2007_spanishTommy Clive
 
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"Alonso Caballero
 
sistemas de seguridad para desarrollar web
sistemas de seguridad para desarrollar websistemas de seguridad para desarrollar web
sistemas de seguridad para desarrollar webbrenda carolina
 
Hacking web con OWASP
Hacking web con OWASPHacking web con OWASP
Hacking web con OWASPzekivazquez
 
2 - Curso Navegación Segura - Tipos de amenazas asociadas a los navegadores
2 - Curso Navegación Segura - Tipos de amenazas asociadas a los navegadores2 - Curso Navegación Segura - Tipos de amenazas asociadas a los navegadores
2 - Curso Navegación Segura - Tipos de amenazas asociadas a los navegadoresJavier Navarro
 
3 - Curso Navegación Segura - Seguridad y prevención
3 - Curso Navegación Segura - Seguridad y prevención3 - Curso Navegación Segura - Seguridad y prevención
3 - Curso Navegación Segura - Seguridad y prevenciónJavier Navarro
 
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
 
Hackers en los sistemas de las administraciones públicas
Hackers en los sistemas de las administraciones públicasHackers en los sistemas de las administraciones públicas
Hackers en los sistemas de las administraciones públicasSEINHE
 
Webinar Gratuito "Reconocimiento Web"
Webinar Gratuito "Reconocimiento Web"Webinar Gratuito "Reconocimiento Web"
Webinar Gratuito "Reconocimiento Web"Alonso Caballero
 

Was ist angesagt? (20)

Owasp top 10 2017
Owasp top 10 2017Owasp top 10 2017
Owasp top 10 2017
 
Owasp top 10 2010 final (spanish)
Owasp top 10   2010 final (spanish)Owasp top 10   2010 final (spanish)
Owasp top 10 2010 final (spanish)
 
Seguridad en Aplicaciones Web
Seguridad en Aplicaciones WebSeguridad en Aplicaciones Web
Seguridad en Aplicaciones Web
 
Seguridad en Aplicaciones Web
Seguridad en Aplicaciones WebSeguridad en Aplicaciones Web
Seguridad en Aplicaciones Web
 
Argentesting 2017 - Proyecto OWASP Top 10
Argentesting 2017 - Proyecto OWASP Top 10Argentesting 2017 - Proyecto OWASP Top 10
Argentesting 2017 - Proyecto OWASP Top 10
 
Seguridad Web
Seguridad WebSeguridad Web
Seguridad Web
 
10 riesgos más críticos que deben afrontar las organizaciones sobre sus aplic...
10 riesgos más críticos que deben afrontar las organizaciones sobre sus aplic...10 riesgos más críticos que deben afrontar las organizaciones sobre sus aplic...
10 riesgos más críticos que deben afrontar las organizaciones sobre sus aplic...
 
Seguridad En Base De Datos
Seguridad En Base De DatosSeguridad En Base De Datos
Seguridad En Base De Datos
 
Seguridad web
Seguridad webSeguridad web
Seguridad web
 
Owasp top 10_2007_spanish
Owasp top 10_2007_spanishOwasp top 10_2007_spanish
Owasp top 10_2007_spanish
 
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
 
Owasp top ten 2019
Owasp top ten 2019Owasp top ten 2019
Owasp top ten 2019
 
Owasp Top10 Spanish
Owasp Top10 SpanishOwasp Top10 Spanish
Owasp Top10 Spanish
 
sistemas de seguridad para desarrollar web
sistemas de seguridad para desarrollar websistemas de seguridad para desarrollar web
sistemas de seguridad para desarrollar web
 
Hacking web con OWASP
Hacking web con OWASPHacking web con OWASP
Hacking web con OWASP
 
2 - Curso Navegación Segura - Tipos de amenazas asociadas a los navegadores
2 - Curso Navegación Segura - Tipos de amenazas asociadas a los navegadores2 - Curso Navegación Segura - Tipos de amenazas asociadas a los navegadores
2 - Curso Navegación Segura - Tipos de amenazas asociadas a los navegadores
 
3 - Curso Navegación Segura - Seguridad y prevención
3 - Curso Navegación Segura - Seguridad y prevención3 - Curso Navegación Segura - Seguridad y prevención
3 - Curso Navegación Segura - Seguridad y prevención
 
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
 
Hackers en los sistemas de las administraciones públicas
Hackers en los sistemas de las administraciones públicasHackers en los sistemas de las administraciones públicas
Hackers en los sistemas de las administraciones públicas
 
Webinar Gratuito "Reconocimiento Web"
Webinar Gratuito "Reconocimiento Web"Webinar Gratuito "Reconocimiento Web"
Webinar Gratuito "Reconocimiento Web"
 

Ähnlich wie Vulnerabilidades en Aplicaciones Web PHP

Seminario Seguridad con PHP
Seminario Seguridad con PHPSeminario Seguridad con PHP
Seminario Seguridad con PHPNazareno Lorenzo
 
Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)
Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)
Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)Oskar Laguillo
 
Seguridad en Aplicaciones Web y Comercio Electrónico
Seguridad en Aplicaciones Web y Comercio ElectrónicoSeguridad en Aplicaciones Web y Comercio Electrónico
Seguridad en Aplicaciones Web y Comercio ElectrónicoRené Olivo
 
Riesgos de Seguridad
Riesgos de SeguridadRiesgos de Seguridad
Riesgos de Seguridadmaheza3613
 
Webinar: 10 Consejos para Mejorar la Postura de Seguridad de tu Sitio Web
Webinar: 10 Consejos para Mejorar la Postura de Seguridad de tu Sitio WebWebinar: 10 Consejos para Mejorar la Postura de Seguridad de tu Sitio Web
Webinar: 10 Consejos para Mejorar la Postura de Seguridad de tu Sitio WebSucuri
 
Cer tuy capacitaciones2011_v1
Cer tuy capacitaciones2011_v1Cer tuy capacitaciones2011_v1
Cer tuy capacitaciones2011_v1Andrés Gómez
 
Hack & beers lleida seguridad en desarrollo fullstack
Hack & beers lleida   seguridad en desarrollo fullstackHack & beers lleida   seguridad en desarrollo fullstack
Hack & beers lleida seguridad en desarrollo fullstackMarc Pàmpols
 
Summer boot camp sciende umh
Summer boot camp sciende umhSummer boot camp sciende umh
Summer boot camp sciende umhAlejandro Quesada
 
Incorporando la Seguridad de la Información en el Desarrollo de Aplicaciones
Incorporando la Seguridad de la Información en el Desarrollo de AplicacionesIncorporando la Seguridad de la Información en el Desarrollo de Aplicaciones
Incorporando la Seguridad de la Información en el Desarrollo de AplicacionesSoftware Guru
 
Seguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASPSeguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASPMarcos Harasimowicz
 
Seguridad En Base De Datos
Seguridad En Base De DatosSeguridad En Base De Datos
Seguridad En Base De DatosWilliam Suárez
 
Wordpress hardening (Campus Party Mexico 4)
Wordpress hardening (Campus Party Mexico 4)Wordpress hardening (Campus Party Mexico 4)
Wordpress hardening (Campus Party Mexico 4)hecky NeobitsOrg
 
El hacking desde el punto de vista de la seguridad informática
El hacking desde el punto de vista de la seguridad informáticaEl hacking desde el punto de vista de la seguridad informática
El hacking desde el punto de vista de la seguridad informáticaLuis Fernando Aguas Bucheli
 
Webinar - Seguridad en WordPress
Webinar - Seguridad en WordPressWebinar - Seguridad en WordPress
Webinar - Seguridad en WordPressArsys
 
Curso de Práctica Operativa en Investigación. Módulo 5. Internet Security Aud...
Curso de Práctica Operativa en Investigación. Módulo 5. Internet Security Aud...Curso de Práctica Operativa en Investigación. Módulo 5. Internet Security Aud...
Curso de Práctica Operativa en Investigación. Módulo 5. Internet Security Aud...Internet Security Auditors
 
Seguridad informática y de ti
Seguridad informática y de tiSeguridad informática y de ti
Seguridad informática y de tiMario Nizama
 
Desarrollo seguro en NodeJS (OWASP top ten y JWT)
Desarrollo seguro en NodeJS (OWASP top ten y JWT)Desarrollo seguro en NodeJS (OWASP top ten y JWT)
Desarrollo seguro en NodeJS (OWASP top ten y JWT)Raúl Requero García
 

Ähnlich wie Vulnerabilidades en Aplicaciones Web PHP (20)

Seminario Seguridad con PHP
Seminario Seguridad con PHPSeminario Seguridad con PHP
Seminario Seguridad con PHP
 
Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)
Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)
Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)
 
Seguridad en Aplicaciones Web y Comercio Electrónico
Seguridad en Aplicaciones Web y Comercio ElectrónicoSeguridad en Aplicaciones Web y Comercio Electrónico
Seguridad en Aplicaciones Web y Comercio Electrónico
 
Phish and tricks
Phish and tricksPhish and tricks
Phish and tricks
 
Riesgos de Seguridad
Riesgos de SeguridadRiesgos de Seguridad
Riesgos de Seguridad
 
Webinar: 10 Consejos para Mejorar la Postura de Seguridad de tu Sitio Web
Webinar: 10 Consejos para Mejorar la Postura de Seguridad de tu Sitio WebWebinar: 10 Consejos para Mejorar la Postura de Seguridad de tu Sitio Web
Webinar: 10 Consejos para Mejorar la Postura de Seguridad de tu Sitio Web
 
Cer tuy capacitaciones2011_v1
Cer tuy capacitaciones2011_v1Cer tuy capacitaciones2011_v1
Cer tuy capacitaciones2011_v1
 
Hack & beers lleida seguridad en desarrollo fullstack
Hack & beers lleida   seguridad en desarrollo fullstackHack & beers lleida   seguridad en desarrollo fullstack
Hack & beers lleida seguridad en desarrollo fullstack
 
Summer boot camp sciende umh
Summer boot camp sciende umhSummer boot camp sciende umh
Summer boot camp sciende umh
 
Robo desesionesfinal
Robo desesionesfinalRobo desesionesfinal
Robo desesionesfinal
 
Incorporando la Seguridad de la Información en el Desarrollo de Aplicaciones
Incorporando la Seguridad de la Información en el Desarrollo de AplicacionesIncorporando la Seguridad de la Información en el Desarrollo de Aplicaciones
Incorporando la Seguridad de la Información en el Desarrollo de Aplicaciones
 
Seguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASPSeguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASP
 
Seguridad En Base De Datos
Seguridad En Base De DatosSeguridad En Base De Datos
Seguridad En Base De Datos
 
Owasp proyecto
Owasp proyectoOwasp proyecto
Owasp proyecto
 
Wordpress hardening (Campus Party Mexico 4)
Wordpress hardening (Campus Party Mexico 4)Wordpress hardening (Campus Party Mexico 4)
Wordpress hardening (Campus Party Mexico 4)
 
El hacking desde el punto de vista de la seguridad informática
El hacking desde el punto de vista de la seguridad informáticaEl hacking desde el punto de vista de la seguridad informática
El hacking desde el punto de vista de la seguridad informática
 
Webinar - Seguridad en WordPress
Webinar - Seguridad en WordPressWebinar - Seguridad en WordPress
Webinar - Seguridad en WordPress
 
Curso de Práctica Operativa en Investigación. Módulo 5. Internet Security Aud...
Curso de Práctica Operativa en Investigación. Módulo 5. Internet Security Aud...Curso de Práctica Operativa en Investigación. Módulo 5. Internet Security Aud...
Curso de Práctica Operativa en Investigación. Módulo 5. Internet Security Aud...
 
Seguridad informática y de ti
Seguridad informática y de tiSeguridad informática y de ti
Seguridad informática y de ti
 
Desarrollo seguro en NodeJS (OWASP top ten y JWT)
Desarrollo seguro en NodeJS (OWASP top ten y JWT)Desarrollo seguro en NodeJS (OWASP top ten y JWT)
Desarrollo seguro en NodeJS (OWASP top ten y JWT)
 

Mehr von Moises Silva

FreeSWITCH Monitoring
FreeSWITCH MonitoringFreeSWITCH Monitoring
FreeSWITCH MonitoringMoises Silva
 
Scaling FreeSWITCH Performance
Scaling FreeSWITCH PerformanceScaling FreeSWITCH Performance
Scaling FreeSWITCH PerformanceMoises Silva
 
Interfaces de Scripting para librerias en C
Interfaces de Scripting para librerias en CInterfaces de Scripting para librerias en C
Interfaces de Scripting para librerias en CMoises Silva
 
Manejo de Medios en FreeSWITCH
Manejo de Medios en FreeSWITCHManejo de Medios en FreeSWITCH
Manejo de Medios en FreeSWITCHMoises Silva
 
Implementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskImplementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskMoises Silva
 
SIP Testing with FreeSWITCH
SIP Testing with FreeSWITCHSIP Testing with FreeSWITCH
SIP Testing with FreeSWITCHMoises Silva
 
FreeSWITCH Modules for Asterisk Developers
FreeSWITCH Modules for Asterisk DevelopersFreeSWITCH Modules for Asterisk Developers
FreeSWITCH Modules for Asterisk DevelopersMoises Silva
 
FreeSWITCH: Asterisk con Esteroides
FreeSWITCH: Asterisk con EsteroidesFreeSWITCH: Asterisk con Esteroides
FreeSWITCH: Asterisk con EsteroidesMoises Silva
 
Negociacion de Codecs en Asterisk
Negociacion de Codecs en AsteriskNegociacion de Codecs en Asterisk
Negociacion de Codecs en AsteriskMoises Silva
 
Sangoma en el Ecosistema Open Source
Sangoma en el Ecosistema Open SourceSangoma en el Ecosistema Open Source
Sangoma en el Ecosistema Open SourceMoises Silva
 
Media Handling in FreeSWITCH
Media Handling in FreeSWITCHMedia Handling in FreeSWITCH
Media Handling in FreeSWITCHMoises Silva
 
FreeTDM PRI Passive Recording
FreeTDM PRI Passive RecordingFreeTDM PRI Passive Recording
FreeTDM PRI Passive RecordingMoises Silva
 
Asterisk PRI Passive Call Recording
Asterisk PRI Passive Call RecordingAsterisk PRI Passive Call Recording
Asterisk PRI Passive Call RecordingMoises Silva
 
OpenR2 in Asterisk
OpenR2 in AsteriskOpenR2 in Asterisk
OpenR2 in AsteriskMoises Silva
 
FreeSWITCH as a Kickass SBC
FreeSWITCH as a Kickass SBCFreeSWITCH as a Kickass SBC
FreeSWITCH as a Kickass SBCMoises Silva
 

Mehr von Moises Silva (15)

FreeSWITCH Monitoring
FreeSWITCH MonitoringFreeSWITCH Monitoring
FreeSWITCH Monitoring
 
Scaling FreeSWITCH Performance
Scaling FreeSWITCH PerformanceScaling FreeSWITCH Performance
Scaling FreeSWITCH Performance
 
Interfaces de Scripting para librerias en C
Interfaces de Scripting para librerias en CInterfaces de Scripting para librerias en C
Interfaces de Scripting para librerias en C
 
Manejo de Medios en FreeSWITCH
Manejo de Medios en FreeSWITCHManejo de Medios en FreeSWITCH
Manejo de Medios en FreeSWITCH
 
Implementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskImplementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in Asterisk
 
SIP Testing with FreeSWITCH
SIP Testing with FreeSWITCHSIP Testing with FreeSWITCH
SIP Testing with FreeSWITCH
 
FreeSWITCH Modules for Asterisk Developers
FreeSWITCH Modules for Asterisk DevelopersFreeSWITCH Modules for Asterisk Developers
FreeSWITCH Modules for Asterisk Developers
 
FreeSWITCH: Asterisk con Esteroides
FreeSWITCH: Asterisk con EsteroidesFreeSWITCH: Asterisk con Esteroides
FreeSWITCH: Asterisk con Esteroides
 
Negociacion de Codecs en Asterisk
Negociacion de Codecs en AsteriskNegociacion de Codecs en Asterisk
Negociacion de Codecs en Asterisk
 
Sangoma en el Ecosistema Open Source
Sangoma en el Ecosistema Open SourceSangoma en el Ecosistema Open Source
Sangoma en el Ecosistema Open Source
 
Media Handling in FreeSWITCH
Media Handling in FreeSWITCHMedia Handling in FreeSWITCH
Media Handling in FreeSWITCH
 
FreeTDM PRI Passive Recording
FreeTDM PRI Passive RecordingFreeTDM PRI Passive Recording
FreeTDM PRI Passive Recording
 
Asterisk PRI Passive Call Recording
Asterisk PRI Passive Call RecordingAsterisk PRI Passive Call Recording
Asterisk PRI Passive Call Recording
 
OpenR2 in Asterisk
OpenR2 in AsteriskOpenR2 in Asterisk
OpenR2 in Asterisk
 
FreeSWITCH as a Kickass SBC
FreeSWITCH as a Kickass SBCFreeSWITCH as a Kickass SBC
FreeSWITCH as a Kickass SBC
 

Vulnerabilidades en Aplicaciones Web PHP

  • 1. Vulnerabilidades en Aplicaciones Web PHP Moisés H. Silva CIISA 2007 “ You can't consider the problem of defense without first understanding the problem of attack ” - Doug Tygar - 1
  • 2. Agenda 1. Vulnerabilidades en PHP 2. SQL Injection * PHP, lenguaje inseguro? * Qué es? * Estadísticas * Cómo Atacar? * Cómo Protegerme? 3. Code Injection 4. Session Hijacking * Qué es? * Qué es? * Cómo Atacar? * Cómo Atacar? * Cómo Protegerme? * Cómo Protegerme? 2
  • 3. PHP, Lenguaje Inseguro? • - Poder, Versatilidad y Facilidad son una fórmula para la inseguridad. • • - PHP ha crecido de forma desorganizada. • - Zend está intentando poner un orden, PHP5 es un gran paso. - La seguridad de un lenguaje de programación es inversamente proporcional a • la cantidad de responsabilidad delegada al programador. • • - Sólo un programador debería escribir programas , PHP se lo permite a otros. 3
  • 4. Estadísticas - Crecimiento de PHP Fuente: http://www.netcraft.com/Survey/ 4
  • 5. - Servicios de red más usados Fuente: http://www.securityseer.com/ 5
  • 6. - Top 10 de vulnerabilidades web Fuente: http://www.owasp.org/ 6
  • 7. SQL Injection Qué es? - SQL injection es el término usado para la introducción de datos en una aplicación • con la intención de ejecutar sentencias SQL para las que el sistema no fué diseñado • y/o para las cuales el usuario no tiene privilegios. • - Cualquier aplicación que haga uso de datos externos para crear consultas SQL • puede ser vulnerable sin importar el lenguaje en el que se encuentre escrita. • • • • • • - Las aplicaciones web son más vulnerables debido a: * La mayoría de los sitios web tienen al menos 1 base de datos. * Anonimato del atacante y miles de aplicaciones online. * Ejecución remota y automatizada de ataques. * Aplicaciones de comercio online ( objetivo: tarjetas de crédito ). 7
  • 8. SQL Injection Cómo funciona un ataque? - Se buscan los puntos de entrada de datos de la aplicación. En web, usualmente • los formularios. • - Deliberadamente se introducen datos incorrectos o posiblemente inesperados. • • • • • • * Letras donde solo números son esperados. * Caracteres de significado especial en sentencias SQL, en especial, comillas. * Texto de longitudes no esperadas. ( Nombre de 500 caracteres? ) * Límites impuestos en el formulario localmente pueden ser excedidos con cURL. - Esperamos errores SQL incorrectamente mostrados junto con el HTML, esto puede • darnos una idea del esquema de la base de datos o de la forma en que los datos del • formulario están siendo usados. • - Usar la información obtenida para intentar inyectar SQL. •
  • 9. SQL Injection Formas de Protección • - Validar TODOS los datos que ingresan a la base de datos. • - No confiar en datos externos. Los datos externos más comunes son: • • • • * HTTP/GET * HTTP/POST * FileSystem - Estos datos no son confiables, ningún usuario es confiable. • • - register_globals = off, pero eso todo mundo lo sabe, correcto? • - Usa mysql_escape_string, pg_escape_string y similares.. • - Si es posible, utiliza PDO ( PHP Data Objects ) y prepared statements. 9
  • 10. Code Injection Qué es? - Similar al SQL injection, pero más poderoso, el objetivo es ejecutar código • arbitrario. • - La causa es la incorrecta validación de datos que pueden provenir de fuentes no • confiables. • - Uno de los ataques más conocidos se basa en una funcionalidad de PHP • configurada mediante la directiva allow_url_fopen y allow_url_include. • - Archivos incluidos con include(), include_once(), require_once() son ejecutados • por el intérprete de PHP. • 10
  • 11. Code Injection Cómo funciona un ataque? • - Se busca la entrada de datos que alimenta la inclusión de un archivo. - Una vez encontrado, se alimenta la inclusión del archivo con un script que • contenga el código que se desea ejecutar. • - Debido a que el código será evaluado en el servidor de la víctima, se adquiere • control completo sobre la aplicación pudiendo inclusive comprometer el servidor. • • - Otro tipo de ataque puede basarse en el constructor de php eval(). 11
  • 12. Code Injection Formas de Protección - allow_url_fopen = off en php.ini puede ayudar, sin embargo muchas aplicaciones • actuales confian en tener esta directiva habilitada. • - A partir de php 5.2, la directiva allow_url_include fué incluida como una solución • al problema que presentaba allow_url_fopen = off. • • - Validar todos los datos utilizados para incluir y ejecutar archivos. 12
  • 13. Session Hijacking Qué es? - Es el término utilizado para referirse a un tipo de ataque web en la que el • atacante logra personificarse ante la aplicación web como un usuario que ya • ha iniciado una sesión. • • • - Las aplicaciones web son mas vulnerables debido a que dependen de HTTP, un protocolo sin conciencia de la existencia de sesiones. - HTTP es también un protocolo textual y sin protección alguna de los datos • transmitidos. Cualquier dato puede ser expuesto mediante sniffers como • tcpdump y ethereal. • - Las aplicaciones web usan un session id para identificar una sesión iniciada. • Esto significa que el session id tiene que ser enviado en cada request del • cliente. • - El session id es el objetivo principal de un atacante. Si el session id es conocido, • es muy probable que la sesión pueda ser comprometida. 13 •
  • 14. Session Hijacking - Flujo del establecimiento de una sesión web con cookies 14
  • 15. Session Hijacking Cómo funciona un ataque? • - Para secuestrar una sesión se requiere conocer el session id (sessid) • - El session id es transmitido usando cookies o por la URL de las páginas web. • - 3 formas comunes de obtener el sessid son: • • • * Fuerza Bruta * Intercepción * Fixation ( pre-establecimiento de la sesión ) - Fuerza bruta requiere de enviar HTTP request al sitio web con diferentes • sessid's. Algunos de estos sessids pueden ser obtenidos del directorio /tmp • de un hosting compartido. • - La intercepción requiere que el atacante se encuentre en el mismo segmento • de red que la víctima, o en algún punto por el que los paquetes TCP de la víctima • sean ruteados. 15 •
  • 16. Session Hijacking Cómo funciona un ataque? - El pre-establecimiento del sessid requiere de cierta confianza o ingenuidad • de parte de la víctima ( factores comunmente encontrados ) • - Sniffear el tráfico web de la red en la que se encuentra la víctima. • - Es posible usar ARP spoofing para obligar al switch o al usuario a que sus paquetes pasen por la máquina del atacante. • • - Una vez que el sessid es conocido solo resta hacer un request HTTP con el • sessid obtenido. • - El conocimiento del sessid suele ser suficiente para tomar el control de la • sesión, sin embargo otras protecciones pueden existir. • - Además de obtener el sessid, puede ser requerido conocer algunos datos de • la víctima, como su direcciòn IP. • 16
  • 17. Session Hijacking Formas de Protección - El pre-establecimiento de sesión puede evitarse habilitando PHP para sólo • usar cookies para la sesión y no aceptarlas por URL. • • - Siempre crear un nuevo session id al recibir los datos de autenticación. - Todas las sesiones deben tener un tiempo de expiración por inactividad y • absoluto. • - La intercepción puede ser evitada utilizando HTTPS ( SSL ) para la conexiones • que requieran ser seguras. • - Los ataques de fuerza bruta y otros ataques basados en el conocimiento de un universo de sessid's pueden ser protegidos guardando los sessid's en una base • de datos utilizando session_set_save_handler(). • • • - Para protección extra se puede crear el session id de acuerdo a la dirección • IP o algún otro dato proveniente del cliente de forma que desde otra dirección • IP o cliente no se pueda utilizar el mismo session id. 17 • •
  • 18. More people are killed every year by pigs than by sharks, which shows you how good we are at evaluating risk. - Bruce Schneier - Being able to break security doesn't make you a hacker anymore than being able to hotwire cars makes you an automotive engineer. - Eric Raymond - The only truly secure system is one that is powered off, cast in a block of concrete and sealed in a lead-lined room with armed guards - Gene Spafford 18
  • 20. Gracias. Moisés Humberto Silva Salmerón http://www.moythreads.com/ moises.silva@gmail.com moyhu@mx1.ibm.com 20