Instalación y uso de URLScan


Esta actividad práctica corresponde a este tema.

Para instalar URLScan simplemente debemos completar el programa de instalación automática que el programa posee y posteriormente ir al IISManager - Sitios Web – Propiedades – Filtros ISAPI y comprobar que el filtro correspondiente a URLScan está activo.

Manejo de URLScan (1)

Para cambiar su configuración, basta con ir al directorio C:\WINDOWS\system32\inetsrv\urlscan (el disco donde Windows esté instalado) y abrir el fichero urlscan.ini. Al hacerlo, veremos esto:

Manejo de URLScan (2)

A modo de prueba, vamos a localizar la entrada “RemoveServerHeader” y ponerla a 1.

Manejo de URLScan (3)

Esta acción hará que el servidor proporcione menos información de sí mismo a los navegadores eliminando la cabecera “Server” de los datos enviados en la petición. Otra opción es dejarlo a 0 y cambiar el nombre del servidor con “AlternateServerName” (en el ejemplo hemos puesto como nombre del servidor “Esto es un servidor pudoroso sonrisa”.

Manejo de URLScan (4)

Para probarlo, reiniciamos IIS (clic derecho sobre el PC – Todas las tareas – Reiniciar IIS) tal y como se ve en la imagen siguiente.

Manejo de URLScan (5)

Reiniciar IIS 6

Para probar el correcto funcionamiento de esto, vamos a hacer una petición desde el cliente XP y ver qué ocurre con Paros. Para verlo adecuadamente, debemos activar “Trap Reponse” y examinar la respuesta que nos captura el proxy.

Manejo de URLScan (6)

Como ya se ha dicho, URLScan tiene bastantes funcionalidades adicionales que podemos consultar en los enlaces anteriormente mencionados. Para terminar con este apartado, veremos cómo colocar un filtro para las peticiones, que es una funcionalidad nueva incorporada en la versión 3.0. Para ello, debemos dar valor a la entrada “RuleList” del fichero urlscan.ini colocando, separados por comas, nombres de reglas que queramos aplicar. Las reglas están formadas por dos elementos:

  • Configuración: Un conjunto de opciones de la forma <nombre>=<valor> que determinan distintos comportamientos acerca de cómo se va a aplicar cada regla. Se identifican por el nombre de la regla entre [ ].
  • Cadenas: Cada regla puede tener un conjunto de cadenas asociado con distintos fines (en el ejemplo, son cadenas a filtrar: Peticiones con estas cadenas no deben admitirse). El nombre del conjunto de cadenas se asigna en el apartado de configuración.

En la siguiente imagen podemos ver como se coloca el filtro dentro del URLScan.ini siguiendo las normas explicadas. Posteriormente se mostrará la configuración completa usada, incluida la totalidad del conjunto de cadenas. El propósito de este filtro URLScan es el de evitar en la medida de lo posible ataques de SQL Injection [1], evitando que peticiones que tengan alguna de las cadenas mostradas sean procesadas por el servidor. En la siguiente imagen vemos como se organizan este tipo de filtros. Cada lista de reglas tiene un nombre asociado y debajo de este nombre se encuentran asociadas unas opciones de configuración acerca de cómo se procesa dicha regla. Debajo de estas opciones podemos encontrar las cadenas que se usan en la regla concreta, que en este caso son sintaxis SQL que debemos filtrar.

Manejo de URLScan (7)

Añadiendo un filtro para ataques de SQL Injection con las nuevas opciones de URLScan 3.0

Filtro URLScan:

Este es el filtro completo que se va a usar en URLScan:

[SQL Injection]
AppliesTo=.ASP,.aspx
DenyDataSection=SQL Injection Strings
ScanUrl=0
ScanAllRaw=0
ScanQueryString=1
ScanHeaders=

[SQL Injection Strings]
--
%3b ; a semicolon
/*
@ ; also catches @@
char ; tambien filtra nchar y varchar
alter
begin
cast
convert
create
cursor
declare
delete
drop
end
exec ; tambien filtra execute
fetch
insert
kill
open
select
sys ; tambien filtra sysobjects y syscolumns
table
update

Por último, cabe destacar que URLScan no admite (en la versión 3.0 actual) expresiones regulares para crear los filtros. Tampoco examina el cuerpo de la petición, sólo la cabecera (header), lo que hace que esta herramienta sea menos potente que herramientas de propósito similar existentes para Apache como mod_security (http://www.modsecurity.org/).



[1] Tipo de ataque donde se le mandan a un programa sentencias SQL potencialmente dañinas que ejecuta sin pretenderlo. Más información: http://www.unixwiz.net/techtips/sql-injection.html

Última modificación: martes, 3 de agosto de 2010, 13:51