Las fugas de archivos, de acuerdo con la sensibilidad de la información filtrada, se pueden considerar como vulnerabilidades de riesgo medio o incluso alto en las vulnerabilidades WEB. Este artículo
presentará algunas fugas comunes, que se dividen principalmente en fugas causadas por software de administración de versiones e inclusiones de archivos. Fugas y fugas causadas por una mala configuración.
Fugas causadas por software de gestión de versiones
git
Se puede decir que Git es el software de control / gestión de versiones más popular en la actualidad. Muchos almacenes de alojamiento en la nube basados en git brindan
servicios de hospedaje gratuitos, y muchos incluso admiten almacenes privados gratuitos, como bitbucket y gitosc doméstico (código abierto China) etc.
Documentos clave
Cuando git inicializa el proyecto, git rev-parse --show-toplevel
creará una .git
carpeta oculta nombrada en el directorio raíz del proyecto (disponible para ver) , que contiene el historial de todas las confirmaciones locales. Si accidentalmente colocas este directorio en la ruta de la WEB, deja que el usuario Se puede acceder,
luego se filtran casi todo el código fuente y otra información sensible.
Contenido filtrado
- Todo el código fuente del proyecto
- La dirección del almacén privado.
- Información de configuración privada
- Toda la información de la cuenta de correo electrónico del viajero
- (Posiblemente) cuenta interna y contraseña
- ...
Cómo utilizar
El método de uso convencional es descargar el directorio completo y luego usar el git
comando para revertir todo el proyecto:
wget -r --no-parent --mirror http://www.example.com/.git
cd www.example.com && git reset --hard
Por supuesto, también hay algunos scripts automatizados:
- dvcs-ripper : herramienta basada en Perl, además de git, también es compatible con muchos sistemas de gestión de versiones
- GitHack
Sugerencias de reparación
Generalmente, los frameworks web modernos basados en MVC no montarán archivos directamente, pero si es un proyecto basado en PHP, ASP y otros lenguajes, aún existirán riesgos de seguridad.
Aunque puede denegar el acceso a la ruta .git configurando el servidor WEB (apache / nginx, etc.), existe el riesgo de que se omita accidentalmente.
La mejor manera es crear un directorio www en el proyecto para almacenar los archivos de código fuente.
hg / Mercurial
Mercurial significa mercurio, por lo que se abrevia como hg (mercurio), y también es un software de administración de versiones. El uso es similar al de git, pero también conserva las características concisas del comando svn
y es compatible de forma nativa con las tres plataformas principales de Windows / MacOS / Linux, a diferencia de Git requiere MinGW para ejecutarse, por lo que muchas personas prefieren usar hg para el control de versiones.
Hay algunas discusiones sobre ellos, como por qué se usa
hg , por qué se elige hg en lugar de git, etc. Creo que también vale la pena entenderlo.
Documentos clave
De forma similar a git, cuando hg inicializa el proyecto, creará una .hg
carpeta oculta nombrada en el directorio raíz del proyecto ,
que contiene los registros de modificación del código y la rama e información relevante del desarrollador.
Contenido filtrado
- El código fuente del proyecto
- Dirección del almacén del proyecto
- (Posiblemente) nombre de usuario del almacén
- otro
Cómo utilizar
Uso manual, descarga + reversión:
wget -r --no-parent --mirror http://www.example.com/.hg
cd www.example.com && hg revert
También puede usar la herramienta dvcs-ripper mencionada anteriormente para usar
Sugerencias de reparación
Igual que git
svn / Subversion
svn , o Subversion, fue una vez una herramienta de administración de versiones actual antes de github. Aunque ha ido disminuyendo, sigue
siendo la herramienta principal para la administración de versiones en muchas empresas estatales, institutos de investigación y otros lugares. Para algunos proyectos con una larga historia, como LLVM, el lanzamiento Por razones históricas,
svn se usa principalmente para administrar el código fuente.
Documentos clave
svn también creará una .svn
carpeta oculta nombrada en el directorio raíz del proyecto , que contiene toda la información de confirmación de la rama y los registros de código.
Contenido filtrado
- Todo el código fuente del proyecto
- dirección del almacén de svn
- El nombre de usuario del usuario al que pertenece el almacén svn
- ...
Cómo utilizar
Lo mismo es descargar el directorio primero y luego retroceder:
wget -r --no-parent --mirror http://www.example.com/.svn
cd www.example.com && svn revert --recursivo.
Herramientas y scripts:
- dvcs-ripper : admite versiones antiguas y nuevas de svn
- Seay-Svn : herramienta de Master, basada en plataforma Windows
Sugerencias de reparación
Igual que git
bzr / Bazar
Bzr también es una herramienta de control de versiones. Aunque no es muy popular, también es compatible con múltiples plataformas y tiene una buena interfaz gráfica.
Por lo tanto, algunas personas piensan que bzr es mejor que git ,
pero para los probadores de penetración, realmente no importa. Arriba.
Documentos clave
Cuando bzr inicializa el proyecto (bzr init / init-repo), generará .bzr
un directorio oculto nombrado en el directorio raíz del proyecto , que también expone el código fuente y la información del usuario.
Contenido filtrado
- Código fuente
- Dirección del almacén
- Información para desarrolladores
- ...
Cómo utilizar
No he usado la herramienta bzr, pero descubrí que puedo usar el bzr revert
comando para retroceder consultando el documento :
wget -r --no-parent --mirror http://www.example.com/.bzr
cd www.example.com && bzr revert
Por supuesto, la herramienta dvcs-ripper también es posible.
Sugerencias de reparación
Igual que git
cvs
CVS es un sistema de control de versiones relativamente antiguo, a través del cual puede rastrear los registros de cambios históricos del código fuente,
pero debido a que las funciones son relativamente simples y no soportan la ramificación, fue reemplazado por el svn mencionado anteriormente hace mucho tiempo.
Documentos clave
Cuando se inicializa el proyecto cvs (cvs checkout project
), se project
crea un directorio llamado CVS
en el directorio,
que guarda los registros de modificación y confirmación de cada archivo. A través de este directorio, puede obtener la versión histórica del código. Los dos archivos clave son: CVS/Root
Y CVS/Entries
, respectivamente, registre la información raíz del proyecto y la estructura de todos los archivos
Contenido filtrado
Debido a que es una herramienta de cliente pura, solo se filtrará el código fuente
Cómo utilizar
Descargue la carpeta CVS y use el comando cvs para obtener la información del código fuente, pero parece que no hay una operación de reversión directa y se requiere algún procesamiento adicional.
wget -r --no-parent --mirror http://www.example.com/CVS
cd www.example.com && cvs diff *
O use la herramienta dvcs-ripper directamente
Sugerencias de reparación
Si todavía está usando CVS, ¿tal vez todavía esté usando perl para escribir cgi? ...
otro
Hay muchas herramientas de gestión de versiones, además de las mencionadas anteriormente, también existen algunas muy conocidas como BitKeeper , que ahora rara vez se usan,
pero de vez en cuando siguen bombardeando cadáveres en las competencias CTF.
Fugas causadas por la inclusión de archivos
Además de la fuga causada por las herramientas de gestión de versiones anteriores, la configuración incorrecta también es una de las razones importantes de la fuga de información.
.DS_Store
Fuga de archivos
.DS_Store
(Desktop Services Store) es un archivo oculto en el directorio de macOS. Contiene la estructura del directorio actual y cierta información personalizada,
como el fondo y la ubicación del icono. Los archivos similares en las ventanas son desktop.ini
. Exponer el .DS_Store
archivo es equivalente a exponer el
Se puede decir que todo el contenido del directorio es una filtración grave.
Cómo utilizar
.DS_Store
El formato es binario y la estructura de datos interna es un formato propietario .
Puede analizar y descargar todos los archivos de forma recursiva. Consulte lijiejie ds_store_exp
.
Sugerencias de reparación
Los estudiantes que usan el desarrollo de macOS pueden agregarlo .DS_Store
a la lista de ignorados (como .gitignore), pero en esencia solo filtra la estructura del directorio, incluso si se elimina .DS_Store
, el
archivo todavía existe en el lugar al que puede acceder el servidor web, por lo que la solución permanente no es Coloque información confidencial en la ruta web.
WEB-INF filtrado
En el documento de Java Servlet ,
se dice que el WEB-INF
directorio "contiene recursos que son utilizados por todas las aplicaciones web pero que no están en la ruta web", es decir, el contenido del directorio WEB-INF no pertenece a las páginas públicas.
Las aplicaciones web pueden getResource
se accede a estos recursos en el contexto del servlet por la espera de la API.
Por lo general, los desarrolladores colocarán muchos archivos JSP, paquetes Jar y archivos de clases Java en este directorio. El contenido del directorio general es predecible:
WEB-INF / web.xml: archivo de configuración de la aplicación web, que describe las reglas de configuración y nomenclatura de los servlets y otros componentes de la aplicación.
WEB-INF / database.properties: archivo de configuración de la base de datos
WEB-INF / classes /: generalmente se usa para almacenar archivos de clases Java (.class)
WEB-INF / lib /: se utiliza para almacenar la biblioteca empaquetada (.jar)
WEB-INF / src /: se utiliza para almacenar el código fuente (.asp y .php, etc.)
Cómo utilizar
Utilice el archivo web.xml para adivinar el nombre de la clase relacionada del componente de la aplicación y luego busque el código en el directorio src. Si no hay código fuente, puede descargar directamente el archivo de clase para descompilar.
Sugerencias de reparación
Antes de publicar, confirme que el directorio WEB-INF tiene prohibido acceder o establezca las reglas de filtrado en el servidor.
Archivos de respaldo filtrados
La fuga del archivo de respaldo se divide en dos situaciones. Una es que el personal de operación y mantenimiento realiza una copia de seguridad directa del sitio web con tar -czvf bakup.tgz *
comandos similares en el directorio raíz del sitio web, de
modo que el usuario puede empaquetar y descargar directamente el código fuente de todo el sitio; la otra es El editor utilizado por los desarrolladores o el personal de operación y mantenimiento realiza automáticamente una copia de seguridad del contenido editado de la página web al modificar archivos,
como vim .swp
, por lo que se filtra el código fuente de la página web.
Cómo utilizar
Para archivos empaquetados, los probadores de penetración pueden escanear el sitio web con {nombre de archivo común} + {sufijo común de paquete comprimido}, y puede haber sorpresas inesperadas.
Para archivos de respaldo temporales de páginas web, puede escanear el .swp de la página correspondiente o Con sufijos como .bak, puede encontrar información útil.
Sugerencias de reparación
Realice un buen trabajo en la administración de versiones y utilice herramientas de administración de versiones para filtrar este tipo de archivos, y no modifique ni agregue archivos directamente en el entorno de producción.
Archivos de configuración filtrados
El desarrollo WEB moderno a menudo no reinventa la rueda, sino que se configura en base a un marco maduro. Si el probador de penetración sabe en qué tipo de marco se basa el sitio web,
es posible obtener la ruta de archivos de configuración importantes a través de la documentación del marco, si es de código abierto Framework, también puede obtener el código fuente, por lo que la seriedad de la filtración del archivo de configuración es evidente.
Cómo utilizar
Conozca el tipo de marco identificando la huella digital del sitio web y luego pruebe manualmente si hay archivos de configuración importantes disponibles. Si se trata de una prueba por lotes, puede preparar
rutas de archivo de configuración comunes de antemano , como wordpress / wp-config.php, etc., y organizarlos en Luego, el diccionario se prueba en lotes con secuencias de comandos. Puede consultar el diccionario de Pigman .
Sugerencias de reparación
Modifique la ruta predeterminada del archivo de configuración y bloquee el acceso a estas rutas en el lado del servidor.
Fugas provocadas por errores de configuración
Cruce de directorio de Windows IIS / Apache
El principio de la vulnerabilidad de cruce de directorio es relativamente simple. El programa no filtra completamente la entrada del usuario ../ y otros caracteres de salto de directorio, lo que hace que los usuarios malintencionados accedan al nivel superior del directorio raíz web y atraviesen los archivos del servidor.
Aunque el servidor web en sí Prohibirá el acceso a lugares distintos a la carpeta web, pero si se trata de una página dinámica introducida por un desarrollo con retraso mental y la entrada del usuario no está bien filtrada, es posible que se produzca un cruce o incluso un cruce de directorio.
Incluso el servidor web tiene vulnerabilidades similares, como Apache Tomcat. Para el uso específico y eludir las vulnerabilidades de análisis UTF-8, consulte otros artículos en línea , que no se ampliarán aquí debido a limitaciones de espacio.
Seguridad de la configuración de Nginx
Hay tantas opciones de configuración para Nginx con las que no todo el mundo puede estar familiarizado, pero eso no significa que Baidu pueda simplemente copiarlo y pegarlo. Lo mejor es mirar la función y el uso de las opciones correspondientes en la documentación oficial para
evitar muchos errores fatales. Por ejemplo. Cuando Nginx está procesando archivos estáticos, si accidentalmente escribe un carácter incorrecto en el archivo de configuración:
location /static {
alias /home/web/static/;
}
Esto conducirá al acceso http://example.com/static../
al directorio de nivel superior cuando lo visite y, por lo tanto, el acceso a información confidencial. Este artículo
sobre la seguridad de la configuración de nginx y la canción de despedida está realmente muy bien escrito, y es digno de que todo desarrollador y personal de operación y mantenimiento lo entienda cuidadosamente.
posdata
La fuga de información confidencial se produce de vez en cuando y, por lo general, causa un daño impredecible. En este artículo se analizan algunos ejemplos de fuga de archivos, que se puede decir que es un subconjunto de la fuga de información.
La fuga de archivos se debe en gran medida al descuido de las personas, por lo que la mayoría Un buen método de prevención es estandarizar el proceso de desarrollo e implementación y minimizar los errores introducidos por las operaciones humanas. Para
citar al hombre cerdo: "Los oponentes a los que nos enfrentamos son todos maestros de la minería de información y la integración de recursos. Solo necesitan ganar una vez, y siempre lo haremos Perdió."
Articulo de referencia: