将Acunetix与CircleCI集成
如果要在DevSecOps中包含Acunetix ,则需要将其与CI / CD系统集成。Acunetix具有针对最受欢迎的CI / CD系统Jenkins的现成集成。但是,您可以使用Acunetix REST API将扫描仪与任何CI / CD系统集成。在本文中,我们将向您展示如何将Acunetix与CircleCI CI / CD平台集成。
在此分步示例中,我们将使用在Node.JS上运行的简单Web应用程序。我们将将此应用程序与GitHub和CircleCI集成。
步骤1.准备您的Acunetix目标信息 登录到您的Acunetix安装。 为您的Web应用程序创建目标。在此示例中,可通过以下URL使用我们的Web应用程序:http : //testwebapp.acunetixexample.com : 8080。 输入您的Web应用程序的URL 输入您的Web应用程序的描述 点击保存按钮 您将被带到“目标设置”页面,现在可以从URL检索目标ID。 转到您的个人资料页面,然后单击“复制”按钮以检索您的API密钥。 第2步。准备您的GitHub存储库 登录到您的GitHub帐户-在此示例中,帐户名称为acunetix-test,帐户电子邮件地址为webmaster@acunetixexample.com。 在“存储库”页面上,单击“新建”按钮。 创建新的存储库: 输入存储库名称-在此示例中,存储库名称将为testwebapp 输入存储库的描述 启用添加自述文件复选框以初始化存储库 单击创建存储库按钮 步骤3.准备您的本地环境 在此示例中,本地环境将是Ubuntu 20.04.1桌面安装程序,但是对于大多数Linux或MacOS安装程序,它应该是相同的。用适合您环境的步骤替换特定于平台的步骤就足够了。以下所有步骤将在您的本地环境计算机上执行。
安装先决条件 更新和升级您的环境: sudo apt update && sudo apt upgrade -y 安装git与您的GitHub存储库进行交互: sudo apt install git -y 安装Node.JS和npm: sudo apt install npm -y 编写本地源代码 查看您的GitHub存储库: cd ~ git clone https://github.com/acunetix-test/testwebapp.git (substitute "acunetix-test" with your GitHub account name) 在本地代码存储库中初始化npm: cd ~/testwebapp npm init -y 使用基本文件夹中的app.js文件创建基本的Web应用程序: nano ~/testwebapp/app.js 将以下行添加到您的app.js文件中: const http = require('http'); http.createServer(function (req, res) { res.write(''); res.write('Welcome to the Test Web Application!'+'
'); res.write('===================================='+'
'); res.write(''); res.end(); }).listen(80, '0.0.0.0'); 将CircleCI工作流配置文件添加到您的源代码中 创建配置文件: mkdir ~/testwebapp/.circleci nano ~/testwebapp/.circleci/config.yml 将以下行添加到您的config.yml文件中: version: 2.1
jobs: pull-and-build: docker: – image: arvindr226/alpine-ssh steps: – checkout – run: ssh -oStrictHostKeyChecking=no -v $USERNAME@$HOSTNAME "./deploy.sh"
workflows: version: 2 build-project: jobs: – pull-and-build: filters: branches: only: – main 将更改提交到GitHub存储库 转到正确的目录: cd ~/testwebapp 设置您的GitHub凭据和远程存储库(用您的GitHub帐户电子邮件地址代替): git config user.email "webmaster@acunetixexample.com" 提交代码更改: cd ~/testwebapp git add . git commit -m "first code commit" git push 步骤4.准备部署环境 在此示例中,部署环境将是在云平台上运行的Ubuntu 18.04 LTS服务器。因此,您的部署环境的主机名将与目标的主机名相同(在此示例中:testwebapp.acunetixexample.com)。
为CircleCI创建用户以连接到部署环境 以root用户登录到您的部署环境。 创建一个不使用密码登录的用户: useradd -m -d /home/circleuser -s /bin/bash circleuser 为circleuser用户创建一个不带密码的SSH密钥: ssh-keygen -m PEM -t rsa -f ~/.ssh/circleuser 将新创建的公钥添加到/home/circleuser/.ssh/authorized_keys: mkdir -p /home/circleuser/.ssh printf "\n" >> /home/circleuser/.ssh/authorized_keys cat ~/.ssh/circleuser.pub >> /home/circleuser/.ssh/authorized_keys chown -R circleuser:circleuser /home/circleuser 显示私钥的内容: cat ~/.ssh/circleuser 复制私钥的内容–您将使用它来允许CircleCI登录到您的部署环境。 创建一组SSH密钥供用户在GitHub中进行身份验证 以circleuser用户身份登录到您的部署环境。 创建不带密码的新SSH密钥: ssh-keygen -t rsa 在控制台中显示公钥,并将其复制以供以后使用: cat ~/.ssh/id_rsa.pub 登录到GitHub帐户并导航到应用程序的存储库。 单击设置选项卡。 在边栏中选择部署密钥。 单击添加部署键按钮。 添加新密钥: 将“标题”字段设置为LogFromDeployEnvironment(或任何其他易于记忆的名称) 将您先前复制的公共密钥的内容粘贴到“密钥”字段中 点击添加键按钮 为SSH和HTTP配置防火墙访问 允许通过防火墙的SSH和HTTP通信:
登录到您的部署环境并运行以下命令: sudo ufw allow OpenSSH sudo ufw allow 80 sudo ufw enable 设置项目 以circleuser用户身份登录到您的部署环境。 克隆项目源代码(根据需要替换为格式:git@github.com:your_user_name / your_application_name.git): git clone git@github.com:acunetix-test/testwebapp.git 暂时移至testwebapp文件夹并安装依赖项: cd testwebapp npm install cd ~ 暂时将您的特权提升为root用户并安装pm2,以允许将Node应用程序作为后台进程运行: su npm install -g pm2 Exit 使用pm2启动您的Node应用程序以注册该过程: pm2 start ~/testwebapp/app.js 创建一个deploy.sh文件: nano ~/deploy.sh 将以下行添加到您的deploy.sh文件中: #!/bin/bash
cd ~/testwebapp
git pull origin main
npm install export PATH=~/.npm-global/bin:$PATH source ~/.profile
pm2 restart ~/testwebapp/app.js 步骤5.将CircleCI配置为与GitHub集成 设置CircleCI项目 登录您的CircleCI帐户。 转到项目列表,然后单击要使用的项目的“设置项目”按钮-在此示例中,您的项目名为testwebapp。 单击“使用现有配置”按钮(您已经在存储库中创建了config.yml文件)。 单击开始构建按钮(这将使用您存储库中的config.yml)。这将立即触发第一个构建并将您发送到管道页面。此初始构建将失败,因为您需要执行一些其他步骤。 配置SSH密钥以使CircleCI连接到部署环境 在应用程序的管道页面上,单击“项目设置”按钮。 单击“ SSH密钥”菜单项。 单击添加SSH密钥按钮。 输入您的部署环境的主机名(在此示例中:testwebapp.acunetixexample.com)。 输入从部署环境复制的私钥。 单击添加SSH密钥按钮。 配置环境变量 在应用程序的管道页面上,单击“项目设置”按钮。 单击环境变量菜单项。 单击添加环境变量按钮。 为您先前在部署环境中创建的circleuser用户添加环境变量: 将名称字段设置为USERNAME 将值字段设置为circleuser 单击添加环境变量按钮 为您的部署环境的IP地址或主机名添加一个环境变量。在此示例中,主机名是testwebapp.acunetixexample.com: 将名称字段设置为HOSTNAME 将值字段设置为testwebapp.acunetixexample.com 单击添加环境变量按钮 步骤6.测试管道工作流程 检查一切是否正常的主要测试是简单地对源代码进行更改,提交更改,并将更改推送到GitHub。这将显示在您的CircleCI管道页面中:
步骤7.与Acunetix集成 最后,您需要在部署环境中编辑deploy.sh文件,以添加说明以在每次构建后触发对Web应用程序目标的Acunetix扫描。
以circleuser用户身份登录到您的部署环境。 编辑deploy.sh文件: nano ~/deploy.sh 在您的deploy.sh文件中添加一条卷曲线以触发扫描;最终文件应如下所示: #!/bin/bash
cd ~/testwebapp
git pull origin main
export PATH=~/.npm-global/bin:$PATH source ~/.profile
pm2 restart ~/testwebapp/app.js
curl -k -i --request POST --url "https://online.acunetix.com/api/v1/scans" --header "X-Auth: [API KEY]" --header "content-type: application/json" --data '{"profile_id":"11111111-1111-1111-1111-111111111111","schedule":{"disable":false,"start_date":null,"time_sensitive":false},"user_authorized_to_scan":"yes","target_id":"[Target ID]"}' 替换3个突出显示的字段: 要设置正确的X-Auth值,请将[API KEY]文本替换为您在第一部分中检索到的API密钥。 该建议值PROFILE_ID是11111111-1111-1111-1111-111111111111 -这个默认值是一个全扫描。如果希望指定其他扫描配置文件,则可以设置以下值之一: 对于Acunetix的在线版本: 全面扫描:11111111-1111-1111-1111-111111111111 高风险漏洞:11111111-1111-1111-1111-111111111112 SQL注入漏洞:11111111-1111-1111-1111-111111111113 弱密码:11111111-1111-1111-1111-111111111115 跨站点脚本漏洞:11111111-1111-1111-1111-111111111116 仅抓取:11111111-1111-1111-1111-111111111117 恶意软件扫描:11111111-1111-1111-1111-111111111120 完整的网络和网络扫描:11111111-1111-1111-1111-21111111111111 网络扫描:11111111-1111-1111-1111-211111111112 网络扫描(安全检查):11111111-1111-1111-1111-211111111113 网络扫描快速:11111111-1111-1111-1111-211111111114 对于本地版本的Acunetix: 全面扫描:11111111-1111-1111-1111-111111111111 高风险:11111111-1111-1111-1111-111111111112 SQL注入漏洞:11111111-1111-1111-1111-111111111113 弱密码:11111111-1111-1111-1111-111111111115 跨站点脚本漏洞:11111111-1111-1111-1111-111111111116 仅抓取:11111111-1111-1111-1111-111111111117 高/中风险:11111111-1111-1111-1111-111111111119 恶意软件扫描:11111111-1111-1111-1111-111111111120 您也可以使用可能已创建的任何自定义扫描配置文件的扫描配置文件ID。您可以使用Acunetix REST API以编程方式检索自定义扫描配置文件的扫描配置文件ID,也可以导航到自定义扫描配置文件并检查URL: 要设置正确的target_id值,请将[Target ID]文本替换为您在第一部分中检索到的目标ID。 现在,将来所有的提交都会触发对Acunetix的扫描请求:
————————————————
版权声明:本文为CSDN博主「kevin20182019」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kevin20182019/article/details/117119435
将Acunetix与CircleCI集成的更多相关文章
- Acunetix与WAF集成:Acunetix和F5 BigIP ASM
该的Acunetix API让您有机会来实现任务自动化,从而提高效率-尤其是当你可以用加速您的工作流程的其他组件的功能整合.在此示例中,我们将在上一篇文章的基础上,向您展示如何在Bash脚本中使用Ac ...
- docusaurus 生成的website 通过circleci部署gh-pages
docusaurus 是facebook 开源的一款文档脚手架工具,可以快速的进行文档生成,基于markdown 同时已经内置了gh-pages 发布的命令,对于ci 工具,我们只需要简单的配置就可以 ...
- 使用 circleci 自动部署 vuepress 到 github
概述 今天我想把博客什么的搬到 github 的 vuepress 上面.但是每次提交 md 文件需要手动打包然后再提交到 github 的 gh-pages,非常麻烦.所以我去研究了一下用 circ ...
- CircleCI 与持续集成
CircleCI 入门 最近在完成老师的作业:使用 CircleCI 进行持续集成,现将过程书写下来,与大家一起学习进步. A. What is CircleCI? 1. 什么是持续集成 持续集成(C ...
- 使用 CircleCI 2.0 进行持续集成/持续部署
使用 CircleCI 2.0 进行持续集成/持续部署 - 简书https://www.jianshu.com/p/36af6af74dfc Signup - CircleCIhttps://circ ...
- WAF集成:Acunetix和FortiWeb
Acunetix API使您有机会自动化任务以提高效率,尤其是在您可以加速与工作流其他组件的集成功能时.在此示例中,我们将在上一篇文章的基础上,向您展示如何在Bash脚本中使用Acunetix API ...
- fir.im weekly - 「 持续集成 」实践教程合集
我们常看到许多团队和开发者分享他们的持续集成实践经验,本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等项目搭建持续集成的实践,以及一些国内外公司的内部持续集 ...
- 基于 CODING 的 Spring Boot 持续集成项目
本文作者:CODING 用户 - 廖石荣 持续集成的概念 持续集成(Continuous integration,简称 CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少 ...
- 使用 CODING 进行 Hexo 项目的持续集成
本文作者:CODING 用户 - 廖石荣 关于持续集成的概念 持续集成指的是,频繁地(一天多次)将代码集成到主干. 持续集成的过程 如图所示: CI 过程:代码编写 -> 源代码库(GitHub ...
随机推荐
- GLSL着色器,来玩
对实现动画的前端同学们来说,canvas可以说是最自由,最能全面控制的一个动画实现载体.不但能通过javascript控制点.线.面的绘制,使用图片资源填充:还能改变输入参数作出交互动画,完全控制动画 ...
- MySQL之数据操纵语言(DML)
数据操纵语言(DML) 数据操纵语(Data Manipulation Language),简称DML. DML主要有四个常用功能. 增 删 改 查 insert delete update sele ...
- 调试备忘录-SWD协议解析
目录--点击可快速直达 目录 写在前面 1 SWD协议简介 2 SWD物理层协议解析 2.1 SWD通信时序分析 2.2 SWD 寄存器简介 2.2.1 DP寄存器 2.2.2 AP寄存器 ...
- Python小白的数学建模课-A1.国赛赛题类型分析
分析赛题类型,才能有的放矢. 评论区留下邮箱地址,送你国奖论文分析 『Python小白的数学建模课 @ Youcans』 带你从数模小白成为国赛达人. 1. 数模竞赛国赛 A题类型分析 年份 题目 要 ...
- Java读取SQL server数据库
要打开SQL server 的三个服务,然后再执行代码. package com.sql; import java.sql.SQLException; import java.sql.Statemen ...
- FPGA多功能应用处理器
FPGA多功能应用处理器 编解码加速卡 概述: 对于H.265/HEVC/VP9编解码处理,FPGA编解码加速卡方案有着完善的功能和preset配置,支持最多的有利于提高画质和降低bitrate的功能 ...
- Tensor基础实践
Tensor基础实践 飞桨(PaddlePaddle,以下简称Paddle)和其他深度学习框架一样,使用Tensor来表示数据,在神经网络中传递的数据均为Tensor. Tensor可以将其理解为多维 ...
- CUDA运行时 Runtime(四)
CUDA运行时 Runtime(四) 一. 图 图为CUDA中的工作提交提供了一种新的模型.图是一系列操作,如内核启动,由依赖项连接,依赖项与执行分开定义.这允许定义一次图形,然后重复启动.将 ...
- 扩展LLVM:添加指令、内部函数、类型等
扩展LLVM:添加指令.内部函数.类型等 Introduction and Warning Adding a new intrinsic function Adding a new instructi ...
- mysql 高级和 索引优化,目的:查的好,查的快,性能好
1-事物隔离级别: 更新丢失, 并发情况下,对同一字段进行更新,就会出现更新丢失,采用乐观锁,比较版本号或时间戳可解决 读未提交 解决了更新丢失但是会引起脏读, 二个session.sessionA中 ...