PDF de programación - Ataques a Servidores Web

Imágen de pdf Ataques a Servidores Web

Ataques a Servidores Webgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 18 de Enero del 2018)
412 visualizaciones desde el 18 de Enero del 2018
987,7 KB
24 paginas
Creado hace 6a (28/05/2014)
28/05/2014

Ataques a Servidores Web

Seguridad en los
Si t
d
Sistemas de
Información

Dra. Maricela Bravo

 Un servidor es un programa que se ejecuta

en computadoras normalmente más
en computadoras normalmente más
poderosas que las computadoras
personales.

 Se ejecuta sobre sistemas operativos que

i



l



t

soportan concurrencia, paralelismo y

multiprogramación, por ejemplo Windows
200x server, o basados en Unix.

li

2

1

a.

b.

c.

d.

Servidor de archivos. Proporciona acceso a sistemas de
archivos distribuidos. Los clientes pueden buscar en
directorios, leer y escribir bloques de archivos, etc.

Servidor de bases de datos. Proporcionan acceso a
uno o más DBMS. Las solicitudes de los clientes se
realizan normalmente mediante lenguaje SQL.

Servidor de aplicaciones. Proporcionan acceso a
procedimientos remotos, mediante la invocación de los
clientes.

Servidor de correo. Ofrece servicio de envío y
recepción de mensajes de correo, así como mensajería
instantánea.

e.

Servidor Web.

 Un servidor Web o demonio HTTP es un

programa que controla el flujo de datos
entrantes y salientes de una computadora
conectada a Intranet e Internet.

 Un servidor Web es un programa de

aplicación que atiende las solicitudes HTTP
realizadas por los navegadores.

 Escucha peticiones en el número de puerto

80, normalmente.

 Los programas de aplicación más difundidos
 Los programas de aplicación más difundidos

para montar un servidor Web son:
› Apache Tomcat


Internet Information Server

3

4

28/05/2014

2

 Es un protocolo de petición/respuesta sin estado

cuya operación básica es la siguiente :
cuya operación básica es la siguiente :

GET/document.html http/1.1

http/1.1 200 OK

Content-Type:text/html

<HTML>…</HTML>

Navegador Web

Servidor Web

5

28/05/2014

3

 Capa de Aplicación

› Aplicaciones estándar

 HTTP
 FTP
FTP
 Telnet

› Aplicaciones de usuario

 Capa de Transporte

› TCP
› UDP
› Interfaces de
programación:
 Sockets

 Capa de Red
 Capa de Enlace

› IP

› Drivers de dispositivos

 TCP/IP Stack

Application

(http, ftp, telnet,…)

Transport

(TCP, UDP,..)

Network

(IP,..)
Link

(device driver,..)

7

 TCP (Transport Control

Protocol)
Protocol)

 Es un protocolo orientado

a conexión que
proporciona un flujo de
datos confiable entre dos
computadoras.

 Ejemplo de aplicaciones:

› HTTP
› HTTP
› FTP
› Telnet

 TCP/IP Stack

Application

(http, ftp, telnet,…)

Transport

(TCP, UDP,..)

Network

(IP,..)
Link

(device driver,..)

8

28/05/2014

4

 UDP (User Datagram

Protocol)
Protocol)

 Es un protocolo que envía

paquetes de datos
independientes, llamados
datagramas, de una
computadora a otra, sin
garantizar su llegada.

 Ejemplo de aplicaciones:

k

Cl

› Clock server
› Ping

 TCP/IP Stack

Application

(http, ftp, telnet,…)

Transport

(TCP, UDP,..)

Network

(IP,..)
Link

(device driver,..)

9

 TCP y UDP utilizan

puertos para enviar
datos entrantes a un
proceso particular
que se esté
ejecutando en la
computadora.

server

P
o
r
t

TCP
TCP

Client

app

app

app

app

port

port
port
TCP or UDP

port

Data

Packet
port# data

10

28/05/2014

5

28/05/2014

 Los puertos son representados por valores

enteros positivos de 16 bits.

 Algunos puertos están reservados para soportar

servicios preestablecidos:
21/TCP
› FTP
› Telnet 23/TCP
› SMTP 25/TCP
› HTTP
› HTTP
80/TCP
80/TCP

 Los procesos o servicios de usuarios

generalmente usan números de puertos >=
1024.

11

 Los sockets proporcionan una interfaz para la

programación de redes en la capa de transporte.
 Las comunicaciones de redes utilizando Sockets es

muy similar al manejo de I/O en archivos.
› De hecho, el manejo de sockets es tratado como el

manejo de archivos.

› Los streams utilizados en operaciones de I/O de archivos

también son aplicables a I/O basado en sockets.

 La comunicación basada en Sockets es

p

independiente del lenguaje de programación.
› Esto es, que un programa de socket escrito en Java

p g

g j

también se puede comunicar con un programa escrito en
Java o con un programa de socket no escrito en Java.

12

6

 Un servidor (programa) corre en una

computadora específica y tiene un socket que
se asocia con un puerto específico. El servidor
se mantiene en espera escuchando al socket
para cuando un cliente realiza una petición de
conexión.

server

p
o
r
t

Connection request

Client

13

 Si todo sale bien, el servidor acepta la conexión. Después

de la aceptación, el servidor obtiene un nuevo socket
asociado a un puerto diferente Necesita un nuevo
asociado a un puerto diferente. Necesita un nuevo
socket (consecuentemente un número de puerto
diferente), de tal forma que puede continuar
escuchando al socket original para solicitudes de
conexión mientras que atiende al cliente conectado.

server

p
o
r
t

port

Connection

t
r
o
p

Client

14

28/05/2014

7

28/05/2014

 Un socket es un endpoint de un enlace de

i

t

d

i

comunicación bi-direccional entre dos programas

ejecutándose en la red.

ió bi di

l

 Un socket se asocia a un número de puerto de tal

forma que la capa de TCP puede identificar la
aplicación a la cual están destinados los datos.
.net proporciona dos clases:

 El paquete de Java .net

› Socket – para implementar un cliente
› ServerSocket – para implementar un servidor.

15

Server
Server

ServerSocket(1234)

Flujo de salida/escritura

Flujo de entrada/lectura

Client
Client

Puede ser un dominio como “mandroo.cs.mu.oz.au”

16

Socket(“128.250.25.158”, 1234)

8

28/05/2014

9

17

TCP service: transferencia confiable de flujos de bytes

client
client

socket( )
bind( )
bind( )
connect( )

send( )

recv( )
close( )

controlled by
application
developer
controlled by
operating
system

process
socket
TCP with
buffers,
variables

TCP conn. request
TCP ACK

Internet

socket( )
bind( )
listen( )

server

accept( )

recv( )

send( )
close( )

process
socket
TCP with
buffers,
variables

18

28/05/2014

Server (running on hostid)

Client

create socket,
port=x for
port=x, for
incoming request:
welcomeSocket =
ServerSocket()

TCP

connection setup

wait for incoming
connection request
connectionSocket =
welcomeSocket.accept()

read request from
read request from
connectionSocket

write reply to
connectionSocket

close
connectionSocket

create socket,
connect to hostid, port=x
clientSocket =
Socket()

send request using
tS k t
clientSocket
li

read reply from
clientSocket

close
clientSocket

19

1. Crear el Server Socket:

p

ServerSocket server;
DataOutputStream os;
DataInputStream is;
server = new ServerSocket( PORT );

2. Espera solicitudes de clientes:

Socket client = server.accept();

3. Crea flujos de I/O para comunicarse con el cliente

is = new DataInputStream( client.getInputStream() );
os = new DataOutputStream( client.getOutputStream() );

4. Realiza comunicación con un cliente

Receive from client: String line = is.readLine();
Send to client: os.writeBytes("Hello\n");

5. Cierra el socket: client.close();

20

10

1. Crear un objeto de Socket:

client = new Socket( server, port_id );

2 Crea flujos de I/O para comunicarse con el servidor
2. Crea flujos de I/O para comunicarse con el servidor.

is = new DataInputStream(client.getInputStream() );
os = new DataOutputStream( client.getOutputStream() );

3. Realiza I/O o comunicación con el server:

› Receive data from the server:
String line = is.readLine();

› Send data to the server:
os.writeBytes("Hello\n");
);
4. Cierra el socket cuando termina:

y

(

client.close();

21

22

import java.net.*;
import java.io.*;

public class SimpleServer
{

public static void main(String args[]) throws IOException
p
{

g [])

p

g

(

// Registrar el servicio en el puerto 1234
// Registrar el servicio en el puerto 1234
ServerSocket s = new ServerSocket(1245);
//Espera y acepta conexiones
//Espera y acepta conexiones
Socket s1 = s.accept();
//Obtiene un flujo de comunicación asociado con el socket
//Obtiene un flujo de comunicación asociado con el socket
OutputStream s1out = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream (s1out);
//Envia un mensaje
//Envia un mensaje
dos.writeUTF("Hola que tal");
//Cierra la conexión, pero no el socket del servidor
//Cierra la conexión, pero no el socket del servidor
dos.close();
s1out.close();
s1.close();

}

}

28/05/2014

11

28/05/2014

import java.net.*;
import java.io.*;

public class SimpleClient
{

public static void main(String args[]) throws IOException
{

//Abrir una conexión al server en el puerto 1234
//Abrir una conexión al server en el puerto 1234
Socket s1 = new Socket("localhost",1245);
//Obtener un manejador de flujo de entrada del socket y leer la entrada
//Obtener un manejador de flujo de entrada del socket y leer la entrada
InputStream s1In = s1.getInputStream();
DataInputStream dis = new DataInputStream(s1In);
String st = new String (dis.readUTF());
System.out.println(st);
//Cerrar la cone ion
//Cerrar la cone ion
//Cerrar la conexion
//Cerrar la conexion
dis.close();
s1In.close();
s1.close();

23

}

}





 Ejecutar Server en el localhost

java SimpleServer

 Ejecutar el Client en cualquier máquina:

Si

j
java SimpleClient
Hola que tal

l Cli

 Si se ejecuta el cliente cuando el server no está escuchando:

java SimpleClient


Exception in thread "main" java.net.ConnectException: Connection refused

at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:320)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:133)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:120)
)
at java.net.Socket.<init>(Socket.java:273)
at java.net.Socket.<init>(Socket.java:100)
at SimpleClient.main(SimpleClient.java:6)

( l

k

k

l

l

l

24

12

 Maneja solamente una petición HTTP
 Acepta y parsea la petición HTTP
 Obtiene el archivo requerido del sistema de
  • Links de descarga
http://lwp-l.com/pdf8369

Comentarios de: Ataques a Servidores Web (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad