跳转至

JenkinsCI远程代码执行漏洞

Jenkins-CI 远程代码执行漏洞(CVE-2017-1000353)

步骤一、生成序列化字符串

编译payload所需的文件都在payload.zip,主要有如下几种文件:

  • Payload.java 生成Payload的Java文件源码
  • payload.jar 生成完成的Payload
  • *.jar 编译/运行上述源码需要的依赖库
  • exploit.py 将Payload发送到目标的软件

因为我已经编译好了payload.jar,所以无需编译(当然你也可以尝试编译,反正源码都在)。直接执行下面命令,生成字节码文件:

java -jar payload.jar jenkins_poc.ser "touch /tmp/success"
\# jenkins_poc.ser是生成的字节码文件名
\# "touch ..."是待执行的任意命令

执行上述代码后,生成jenkins_poc.ser文件,这就是序列化字符串。

步骤二、发送数据包,执行命令

修改exploit.py,一是修改其中的URL为你目标URL,二是修改FILE_SER的文件名为你刚才生成的序列化文件的文件名。

执行(我用的py3成功,py2没测试,可能有BUG):

img

进入docker,发现/tmp/success成功被创建,说明命令执行漏洞利用成功:

img


修复方案:

升级到最新版: Jenkins 主版本用户升级到2.58 Jenkins LTS 版本用户升级到2.46.2 对Jenkins后台进行安全加固,配置强密码,使用安全组配置严格的网络访问控制策略,禁止对所有人开放和访问