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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
gha-lab-ed7a1740c4 — Laboratorio de investigación en seguridad: reproducción controlada de GHSA-3g6g-gq4r-xjm9 / CVE-2026-35580 (inyección de shell en la entrada workflow_dispatch de GitHub Actions) contra una instantánea fijada de NationalSecurityAgency/emissary | Kitploit
Herramientas/GitHubGitHub/pvharmo2/gha-lab-ed7a1740c4
Análisis de VulnerabilidadesExplotaciónAprendizaje y EducaciónRecursos Curados
GitHubpvharmo2/gha-lab-ed7a1740c4

gha-lab-ed7a1740c4

Laboratorio de investigación en seguridad: reproducción controlada de GHSA-3g6g-gq4r-xjm9 / CVE-2026-35580 (inyección de shell en la entrada workflow_dispatch de GitHub Actions) contra una instantánea fijada de NationalSecurityAgency/emissary

Ver Repositorio
10hace 20 díasAú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

Artefacto de investigación automatizado — no es el proyecto original.

Este repositorio es un laboratorio desechable construido por un sistema automatizado para una tesis de maestría en Université Laval sobre la reproducción de vulnerabilidades publicadas en flujos de trabajo de GitHub Actions. Es una instantánea verbatim de NationalSecurityAgency/emissary en el commit 898488b489615581ea66d17954742c8e4ffb0323 (2026-01-09), redistribuida bajo la licencia de ese proyecto, cuyo archivo se incluye sin cambios en esta instantánea.

El proyecto original no está involucrado, nunca es el objetivo, y la vulnerabilidad estudiada aquí ya es pública. Cada secreto y variable en este repositorio es un valor ficticio generado aleatoriamente — no hay ninguna credencial real presente. Las referencias de acciones e imágenes de ejecutores están fijadas a lo que resolvieron el 2026-01-09; consulte pinning.md en la salida del sistema para cada cambio realizado en la instantánea.

Preguntas u objeciones: [email protected]


Emissary Dark Knight - some code just wants to watch the core burn

License

Maven Central
Java CI with Maven
CodeQL
Lint Codebase

Tabla de Contenidos

  • Introducción
  • Requisitos Mínimos
  • Primeros Pasos
  • Contáctenos

Introducción

Emissary es un motor de flujo de trabajo basado en datos y P2P que se ejecuta en una red P2P heterogénea, posiblemente ampliamente dispersa y de múltiples niveles, de recursos informáticos. Los itinerarios de flujo de trabajo no están preplanificados como en los motores de flujo de trabajo convencionales, sino que se descubren a medida que se descubre más información sobre los datos. Normalmente no hay interacción del usuario en un flujo de trabajo de Emissary; más bien, los datos se procesan de manera orientada a objetivos hasta que alcanzan un estado de finalización.

Emissary es altamente configurable, pero en esta implementación base no hace casi nada. Se espera que los usuarios de este marco proporcionen clases que extiendan emissary.place.ServiceProviderPlace para realizar trabajo en las cargas útiles de emissary.core.IBaseDataObject.

Se pueden hacer una variedad de cosas y el flujo de trabajo se gestiona en etapas, por ejemplo, STUDY, ID, COORDINATE, TRANSFORM, ANALYZE, IO, REVIEW.

Las clases responsables de dirigir el flujo de trabajo son emissary.core.MobileAgent y las clases derivadas de ella, que gestionan la ruta de un conjunto de objetos de carga útil relacionados a través del flujo de trabajo y emissary.directory.DirectoryPlace que gestiona los servicios disponibles, su costo y calidad, y mantiene conectada la red P2P.

Sitio de Maven y Javadoc alojados en GitHub Pages: https://code.nsa.gov/emissary/

Requisitos Mínimos

  • Sistema operativo Linux o MacOSX
  • JDK 11
  • Apache Maven 3.6.3+

Primeros Pasos

Lea la guía DEVELOPING.md para obtener información sobre la instalación de los componentes necesarios, la obtención del código fuente, la compilación y la ejecución de Emissary.

Compilación

Ejecute mvn clean package para compilar, probar y empaquetar Emissary

root@kitploit:~
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  9.132 s
[INFO] Finished at: 2022-01-10T22:31:05Z
[INFO] ------------------------------------------------------------------------

Ejecución

Hay un script bash en Emissary que ejecuta todo. Está en el directorio de nivel superior de Emissary. El script ejecuta la clase emissary.Emissary que tiene varios comandos Picocli disponibles para manejar diferentes funciones.

Sin argumentos

Si el script emissary se ejecuta sin argumentos, obtendrá una lista de todos los subcomandos de configuración y una breve descripción.

root@kitploit:~
./emissary

Ayuda

Ejecutar ./emissary help le dará la misma salida que ejecutar sin argumentos. Si desea ver información más detallada sobre un comando, agregue el nombre del comando después de help. Por ejemplo, para ver todos los argumentos con descripciones del comando server, ejecute:

root@kitploit:~
./emissary help server

Parámetros comunes

El resto de comandos tienen argumentos (-b o --projectBase) que se pueden configurar, pero deben coincidir con PROJECT_BASE.

El directorio de configuración está predeterminado en /config pero también se puede pasar con (-c o --config). Cuando se ejecuta desde el checkout de git, debe usar target como projectBase. Siéntase libre de modificar los archivos de configuración en target/config antes de comenzar.

El registro se maneja con logback. Puede apuntar a un archivo personalizado con el argumento --logbackConfig.

Consulte help -c para cada comando para obtener más información.

Servidor (Standalone)

Este comando iniciará un servidor Emissary e inicializará todos los lugares, un lugar de recogida y los filtros de entrega que estén configurados. Se iniciará en modo standalone si -m o --mode no se especifica. Por defecto, el número de MobileAgents se calcula según las especificaciones de la máquina. En computadoras modernas, esto puede ser alto. Puede controlar el número de agentes con -a o --agents. Aquí hay un ejemplo de ejecución.

root@kitploit:~
./emissary server -a 2

Sin configuración adicional, se iniciará en http://localhost:8001. Si navega a esa url, deberá ingresar el nombre de usuario y la contraseña definidos en target/config/jetty-users.properties, que son emissary y emissary123.

El PickUpPlace predeterminado está configurado para leer archivos de target/data/InputData. Si copia archivos en ese directorio, verá que Emissary los procesa. Tenga en cuenta que solo toUpper y toLower están configurados, por lo que la salida no será muy interesante.

Pausar

Detener el servicio para que no tome trabajo

root@kitploit:~
./emissary server --pause
Reanudar

Permitir que un servicio pausado tome trabajo

root@kitploit:~
./emissary server --unpause
Invalidar

Invalidar servicios que son actualizables. Este es un "refresco ligero" que es un enfoque sin tiempo de inactividad que invalida un ServiceProviderRefreshablePlace. Cuando el lugar se extrae de DirectoryPlace, el lugar se recrea usando las mismas claves para DirectoryPlace y Namespace, pero el configurador se recarga y el lugar puede recargar un subconjunto de sus configuraciones.

root@kitploit:~
./emissary server --invalidate
Refrescar

Forzar el refresco de servicios. Este es un refresco "duro": el servidor se pausa y se espera a que los MobileAgents se drenen. Una vez que el servidor está completamente inactivo, todas las claves existentes de ServiceProviderRefreshablePlace se eliminan de DirectoryPlace y Namespace, y los lugares se recrean por completo. Esto permite cambios en nombres de servicios, proxies, listas de denegación, etc. Luego, el servidor se reanuda para continuar el procesamiento. Cualquier falla en el refresco pondría al servidor en un mal estado, por lo que el servidor se apaga.

root@kitploit:~
./emissary server --refresh
Detener

Apagar el servicio

root@kitploit:~
./emissary server --stop
Matar

Forzar el apagado del servicio

root@kitploit:~
./emissary server --kill

Agentes (Standalone)

El comando agents muestra el número de MobileAgents para el host configurado y qué están haciendo esos agentes. Por defecto, el puerto es 9001, pero puede usar -p o --port para cambiarlo. Suponiendo que se está ejecutando en el puerto 8001 del comando server anterior, pruebe:

root@kitploit:~
./emissary agents -p 8001

Pool (Standalone)

Pool es una vista colapsada de agentes para un nodo. También tiene como predeterminado el puerto 9001. Para ejecutarlo para el servidor standalone iniciado arriba, ejecute

root@kitploit:~
./emissary pool -p 8001

Este comando es más útil para un clúster, ya que ofrece una vista más digerible de cada nodo.

Env

El comando Env requiere que un servidor esté en ejecución. Le pedirá al servidor algunos valores de configuración, como PROJECT_BASE y BIN_DIR. Sin argumentos, volcará una respuesta json sin formato.

root@kitploit:~
./emissary env

Pero también puede volcar una respuesta adecuada para ser utilizada con source en bash.

root@kitploit:~
./emissary env --bashable

Al iniciar el servidor Emissary, realmente se llama a este endpoint y se vuelca $PROJECT_BASE}/env.sh con las variables configuradas. Esto se hace para que los scripts de shell puedan source $PROJECT_BASE}/env.sh y luego tener esas variables disponibles sin tener que preocuparse por configurarlas en otro lugar.

Config

El comando config le permite ver la configuración efectiva para un lugar/servicio/clase especificado. Dado que Emissary usa flavors, este comando mostrará la configuración resultante de una clase después de que se hayan aplicado todos los flavors. Este comando puede usarse para conectarse a un nodo Emissary en ejecución especificando -h para el host (predeterminado es localhost) y -p para el puerto (predeterminado es 8001). Para conectarse a un Emissary local en ejecución en el puerto 8001, cualquiera de los siguientes comandos funcionará:

root@kitploit:~
./emissary config --place emissary.place.sample.ToLowerPlace
./emissary config --place emissary.place.sample.ToLowerPlace -h localhost -p 8001

Opcionalmente, puede especificar el modo offline usando --offline para usar los archivos de configuración especificados en su CONFIG_DIR local:

root@kitploit:~
./emissary config --place emissary.place.sample.ToLowerPlace --offline

En modo offline, puede proporcionar flavors para ver las diferencias en las configuraciones:

root@kitploit:~
./emissary config --place emissary.place.sample.ToLowerPlace --offline --flavor STANDALONE,TESTING

Estos son útiles para ver la configuración efectiva, pero también podemos ejecutar en un modo verboso para ver todos los archivos de configuración junto con la salida final. Esto se controla con la bandera --detailed:

root@kitploit:~
./emissary config --place emissary.place.sample.ToLowerPlace --detailed

o en modo offline:

root@kitploit:~
./emissary config --place emissary.place.sample.ToLowerPlace --offline --detailed

Servidor (Clúster)

Emissary es divertido en standalone, pero ejecutar en clúster es más apropiado para trabajo real. La forma de ejecutar en clúster es similar a standalone, pero necesita -m cluster para indicar al nodo que se conecte a otros nodos. En modo clúster, Emissary también iniciará el PickUpClient en lugar del PickUpPlace, por lo que necesitará iniciar un feeder.

Mire el archivo target/config/peers.cfg para ver los peers de rendezvous. En este caso, hay 3. Los nodos que se ejecutan en los puertos 8001 y 9001 son solo nodos Emissary. El nodo que se ejecuta en el puerto 7001 es el feeder. Así que iniciemos 8001 y 9001 en dos terminales diferentes.

root@kitploit:~
./emissary server -a 2 -m cluster
./emissary server -a 2 -m cluster -p 9001

Debido a que estos nodos conocen los puertos 8001, 9001 y 7001, verá errores en los registros mientras continúan intentando conectarse.

Tenga en cuenta que en implementaciones del mundo real no ejecutamos múltiples procesos Emissary en el mismo nodo. Puede configurar el hostname con -h.

Feed (Clúster)

Con los nodos iniciados en los puertos 8001 y 9001, necesitamos iniciar el feeder. El comando feed usa el puerto 7001 por defecto, pero necesitamos configurar un directorio del que el feeder leerá. Los archivos colocados en ese directorio estarán disponibles para que los nodos trabajadores los tomen y el trabajo debería distribuirse entre el clúster. Inicie el feed con

root@kitploit:~
mkdir ~/Desktop/feed1
./emissary feed -i ~/Desktop/feed1/

Debería poder acceder a http://localhost:8001, http://localhost:9001 y http://localhost:7001 en el navegador y ver los lugares configurados. Coloque algunos archivos en ~/Desktop/feed1 y vea cómo los 2 nodos los procesan. Puede tomar un minuto para que comiencen a procesarlos.

Agentes (Clúster)

Los agentes en modo clúster nuevamente muestran detalles sobre los mobileAgents. Comienza con el nodo que configura (localhost:9001 por defecto), luego llama a todos los nodos que conoce y obtiene la misma información. Ejecútelo con:

root@kitploit:~
./emissary agents --cluster

Pool (Clúster)

Pool en modo clúster también hace lo mismo que pool en standalone. Comienza en el nodo (localhost:9001) por defecto y luego va a todos los nodos que conoce y agrega una vista colapsada del clúster. Ejecútelo con

root@kitploit:~
./emissary pool --cluster

Topología (Clúster)

La topología habla con el nodo configurado (localhost:8001 por defecto) y habla con cada nodo que conoce. La respuesta es lo que todos esos nodos conocen, para que pueda construir una topología de red de su clúster. Ejecútelo con

root@kitploit:~
./emissary topology

Ejecutar servidor con SSL

El almacén de claves y la contraseña del almacén de claves están en el archivo emissary.client.EmissaryClient-SSL.cfg. Incluido y configurado por defecto hay un almacén de claves de muestra que puede usar para probar esta funcionalidad. No recomendamos usar el almacén de claves de muestra en entornos de producción. Para usar su propio almacén de claves, cambie los valores de configuración en el archivo emissary.client.EmissaryClient-SSL.cfg.

Standalone

root@kitploit:~
./emissary server -p 8443 --ssl --disableSniHostCheck

Clúster

root@kitploit:~
./emissary server -p 8443 --ssl --disableSniHostCheck --mode cluster
./emissary server -p 9443 --ssl --disableSniHostCheck --mode cluster
mkdir ~/Desktop/feed1
./emissary feed -p 7443 --ssl --disableSniHostCheck -i ~/Desktop/feed1/

Contáctenos

Preguntas Generales

Si tiene alguna pregunta o inquietud sobre este proyecto, puede contactarnos en: [email protected]

Preguntas de Seguridad

Para preguntas de seguridad y reporte de vulnerabilidades, consulte SECURITY.md

Descargar herramienta