Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
arcgis-web-shell — Servicio de geoprocesamiento de ArcGIS Enterprise que publica una caja de herramientas de Python para la ejecución de comandos. | Kitploit
Herramientas/GitHubGitHub/ryanpohlner/arcgis-web-shell
Escalada de PrivilegiosExplotaciónExplotación de Aplicaciones WebPost-ExplotaciónPruebas de PenetraciónRed TeamingHerramienta de Acceso RemotoDesarrollo de Payloads
GitHubryanpohlner/arcgis-web-shell

arcgis-web-shell

Servicio de geoprocesamiento de ArcGIS Enterprise que publica una caja de herramientas de Python para la ejecución de comandos.

540hace 4 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio

ArcGIS Web Shell mediante servicio de geoprocesamiento

Este repositorio contiene una definición de servicio de geoprocesamiento de ArcGIS que publica una caja de herramientas de Python como una tarea de ejecución de comandos. Está destinado a pruebas de seguridad autorizadas.

No publique ni utilice este servicio en sistemas donde no cuente con autorización explícita. Un servicio de geoprocesamiento ejecuta código del lado del servidor con la cuenta de servicio de ArcGIS Server, por lo que este proyecto puede crear una interfaz similar a una web shell hacia el host.

Qué es esto

El artefacto principal es ArcGIS_Shell, una tarea de caja de herramientas de Python con un parámetro de entrada:

command

Cuando la tarea se ejecuta, el servidor ejecuta ese comando a través del shell del sistema operativo y devuelve la salida normal de la consola mediante el resultado de la tarea de ArcGIS.

El repositorio incluye dos archivos de definición de servicio de ArcGIS precompilados:

ArcGIS_Shell_10.9.1_and_earlier.sd
ArcGIS_Shell_11_or_later.sd

También incluye carpetas de definición de servicios extraídas:

ArcGIS_Shell_10.9.1_and_earlier/
ArcGIS_Shell_11_or_later/

Estas carpetas contienen los archivos que ArcGIS empaqueta en los archivos .sd, incluidos los archivos ArcGIS_Shell.pyt incrustados. Edite las carpetas extraídas al modificar la definición del servicio y, a continuación, vuelva a compilar los archivos .sd con package_sd.py.

Definiciones de servicio

Una definición de servicio de ArcGIS (.sd) es un artefacto de implementación empaquetado. Contiene metadatos del servicio, configuración, recursos de toolbox o mapas, y los archivos de soporte que ArcGIS Server necesita para publicar un servicio.

En este repositorio, cada .sd es un archivo 7-Zip que utiliza ajustes de compresión compatibles con ArcGIS:

-ms=off
-m0=LZMA:d=14

Los dos directorios de definición de servicio difieren principalmente por la versión de empaquetado de ArcGIS:

10.9.1 and earlier: p20 paths, offlineSDVersion10x, ArcGIS 2.9 schema
11 or later:        p30 paths, offlineSDVersion11,  ArcGIS 3.1 schema

La lógica de la caja de herramientas de Python integrada es la misma en ambos.

Servicios de geoprocesamiento

Los servicios de geoprocesamiento de ArcGIS se utilizan normalmente para exponer flujos de trabajo de análisis GIS a través de HTTP. Un flujo de trabajo común es:

  1. Crear una caja de herramientas de Python, un modelo o una herramienta de script en ArcGIS Pro.
  2. Publicarlo como un servicio de geoprocesamiento.
  3. Llamar al servicio desde clientes de ArcGIS, aplicaciones web o clientes REST.
  4. Permitir que ArcGIS Server ejecute la herramienta y devuelva los resultados.

Los ejemplos legítimos incluyen recortar entidades, ejecutar análisis de red, procesar rásteres, generar informes y realizar transformaciones GIS por lotes.

La propiedad de seguridad importante es que las tareas de geoprocesamiento ejecutan Python del lado del servidor. Si una tarea publicada acepta entrada controlada por el usuario y la pasa a primitivas peligrosas como subprocess.run(..., shell=True), la tarea de geoprocesamiento se convierte en una interfaz de ejecución de comandos. Eso es lo que demuestra este proyecto.

Por qué esto puede ser abusado

La tarea Shell acepta un parámetro de cadena llamado command. La caja de herramientas de Python ejecuta ese comando en el host de ArcGIS Server y devuelve stdout/stderr en el resultado de la tarea.

Esto significa que un operador con permiso para publicar o administrar servicios de geoprocesamiento de ArcGIS puede crear un servicio similar a una web-shell a través de la funcionalidad normal de ArcGIS. El comando se ejecuta en el contexto de seguridad de la cuenta del proceso de ArcGIS Server.

El servicio también habilita la capacidad Uploads de ArcGIS. Esto expone los endpoints de carga del servicio:

/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads
/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads/upload

Las cargas son almacenadas por ArcGIS Server en el directorio del sistema del sitio, normalmente bajo una ruta como:

<arcgisserver>/directories/arcgissystem/arcgisuploads/<itemID>

La ruta exacta depende de la configuración del directorio de ArcGIS Server. Los administradores pueden ver los elementos cargados a través de:

https://<server>/arcgis/admin/uploads?f=pjson

No modifique ni elimine manualmente archivos en arcgissystem. Elimine los elementos cargados a través de REST o del Directorio de Administrador.

Publicación a través de ArcGIS Server Manager

Utilice el archivo .sd que coincida con la versión de ArcGIS de destino:

ArcGIS_Shell_10.9.1_and_earlier.sd
ArcGIS_Shell_11_or_later.sd

Flujo típico de Server Manager:

  1. Abra ArcGIS Server Manager:

    https://<server>/arcgis/manager
    
  2. Inicie sesión con una cuenta autorizada para publicar servicios. Normalmente, esto incluye a portaladmin.

  3. Vaya a Services.

  4. Haga clic en Publish Service.

  5. Cargue el archivo .sd adecuado para la versión de ArcGIS. Haga clic en Next.

  6. En la página "Specify properties for your new service", modifique el nombre del servicio si lo desea. Haga clic en Next.

  7. En la página "Share your services with", no es necesario marcar ninguna casilla. Haga clic en Publish.

  8. El servicio se inicia automáticamente. Haga clic en el nombre del servicio, luego en Capabilities y, a continuación, en la REST URL.

Para eliminar el servicio, haga clic en la "X" junto al nombre del servicio.

Los archivos .sd precompilados ya incluyen:

"capabilities": "Uploads"

También incluyen amplias configuraciones de carga para pruebas:

"maxUploadFileSize": "2048",
"allowedUploadFileTypes": "<broad explicit extension list>"

maxUploadFileSize está en MB. La lista de extensiones es intencionalmente amplia para labores de evaluación, pero sigue siendo una lista de permitidos explícita, no un comodín real de "permitir todo".

Uso de la GUI web REST

Después de publicar, abra el servicio en el Directorio de Servicios REST de ArcGIS:

https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer

Si el servicio se publica dentro de una carpeta, incluya el nombre de la carpeta:

https://<server>/arcgis/rest/services/<folder>/ArcGIS_Shell/GPServer

Abrir la tarea:

https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/Shell

Haz clic en Execute Task.

Establece tu comando y envía el formulario. El resultado de la tarea debería contener la salida del comando.

La salida está en formato JSON, por lo que los saltos de línea están escapados (\r\n). Necesitarás postprocesar la salida de varias líneas.

Debido a que la tarea utiliza el shell del sistema operativo, los comandos integrados del shell funcionan:

dir
echo test
whoami /groups

En objetivos Linux, utilice comandos de Linux:

id
uname -a
pwd

Subiendo archivos

Abre el recurso de cargas:

https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads

Haz clic en Upload Item, o ve directamente a:

https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads/upload

La GUI web REST debería mostrar un selector de archivos si las cargas están habilitadas.

Utilice el formulario para elegir un archivo y enviar la carga. La respuesta incluye un itemID.

Inspeccione el elemento cargado con:

https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads/<itemID>

Elimina el elemento subido con:

https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads/<itemID>/delete

Utilice el formulario web REST en esa página para enviar la operación de eliminación.

Descargar herramienta