# huaweicloud-VSS-API-jenkins-intergration-sample **Repository Path**: HuaweiCloudDeveloper/huaweicloud-vss-api-jenkins-intergration-sample ## Basic Information - **Project Name**: huaweicloud-VSS-API-jenkins-intergration-sample - **Description**: 华为漏洞扫描服务集Web漏洞扫描、操作系统漏洞扫描、资产及内容合规检测、安全配置基线检查、弱密码检测、开源合规及漏洞检查、移动应用安全检查七大核心功能为一体,自动发现网站或服务器在网络中的安全风险,为云上业务提供多维度的安全检测服务,满足合规要求,让安全弱点无所遁形。 - **Primary Language**: XML - **License**: Apache-2.0 - **Default Branch**: master-dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2022-06-22 - **Last Updated**: 2022-11-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### **项目介绍** 本项目是华为云开发者团队利用华为VSS服务能力,基于Jenkins构建任务调用VSS服务API对Web网站进行漏洞扫描的实践,基于多种不同能力的漏洞扫描插件,模拟用户真实浏览场景,帮助用户发现网站潜在的安全隐患。 ### **设计思想** 本项目场景通过DevCloud流水线调用Jenkins构建任务,基于VSS服务对Web网站进行漏洞扫描的实践,通过Jenkins构建任务调用API集成VSS漏洞扫描能力,实现对网站恶意内容、潜在风险、网站安全漏洞的扫描,并可以提供详细的漏洞分析报告,针对不同类型的漏洞提供专业可靠的修复建议。 ### **环境配置** 1.创建ECS 购买并登录弹性云服务器ECS,具体操作步骤请参考[购买并登录Linux弹性云服务器](https://support.huaweicloud.com/basics-ecs/ecs_01_0103.html) 2.JDK安装 yum install java-1.8.0-openjdk* -y 3.Jenkins安装 登录弹性云服务器ECS后,执行下面的命令安装和运行Jenkins环境。 wget https://mirrors.jenkins-ci.org/redhat/jenkins-2.332-1.1.noarch.rpm yum -y install daemonize rpm -ivh jenkins-2.332-1.1.noarch.rpm service jenkins start 4.导入样例demo 下载样例demo,把下载的压缩包解压缩。 登录弹性云服务器ECS后,执行cd /var/lib/jenkins/jobs命令,进入jobs目录,把解压缩后的webvsstask文件夹放到当前路径下。 5.修改所属用户及所属组 登录弹性云服务器ECS后,执行下面的命令修改所属用户及所属组。 chgrp -R jenkins webvsstask chown -R jenkins webvsstask 6.安装插件 Jenkins默认是英语语言,建议安装插件设置Jenkins的语言为中文。进入到Jenkins首页,单击"Manage Jenkins" > "Manage Plugins",单击"可选插件",搜索Locale plugin插件 ,搜索找到后,进行安装,安装后,重启Jenkins。 ### **参数介绍** `domain_name: IAM用户所属帐号名` `user_name: IAM用户名` `project_id: IAM用户所属帐号ID` `project_name: IAM用户所属帐号的项目名称` `password:IAM用户密码` `domain_url: 被扫描的Web网站的域名` `alias:被扫描的Web网站的域名的别名` `auth_mode:认证方式` `task_name: 扫描任务的名称` `interval: 获取扫描结果请求间隔时间(单位是秒)` ### **代码说明** 1.获取IAM用户Token API。 ![输入图片说明](document/%E8%8E%B7%E5%8F%96IAM%E7%94%A8%E6%88%B7Token.png) 2.根据获取IAM用户Token接口返回值,获取Token,设置到xauthtoken.sh文件中。 ![输入图片说明](document/%E8%AE%BE%E7%BD%AEtoken.png) 3.从xauthtoken.sh文件中获取token作为请求参数,调用创建域名资产 API,把接口返回值中的domain_id设置到文件domain_id.sh中。 ![输入图片说明](document/%E5%88%9B%E5%BB%BA%E5%9F%9F%E5%90%8D%E8%B5%84%E4%BA%A7.png) 4.从xauthtoken.sh文件中获取token作为请求参数,调用认证域名资产 API,对域名资产进行认证。 ![输入图片说明](document/%E8%AE%A4%E8%AF%81%E5%9F%9F%E5%90%8D%E8%B5%84%E4%BA%A7.png) 5.从xauthtoken.sh文件中获取token作为请求参数,调用创建扫描任务并启动 API,执行漏洞扫描任务。 ![输入图片说明](document/%E5%88%9B%E5%BB%BA%E6%89%AB%E6%8F%8F%E4%BB%BB%E5%8A%A1%E5%B9%B6%E5%90%AF%E5%8A%A8.png) 6.根据接口的返回值,获取任务ID,使用任务ID作为请求参数,调用获取扫描结果 API。 ![输入图片说明](document/%E8%8E%B7%E5%8F%96%E6%89%AB%E6%8F%8F%E7%BB%93%E6%9E%9C.png) 7.设置查看漏洞扫描结果地址,地址中需要使用任务ID,域名ID,扫描任务的名称。 ![输入图片说明](document/%E6%9F%A5%E7%9C%8B%E6%BC%8F%E6%B4%9E%E6%89%AB%E6%8F%8F%E7%BB%93%E6%9E%9C%E5%9C%B0%E5%9D%80.png) ### **使用注意事项** 1.请在构建任务执行完成后,再重新执行构建任务。如果上一次的构建任务没有执行完成,请不要执行新的构建任务。 2.样例demo使用的是VSS服务的基础版本,基础版配额内仅支持Web网站漏洞扫描(域名个数:5个,扫描次数:5个域名每日总共可以扫描5次)是免费的。可以根据需要,选择不同规格的VSS服务,详细规格信息,请参考[产品规格差异](https://support.huaweicloud.com/usermanual-vss/vss_01_0125.html)。 3.样例demo在调用创建扫描任务并启动 API时,设置的请求参数,实现的是Web常规漏洞扫描和端口扫描的功能,如果VSS版本是专业版、高级版、企业版可以通过设置不同的参数,实现更多的扫描功能,更多扫描功能,请参考[创建扫描任务并启动](https://support.huaweicloud.com/api-vss/CreateTasks.html)。 ### **参数配置** 1.IAM用户所属帐号名 ![输入图片说明](document/%E7%99%BB%E5%BD%95%E9%A1%B5%E9%9D%A2-IAM%E7%94%A8%E6%88%B7%E6%89%80%E5%B1%9E%E5%B8%90%E5%8F%B7%E5%90%8D.png) 或者 ![输入图片说明](document/%E7%BB%9F%E4%B8%80%E8%BA%AB%E4%BB%BD%E8%AE%A4%E8%AF%81-IAM%E7%94%A8%E6%88%B7%E6%89%80%E5%B1%9E%E5%B8%90%E5%8F%B7%E5%90%8D.png) 2.IAM用户名 ![输入图片说明](document/%E7%99%BB%E5%BD%95%E9%A1%B5%E9%9D%A2-IAM%E7%94%A8%E6%88%B7%E5%90%8D.png) 或者 ![输入图片说明](document/%E7%BB%9F%E4%B8%80%E8%BA%AB%E4%BB%BD%E8%AE%A4%E8%AF%81-IAM%E7%94%A8%E6%88%B7%E5%90%8D.png) 3.IAM用户所属帐号的项目ID、项目名称 ![输入图片说明](document/IAM%E7%94%A8%E6%88%B7%E6%89%80%E5%B1%9E%E5%B8%90%E5%8F%B7%E7%9A%84%E9%A1%B9%E7%9B%AEID.png) [项目ID获取方式参考链接](https://support.huaweicloud.com/api-iam/iam_17_0002.html) 4.IAM用户密码 ![输入图片说明](document/IAM%E7%94%A8%E6%88%B7%E5%AF%86%E7%A0%81.png) 5.被扫描的Web网站的域名 包含[http://]或者[https://]的网站域名。VSS是通过公网访问域名/IP地址进行扫描的,请确保该目标域名/IP地址能通过公网正常访问。 6.被扫描的Web网站的域名的别名 自定义的网站域名的别名,只能由字母,数字,下划线,中划线,中文组成。长度是(1~50)。 7.认证方式 可以设置的值有"file","auto","free"。 file,文件认证。 auto,一键认证。 free,免认证。选择此项默认已阅读并了解下述使用要求 使用须知: 1、您的账号已完成实名认证,且非受限账号。 2、您确认您已获得对扫描对象进行扫描的相关合法权利。 3、您确认您的扫描行为有合法合理目的,且符合适用的法律法规要求,不得利用本服务从事任何黑灰产等非法活动。 4、若您违反上述承诺,我们有权立即终止您对本服务的使用,并要求您对我们及相关第三方因此遭受的损失进行赔偿。 样例demo使用的资源符合一键认证的条件,使用的认证方式是一键认证方式。如果不能使用一键认证方式,建议使用免认证方式,即认证方式的参数设置为free。文件认证,目前需要在漏洞扫描服务的页面进行操作,有关认证方式的更多内容,请参考[域名认证](https://support.huaweicloud.com/usermanual-vss/vss_01_0054.html )。 ![一键认证方式的要求如图:](document/%E4%B8%80%E9%94%AE%E8%AE%A4%E8%AF%81.png) 8.扫描任务的名称 自定义的扫描任务的名称,只能由字母,数字,下划线,中划线,中文组成。长度是(1~50)。 9.获取扫描结果请求间隔时间(单位是秒) 调用获取扫描结果 API的间隔时间,建议设置为(10~60之间的整数)。 ### **验证** 1.进入到Jenkins首页,单击构建任务名,例如:"webvsstask",单击"Build with Parameters",按照参数配置,设置正确的参数,单击"开始构建"。 ![输入图片说明](document/%E6%89%A7%E8%A1%8C%E6%9E%84%E5%BB%BA%E4%BB%BB%E5%8A%A1.png) 2.在构建任务页面,单击构建任务的执行序号,单击页面左侧"控制台输出",通过构建任务的日志,查看构建执行情况。 ![输入图片说明](document/%E6%9F%A5%E7%9C%8B%E6%9E%84%E5%BB%BA%E7%8A%B6%E6%80%81.png) 3.等待构建任务执行完成,查看构建结果,单击构建日志中查看漏洞扫描结果地址,查看漏洞扫描结果。 ![输入图片说明](document/%E6%9E%84%E5%BB%BA%E6%97%A5%E5%BF%97.png) ![输入图片说明](document/%E6%9F%A5%E7%9C%8B%E6%BC%8F%E6%B4%9E%E6%89%AB%E6%8F%8F%E7%BB%93%E6%9E%9C%E9%A1%B5%E9%9D%A2.png) ### **参考指南** [华为漏洞扫描服务VSS参考文档](https://support.huaweicloud.com/vss/index.html) [华为漏洞扫描服务VSS产品](https://www.huaweicloud.com/product/vss.html) 华为漏洞扫描服务VSS开发指南