Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
gha-lab-ed7a1740c4 — Laboratorio di ricerca sulla sicurezza: riproduzione controllata di GHSA-3g6g-gq4r-xjm9 / CVE-2026-35580 (iniezione di shell tramite input workflow_dispatch di GitHub Actions) contro uno snapshot bloccato di NationalSecurityAgency/emissary | Kitploit
Strumenti/GitHubGitHub/pvharmo2/gha-lab-ed7a1740c4
Analisi delle VulnerabilitàExploitApprendimento e FormazioneRisorse Curate
GitHubpvharmo2/gha-lab-ed7a1740c4

gha-lab-ed7a1740c4

Laboratorio di ricerca sulla sicurezza: riproduzione controllata di GHSA-3g6g-gq4r-xjm9 / CVE-2026-35580 (iniezione di shell tramite input workflow_dispatch di GitHub Actions) contro uno snapshot bloccato di NationalSecurityAgency/emissary

Vedi Repository
3h 33m faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Artefatto di ricerca automatizzato — non è il progetto upstream.

Questo repository è un laboratorio usa e getta costruito da un sistema automatizzato per una tesi magistrale presso l'Université Laval sulla riproduzione di vulnerabilità pubblicate nei workflow di GitHub Actions. È uno snapshot integrale di NationalSecurityAgency/emissary al commit 898488b489615581ea66d17954742c8e4ffb0323 (2026-01-09), ridistribuito sotto la licenza del progetto stesso, il cui file è incluso invariato in questo snapshot.

Il progetto upstream non è coinvolto, non è mai preso di mira, e la vulnerabilità studiata qui è già pubblica. Ogni segreto e variabile in questo repository è un valore fittizio generato casualmente — nessuna credenziale reale è presente. I riferimenti alle azioni e le immagini dei runner sono bloccati a ciò a cui risolvevano il 2026-01-09; consulta pinning.md nell'output del sistema per ogni modifica apportata allo snapshot.

Domande o obiezioni: [email protected]


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

License

Maven Central
Java CI with Maven
CodeQL
Lint Codebase

Indice

  • Introduzione
  • Requisiti minimi
  • Per iniziare
  • Contattaci

Introduzione

Emissary è un motore di workflow basato sui dati e su architettura P2P che opera in una rete P2P eterogenea, potenzialmente ampiamente distribuita e multi-livello, di risorse di calcolo. Gli itinerari dei workflow non sono pre-pianificati come nei motori di workflow convenzionali, ma vengono scoperti man mano che vengono scoperte maggiori informazioni sui dati. In genere non c'è interazione con l'utente in un workflow Emissary; piuttosto, i dati vengono elaborati in modo orientato agli obiettivi fino a raggiungere uno stato di completamento.

Emissary è altamente configurabile, ma in questa implementazione di base non fa quasi nulla. Ci si aspetta che gli utenti di questo framework forniscano classi che estendono emissary.place.ServiceProviderPlace per eseguire lavoro sui payload di emissary.core.IBaseDataObject.

Si possono fare diverse cose e il workflow è gestito in fasi, ad es. STUDY, ID, COORDINATE, TRANSFORM, ANALYZE, IO, REVIEW.

Le classi responsabili di dirigere il workflow sono emissary.core.MobileAgent e le classi derivate da essa, che gestiscono il percorso di un insieme di oggetti payload correlati attraverso il workflow e emissary.directory.DirectoryPlace che gestisce i servizi disponibili, il loro costo e la loro qualità e mantiene connessa la rete P2P.

Sito Maven e Javadoc ospitati su GitHub Pages: https://code.nsa.gov/emissary/

Requisiti minimi

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

Per iniziare

Leggi la guida DEVELOPING.md per informazioni sull'installazione dei componenti richiesti, sul recupero del codice sorgente, sulla compilazione e sull'esecuzione di Emissary.

Compilazione

Esegui mvn clean package per compilare, testare e impacchettare Emissary

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

Esecuzione

C'è uno script bash in Emissary che esegue tutto. Si trova nella directory di livello superiore di Emissary. Lo script esegue la classe emissary.Emissary che dispone di diversi comandi Picocli disponibili per gestire diverse funzioni.

Nessun argomento

Se lo script emissary viene eseguito senza alcun argomento, otterrai un elenco di tutti i sottocomandi di configurazione e una breve descrizione.

root@kitploit:~
./emissary

Aiuto

Eseguire ./emissary help ti darà lo stesso output dell'esecuzione senza argomenti. Se vuoi vedere informazioni più dettagliate su un comando, aggiungi il nome del comando dopo help. Ad esempio, per vedere tutti gli argomenti con le descrizioni per il comando server, esegui:

root@kitploit:~
./emissary help server

Parametri comuni

Il resto dei comandi ha tutti argomenti (-b o --projectBase) che possono essere impostati, ma devono corrispondere a PROJECT_BASE.

La directory di configurazione è impostata di default su /config ma può anche essere passata con (-c o --config). Quando si esegue dal checkout git, dovresti usare target come projectBase. Sentiti libero di modificare i file di configurazione in target/config prima di iniziare.

La registrazione (logging) è gestita da logback. Puoi puntare a un file personalizzato con l'argomento --logbackConfig.

Consulta help -c per ogni comando per ottenere maggiori informazioni.

Server (Standalone)

Questo comando avvierà un server Emissary e inizializzerà tutti i luoghi (places), un luogo di ritiro (pickup place) e i filtri di consegna (drop off filters) configurati. Si avvierà in modalità standalone se -m o --mode non è specificato. Di default, il numero di MobileAgents viene calcolato in base alle specifiche della macchina. Sui computer moderni, questo può essere elevato. Puoi controllare il numero di agenti con -a o --agents. Ecco un esempio di esecuzione.

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

Senza ulteriore configurazione, si avvierà su http://localhost:8001. Se navighi su quell'URL, dovrai inserire il nome utente e la password definiti in target/config/jetty-users.properties, che sono emissary e emissary123.

Il PickUpPlace predefinito è configurato per leggere file da target/data/InputData. Se copi file in quella directory, vedrai Emissary elaborarli. Tieni presente che sono configurati solo toUpper e toLower, quindi l'output non sarà molto interessante.

Pausa

Interrompi il servizio dall'accettare lavoro

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

Consenti a un servizio in pausa di accettare lavoro

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

Invalida i servizi che sono aggiornabili (refreshable). Questo è un aggiornamento "leggero" che è un approccio senza tempi di inattività che invalida un ServiceProviderRefreshablePlace. Quando il luogo viene poi estratto da DirectoryPlace, il luogo viene ricreato usando le stesse chiavi per DirectoryPlace e Namespace, ma il configuratore viene ricaricato e il luogo è in grado di ricaricare un sottoinsieme delle sue configurazioni.

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

Forza l'aggiornamento dei servizi. Questo è un aggiornamento "duro": il server viene messo in pausa e si attende che i MobileAgents si svuotino. Una volta che il server è completamente inattivo, tutte le chiavi esistenti di ServiceProviderRefreshablePlace vengono rimosse da DirectoryPlace e Namespace, e i luoghi vengono completamente ricreati. Ciò consente modifiche ai nomi dei servizi, ai proxy, alle liste di negazione, ecc. Il server viene quindi ripreso per riprendere l'elaborazione. Qualsiasi errore nell'aggiornamento metterebbe il server in uno stato non valido, quindi il server viene arrestato.

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

Arresta il servizio

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

Forza l'arresto del servizio

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

Agenti (Standalone)

Il comando agents mostra il numero di MobileAgents per l'host configurato e cosa stanno facendo quegli agenti. Di default, la porta è 9001, ma puoi usare -p o --port per cambiarla.
Supponendo che tu stia eseguendo sulla porta 8001 dal comando server precedente, prova:

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

Pool (Standalone)

Pool è una vista compressa degli agenti per un nodo. Anche questo, di default, usa la porta 9001. Per eseguirlo per il server standalone avviato sopra, esegui

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

Questo comando è più utile per un cluster poiché fornisce una vista più digeribile di ogni nodo.

Env

Il comando Env richiede che un server sia in esecuzione. Chiederà al server alcuni valori di configurazione, come PROJECT_BASE e BIN_DIR. Senza argomenti, scaricherà una risposta json non formattata.

root@kitploit:~
./emissary env

Ma puoi anche scaricare una risposta adatta per essere sorgente (sourced) in bash.

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

L'avvio del server Emissary chiama effettivamente questo endpoint e scarica $PROJECT_BASE}/env.sh con le variabili configurate. Questo viene fatto affinché gli script di shell possano source $PROJECT_BASE}/env.sh e poi avere quelle variabili disponibili senza doversi preoccupare di configurarle altrove.

Config

Il comando config ti permette di vedere la configurazione effettiva per un luogo/servizio/classe specificato. Poiché Emissary usa i flavor, questo comando mostrerà la configurazione risultante di una classe dopo che tutti i flavor sono stati applicati. Questo comando può essere usato per connettersi a un nodo Emissary in esecuzione specificando -h per l'host (default è localhost) e -p per la porta (default è 8001). Per connettersi a un Emissary in esecuzione localmente sulla porta 8001, uno qualsiasi dei seguenti comandi funzionerà:

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

Facoltativamente, puoi specificare la modalità offline usando --offline per usare i file di configurazione specificati nella tua CONFIG_DIR locale:

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

In modalità offline, puoi fornire flavor per vedere le differenze nelle configurazioni:

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

Questi sono utili per vedere la configurazione effettiva, ma possiamo anche eseguire in modalità verbose per vedere tutti i file di configurazione insieme all'output finale. Questo è controllato con il flag --detailed:

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

o in modalità offline:

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

Server (Cluster)

Emissary è divertente in standalone, ma eseguire un cluster è più appropriato per il lavoro reale. Il modo per eseguire in cluster è simile allo standalone, ma devi usare -m cluster per dire al nodo di connettersi ad altri nodi. In modalità cluster, Emissary avvierà anche il PickUpClient invece del PickUpPlace, quindi dovrai avviare un feeder.

Guarda il file target/config/peers.cfg per vedere i peer di rendezvous. In questo caso, ce ne sono 3. I nodi in esecuzione sulla porta 8001 e 9001 sono solo nodi Emissary. Il nodo in esecuzione sulla porta 7001 è il feeder. Quindi avviamo 8001 e 9001 in due terminali diversi.

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

Poiché questi nodi conoscono tutti le porte 8001, 9001 e 7001, vedrai errori nei log mentre continuano a tentare di connettersi.

Nota: nelle distribuzioni del mondo reale non eseguiamo più processi Emissary sullo stesso nodo. Puoi configurare il nome host con -h.

Feed (Cluster)

Con i nodi avviati sulle porte 8001 e 9001, dobbiamo avviare il feeder. Il comando feed usa la porta 7001 di default, ma dobbiamo impostare una directory da cui il feeder leggerà. I file inseriti in quella directory saranno disponibili per i nodi worker da prendere e il lavoro dovrebbe essere distribuito tra il cluster. Avvia il feed con

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

Dovresti essere in grado di raggiungere http://localhost:8001, http://localhost:9001 e http://localhost:7001 nel browser e guardare i luoghi configurati. Inserisci alcuni file in ~/Desktop/feed1 e guarda i 2 nodi elaborarli. Potrebbe volerci un minuto prima che inizino l'elaborazione.

Agenti (Cluster)

Gli agenti in modalità cluster mostrano ancora una volta i dettagli sui mobileAgents. Inizia dal nodo che configuri (localhost:9001 di default), poi contatta tutti i nodi che conosce e ottiene le stesse informazioni. Eseguilo con:

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

Pool (Cluster)

Il pool in modalità cluster fa anche la stessa cosa del pool in standalone. Inizia dal nodo (localhost:9001) di default poi va a tutti i nodi che conosce e aggrega una vista compressa del cluster. Eseguilo con

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

Topologia (Cluster)

La topologia parla con il nodo configurato (localhost:8001 di default) e parla con ogni nodo che conosce. La risposta è ciò che tutti quei nodi conoscono, così puoi costruire una topologia di rete del tuo cluster. Eseguilo con

root@kitploit:~
./emissary topology

Esecuzione del server con SSL

Il keystore e la password del keystore sono nel file emissary.client.EmissaryClient-SSL.cfg. Incluso e configurato di default c'è un keystore di esempio che puoi usare per testare questa funzionalità. Non raccomandiamo l'uso del keystore di esempio in ambienti di produzione. Per usare il tuo keystore, modifica i valori di configurazione nel file emissary.client.EmissaryClient-SSL.cfg.

Standalone

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

Cluster

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/

Contattaci

Domande generali

Se hai domande o dubbi su questo progetto, puoi contattarci a: [email protected]

Domande sulla sicurezza

Per domande sulla sicurezza e segnalazione di vulnerabilità, fai riferimento a SECURITY.md

Scarica lo strumento