将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

posted @ 2021-05-21 15:21  51component技术交流  阅读(82)  评论(0编辑  收藏  举报