36
www.sgcampus.com.mx @sgcampus Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica “Exposición de vulnerabilidades web 2.0 + Semántica y como solucionarlas base -Proceso Ingeniería de software orientada a metodologías [agiles - Samm] para grupos de trabajo que desarrollan en plataforma web [OpenSource] con seguridad informática [OWASP Ethical Hacker].

Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

Embed Size (px)

DESCRIPTION

En esta sesión de Lunch and Learn se revisaran ejemplos de vulnerabilidades web 2.0 + Semántica y como solucionarlas en base a un Proceso de Ingeniería de software orientada a metodologías [agiles – Samm] para grupos de trabajo que desarrollan en plataforma web [OpenSource] con seguridad informática [OWASP Ethical Hacker].

Citation preview

Page 1: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

“Exposición de vulnerabilidades web 2.0 + Semántica y como

solucionarlas base -Proceso Ingeniería de software orientada a

metodologías [agiles - Samm] para grupos de trabajo que

desarrollan en plataforma web [OpenSource] con seguridad

informática [OWASP Ethical Hacker].”

Page 2: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Page 3: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Contexto | Web 2.0

• Rich Internet Applications (RIA) - AJAX (asíncrona).

• Web Services, Rest-Full, JSON • Colaboración - Comunidades (emisión y

recepción de contenido distintas fuentes)

• Aplicaciones orientadas a Objetos XmlHttpRequest ( Funciones JavaScripts - XML)

wikis, rss, feeds, blogs, mashups y servicios interactivos.

Page 4: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Contexto | Web Semántica

Page 5: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Contexto

Antecedente: Top ATTack Web [2013]

Page 6: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

http://map.ipviking.com/ Contexto

Page 7: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

¿Qué son los riesgos de seguridad en aplicaciones? Los atacantes pueden potencialmente usar muchas diferentes rutas a través de su aplicación para causar daño en su negocio u organización. Cada una de estas rutas representa un riesgo que puede, o no, ser lo suficientemente serio como para merecer atención.

A veces, estas rutas son triviales de encontrar y explotar y a veces son extremadamente difíciles. De manera similar, el daño causado puede ir de ninguno hasta incluso sacarlo del negocio. Para determinar el riesgo para su organización, puede evaluar la probabilidad asociada con cada agente de amenaza, vector de ataque y debilidad de seguridad y combinarla con una estimación del impacto técnico y de negocios en su organización. Juntos, estos factores determinan el riesgo total.

Contexto

Page 8: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Browser Vulnerabilities 2013 - 2014

Plug-In Vulnerabilities Adobe Acrobat Reader 68 Adobe Flash 56 Active X 54 Apple QuickTime 13 Firefox Extension 0 Oracle Sun Java 184 Total 375

Page 9: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Contexto

Page 10: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Eventualidades

Page 11: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Tipos de Vulnerabilidades | Top 10 Norma OWASP 2013

Inyección de código [Sql Injection]

Pérdida de Autenticación y Gestión de Sesiones [Broken Authentication and

Session Management]

Secuencia de Comandos en Sitios Cruzados [Cross-Site Scripting (XSS)]

Referencia Directa Insegura a Objetos [Insecure Direct Object References]

Configuración Defectuosa de Seguridad [Security Misconfiguration]

Exposición de datos Sensibles [Sensitive Data Exposure]

Funcionalidad Limitada para Niveles de Control de Acceso [Missing Function

Level Access Control]

Falsificación de Peticiones en Sitios Cruzados [Cross-Site Request Forgery

(CSRF)]

Uso de Componentes vulnerables [Using Known Vulnerable Components]

Redirecciones y reenvíos no validados [Unvalidated Redirects and Forwards]

Page 12: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

OWASP | Inyección de código [Sql Injection]

Page 13: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

URL http://___:80/__/___/Paginas/CaracterizacionProductos.aspx?idProducto=279%09and% 091%09%3c%09(select%09case%09when%091%3d1%09then%09(select%09CHECKSUM_AGG(c1.id)% 09from%09syscolumns%09c1%2c%09syscolumns%09c2%2c%09syscolumns%09c3%2c%09syscolumns% 09c4%2c%09syscolumns%09c5%09where%09c1.id%3dc2.id%09and%09c2.id%3dc3.id%09and%09c4.id% 3dc3.id%09and%09c5.id%3dc4.id)%09else%090%09end)

Parametro: idProducto Request: GET /__/__/Paginas/CaracterizacionProductos.aspx?idProducto= 279%09and%091%09%3c%09(select%09case%09when%091%3d1%09then%09(select% 09CHECKSUM_AGG(c1.id)%09from%09syscolumns%09c1%2c%09syscolumns%09c2%2c% 09syscolumns%09c3%2c%09syscolumns%09c4%2c%09syscolumns%09c5%09where%09c1.id% 3dc2.id%09and%09c2.id%3dc3.id%09and%09c4.id%3dc3.id%09and%09c5.id%3dc4.id)% 09else%090%09end) HTTP/1.1

Ejemplo | Inyección de código [Sql Injection]

Page 14: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

http://__:7016/__/programas/archivo_excel.jsp?clave=char%2839%29%2b%28SELECT&variable=* Parámetro: clave Request: GET /__/__/programas/archivo_excel.jsp?clave=char%2839%29%2b%28SELECT&variable=* HTTP/1.1 Referer: http://__:...TRUNCATED... Response: HTTP/1.1 500 Internal Server Error Connection: close Date: Tue, 12 Aug 2014 13:28:10 GMT Content-Length: 3219 Content-Type: text/html; charset=UTF-8 X-Powered-By: Servlet/3.0 JSP/2.2 ...TRUNCATED...urier New"><pre>weblogic.jdbc.extensions.PoolLimit SQLException:weblogic.common.resourcepool.ResourceLimitExcept...TRUNCATED...

Ejemplo | Inyección de código [Sql Injection]

Page 15: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

API de seguridad [“white list”] que valide los siguientes caracteres

' or " Caracteres – Indicadores String

-- or # Comentarios tipo single-line

/*…*/ Comentarios tipo multiple-line

+ Conector adicional (por espacio en la url)

|| Conector tipo (double pipe)

% Atributo de indicador - wildcard

?Param1=foo&Param2=bar Parámetros en la url

PRINT Comando Transaccional (non)

@variable Variable Local

@@variable Variable Global

waitfor delay '0:0:10‘ Opciones de Time-Delay

Mitigar | Inyección de código [Sql Injection]

Page 16: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

OWASP | Secuencia de Comandos en Sitios Cruzados [Cross-Site Scripting (XSS)]

Page 17: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Ejemplo | Secuencia de Comandos en Sitios Cruzados [Cross-Site Scripting (XSS)]

url http://__:7015/__/validaAcceso.jsp?persona=oswaldo.diaz%3c%73%43%72%49%70% 54%3e%61%6c%65%72%74%28%38%38%33%35%37%29%3c%2f%73%43%72%49%70%54%3e&palabra=Pipe2375&min=12:8 Parametro: persona Datos en el post: persona=&palabra= Request: POST /siContabilidad/validaAcceso.jsp?persona= oswaldo.diaz%3c%73%43%72%49%70%54%3e%61%6c%65%72%74%28%38%38%33%35%37%29%3c% 2f%73%43%72%49%70%54%3e&palabra=Pipe2375&min=12:8 HTTP/1.1 Accept: image...TRUNCATED... Response: HTTP/1.1 200 OK Date: Fri, 04 Jul 2014 17:56:39 GMT Content-Length: 512 Content-Type: text/html; charset=UTF-8 X-Powered-By: Servlet/3.0 JSP/2.2 ...TRUNCATED...ci&oacute;n de usuario en el sistema [oswaldo.diaz <sCrIpT>alert(Adivina quien soy)</sCrIpT>] </form> </body> </html>

Page 18: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Ejemplo | Secuencia de Comandos en Sitios Cruzados [Cross-Site Scripting (XSS)]

http://__:80/default_map/query?request=Json&var=geeServerDefs<iMg/SrC=""oNeRrOr=alert(Adivina quien soy)> Request: GET /default_map/query?request=Json&var=geeServerDefs<iMg/SrC=""oNeRrOr=alert(57833)> HTTP/1.1 Referer: http://__...TRUNCATED... Response: HTTP/1.1 200 OK Date: Wed, 25 Jun 2014 13:46:41 GMT Server: Apache Expires: 0 Cache-Control: no-cache Last-Modified: Sat, 01 Jan 2000 12:00:00 GMT Content-Length: 7833 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/javascript var geeServerDefs<iMg/SrC=""oNeRrOr=alert(Adivina quien soy)> = { isAuthenticated : false, layers : [ { icon :...TRUNCATED...

Page 19: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Mitigar | Secuencia de Comandos en Sitios Cruzados [Cross-Site Scripting (XSS)]

Para evitar esta eventualidad es necesario la separación de los datos no confiables de contenido activo en el navegador. Validar las variables de [escape] correctamente en el contexto HTML (cuerpo, atributo, JavaScript, CSS, o URL), como lo muestra la siguiente tabla: Hay que tomar en cuenta la validación de entrada de los datos [white list], en la cual se validan caracteres especiales que no permitan la inserción de código malicioso o información irrelevante para el sistema, validar la longitud, el formato y las reglas de negocio de los datos antes de aceptar la entrada.

Tipo de

dato

Contexto Ejemplo de código

String HTML Body <span> Datos no confiables </span>

String Atributos HTML <input type="text" name="fname" value="Datos no confiables">

String Parámetros tipo GET <a href="/site/search?value= Datos no confiables ">clic</a>

String URL, SRC o HREF atributos

no confiables

<a href=" Datos no confiables ">clic</a>

<iframe src=" Datos no confiables " />

String Validaciones CSS <div style="width: Datos no confiables;">Selección</div>

String Variables JavaScript <script>var currentValue=' Datos no confiables ';</script>

<script>algunaFunction(' Datos no confiables ');</script>

HTML HTML Body <div>HTML no confiable</div>

String DOM XSS <script>document.write("Datos no confiables INPUT: " +

document.location.hash);<script/>

Page 20: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Mitigando [SQL injection + Cross-Site Scripting]

Parámetrizar Queries

Secuencias de escape

Admon. [Quotes]

Evitar [Dynamic SQL]

Remover [Functions] sin usar

Desactivar [Active

Scripting]

Usar [HTML5, CSS3]

Encode

Input Validation Error Handling Least Privilege

Entrenamiento, Conciencia, Educación [CIO-TeamDeveloper]

Ciclo de Vida – Seguridad – [Development]

Políticas, Estándares y Mejores Practicas [Coding Standards]

Page 21: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

OWASP | Configuración Defectuosa de Seguridad [Security Misconfiguration]

url http://__:80/_/default.aspx Request: GET /default.aspx HTTP/1.1 Accept: image/jpeg, image/gif, image/pjpeg, application/x-ms-application, User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E) Response: HTTP/1.1 200 OK Cache-Control: private Content-Type: text/html; charset=Windows-1252 Vary: Accept-Encoding Server: Microsoft-IIS/7.5 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Mon, 26 May 2014 19:35:15 GMT Content-Length: 15287 ...TRUNCATED...rce=10.1.37.X,49777;Initial catalog=CuadrosEstTema;User id=CuadrosEstTema.consulta;Pwd=ConCua31;" /> <input type="hidden" name="Lc_sq...TRUNCATED...

Page 22: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Mitigar | Configuración Defectuosa de Seguridad [Security Misconfiguration]

.NET JAVA try {

System.out.println(" Argumento ");

out = new PrintWriter(new

FileWriter(“Bitacora.xml"));

……

} catch (Exception e) {

System.err.println("Ocurrió un error!”);

} catch (IOException e) {

System.err.println("insertar excepción");

} finally {

if (out != null) {

out.close();

}

}

public class ___ {

public static void Main() {

try {

StreamReader sr =

File.OpenText(“Bitacora.xml");

Console.WriteLine("Reading

line {0}", sr.ReadLine());

}

catch(Exception e) {

Console.WriteLine("Ocurrió

un error”);

logerror(“Tipo de error: “, e);

}

}

}

El seudocódigo muestra una validación simple para atrapar eventualidades y controlar la

información que se le presenta al usuario final

Page 23: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Mitigar | Configuración Defectuosa de Seguridad [Security Misconfiguration]

http://www.w3schools.com/tags/ref_httpmessages.asp

HTTP Protocol ErrorCodes

Http CustomErrors 404, 403 y 500 <customErrors mode="RemoteOnly" defaultRedirect="AppErrors.aspx"> <error statusCode="404" redirect="NoSuchPage.aspx"/> <error statusCode="403" redirect="NoAccessAllowed.aspx"/> <error statusCode="500" redirect="RequestNotAllowed.aspx"/> </customErrors>

Page 24: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

OWASP | Falsificación de Peticiones en Sitios Cruzados [Cross-Site Request Forgery (CSRF)]

Page 25: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Mitigar | Falsificación de Peticiones en Sitios Cruzados [Cross-Site Request Forgery (CSRF)]

Hay que verificar los vínculos y formas que carecen de un

“token”, así como también forzar a que el usuario final

demuestre que es humano y no un robot de ataque a este

concepto se les llama [CAPTCHA - Completely Automated Public Turing

test to tell Computers and Humans Apart (Prueba de Turing pública y

automática para diferenciar máquinas y humanos)]

http://www.google.com/recaptcha

Page 26: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Mitigar | Falsificación de Peticiones en Sitios Cruzados [Cross-Site Request Forgery (CSRF)]

public CaptchaHelper VerifyCaptcha() { try { using (var wb = new WebClient()) { var data = new NameValueCollection(); data["privatekey"] = this._privatekey; data["remoteip"] = this.remoteip; data["challenge"] = this.challenge; data["response"] = this.response; var response = wb.UploadValues("http://www.google.com/recaptcha/api/verify", "POST", data); this.result = System.Text.Encoding.UTF8.GetString(response).Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries); } return this; } catch (Exception e) { throw e; }

Page 27: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Vulnerabilidades 2014 [Criticas]

Page 28: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Estrategia - Web Semántica

Page 29: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Estrategia - Web Semántica

Page 30: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Software | Herramientas

Page 31: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

WorkFlow - Agiles

Page 32: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

WorkFlow

Page 33: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

OWASP | SAMM Software Assurance Maturity Model

Gobernanza • Estrategias y Métricas • Políticas y Cumplimientos • Orientación y Educación

Construcción

• Evaluación de amenazas • Requerimientos de seguridad • Arquitectura Segura

Verificación

• Revisión de Diseño • Revisión de Código • Pruebas de Seguridad

Publicación

• Administración de vulnerabilidades • Medio Ambiente (Hardening) • Estrategia en la operación

Secure Development LifeCycles (SDLC)

https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API

Page 34: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

Estrategias de Infraestructura

Page 35: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

1. Pure: Css framework 2. Bootstrap 3 3. YAML 4. IVORY 5. Cascade Framework 6. Cascade Framework Light 7. INK 8. Foundation 5 9. Kube 10.Skeleton

11. Gumby 2 12. Fluidable 13. Metro UI CSS 2.0 14. Less Framework 4 15. KNACSS 16. Groundwork CSS 2 17. Unsemantic 18. Responsive Boilerplate 19. Inuit.css 20. Kickoff

Arquitectura Responsiva

Page 36: Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica

www.sgcampus.com.mx @sgcampus

Mitigando Eventualidades de Seguridad

en Web 2.0 + Semántica

> ¡Preguntas e Investigaciones!

[email protected] : Especialidad ITIL ver. 2, - Investigador + Arquitecto TI, experiencia Ingeniería de Sistemas [740 Proyectos Web (año 2005-2014)], en QA (Quality Assurance) + Risk Management + Seguridad {Ethical Hacking - Web 2.0 + Semántica}.

Agradecimientos de Bibliografía Arbitrada: Owasp.org Symantec.com Google.com w3c.org Ipviking.com Varecode.com

@eOswaldOd