Fuga de documentos confidenciales en la web

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-toplevelcreará una
.gitcarpeta 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 gitcomando 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 .hgcarpeta 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 .svncarpeta 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á .bzrun 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 revertcomando 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 projectcrea un directorio llamado CVSen 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/RootY 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_StoreFuga 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_Storearchivo es equivalente a exponer el
Se puede decir que todo el contenido del directorio es una filtración grave.

Cómo utilizar

.DS_StoreEl 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_Storea 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-INFdirectorio "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 getResourcese 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:

Supongo que te gusta

Origin blog.csdn.net/zhangge3663/article/details/108144913
Recomendado
Clasificación