首页 > 其他分享 >秘密扫描Gitleaks

秘密扫描Gitleaks

时间:2023-07-10 17:36:26浏览次数:42  
标签:git Gitleaks -- 扫描 ali 秘密 report jenkins gitleaks

gitleaks是一个密码扫描工具,属于SAST扫描,可以协助我们扫描文件、代码仓中的密码、秘钥串类内容,实现安全左移
https://github.com/gitleaks/gitleaks

安装二进制命令

基础安装后会发现产物大概10M大小
git clone https://github.com/gitleaks/gitleaks.git
go mod tidy
go build
为了以后更好的使用我们可以编译精简一下,这样仅剩2.7M了
git clone https://github.com/gitleaks/gitleaks.git
go mod tidy
go build -ldflags '-s -w'
upx -9q gitleaks
找一个代码路径测试一下发现有可能报错,这是git版本的问,centos默认安装的git版本是1.8.3.1,不具备git -C命令,我们需要升级一下大于1.8.5即可
[root@jenkins-bj-ali-ql1 devops-cicd-dev-bfmq-cloud]# gitleaks detect --report-path gitleaks-report.json

    ○
    │╲
    │ ○
    ○ ░
    ░    gitleaks

1:05PM ERR [git] Unknown option: -C
1:05PM ERR [git] usage: git [--version] [--help] [-c name=value]
...
升级git后再执行即可生成基线文件
[root@jenkins-bj-ali-ql1 ~]# yum -y remove git-*
[root@jenkins-bj-ali-ql1 ~]# yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-[root@jenkins-bj-ali-ql1 ~]# repo.x86_64.rpm
[root@jenkins-bj-ali-ql1 ~]# yum -y install git
[root@jenkins-bj-ali-ql1 ~]# git version
[root@jenkins-bj-ali-ql1 ~]# git --version
git version 2.41.0
[root@jenkins-bj-ali-ql1 devops-cicd-dev-bfmq-cloud]# head gitleaks-report.json 
[
 {
  "Description": "xxxx xxxx ID",
  "StartLine": 26,
  "EndLine": 26,
  "StartColumn": 18,
  "EndColumn": 42,
  "Match": "xxxxxxxxxxxxx\"",
  "Secret": "xxxxxxxxxxxxx\"",
  "File": "xxxxxx path to file",

后续基于基线文件持续扫描即可
[root@jenkins-bj-ali-ql1 devops-cicd-dev-bfmq-cloud]# gitleaks detect --baseline-path gitleaks-report.json --report-path findings.json

    ○
    │╲
    │ ○
    ○ ░
    ░    gitleaks

1:54PM INF 256 commits scanned.
1:54PM INF scan completed in 298ms
1:54PM INF no leaks found

编写jenkins pipeline

为了后续其他sec持续使用,我先列出jenkins pipeline的整体伪代码
主要包含了3个传入参数:
  • git地址:测试代码地址确定也可以忽略
  • 项目语言类型:测试代码语言固定也可以忽略
  • 是否调过安全:这个可以忽略,因为我们这次就是为了sec,不会跳过
一个最基本的pipeline流程
  1. git checkout:获取代码
  2. language Build:按语言类型进行编译
  3. language Package:按语言类型进行产物缝制
  4. product Push:制品推送
  5. cleanup:清理工作
import hudson.model.*;
@Library('pipeline-libs') _
def gotools = new go.tools()


pipeline {
    agent any

    parameters {
        string(name: 'gitUrl', defaultValue: '')
        string(name: 'projectType', defaultValue: '')
        booleanParam(name: 'skipSec', defaultValue: true)
    }

    tools {
		go 'go1.20.3'
	}

	options {
		retry(0)
		timeout(time:10, unit: 'MINUTES')
		disableConcurrentBuilds()
	    buildDiscarder(logRotator(numToKeepStr: '5'))
	}

    stages {
        stage('Set ENV') {
            steps {
                script {
                    do something...
                }
            }
        }
        stage('Git') {
            steps {
                git branch: "${branch}", credentialsId: '123456', url: "${gitUrl}"
            }
        }
        stage('Build') {
            steps {
                script{
                    do Build...
                }
            }
        }
		stage('Package') {
            steps {
                script {
                    do Package...
                }
            }
        }
        stage('Push') {
            steps {
                script {
                    do Push...
                }
            }
        }
    }

    post {
        cleanup {
            script {
                do cleanup...
            }
        }
    }
}

集成这次的秘密扫描过程
很明显gitleaks仅仅是个二进制命令,因此我们主要基于sh命令集成即可,主要处理一下初始化时生成baseline文件及git safe dir问题即可
  1. 秘密扫描明显是需要基于代码的,因此在git后
  2. 秘密扫描失败的话应当停止,而不是将不安全的制品上传,因此在build前
  3. 注意pipeline里修改了baseline file name
...
        stage('Git') {
            steps {
                git branch: "${branch}", credentialsId: '123456', url: "${gitUrl}"
            }
        }
        stage('Gitleaks') {
            steps {
                script {
                    def glstatus = 0
                    if (!fileExists("gitleaks-baseline.json")) {
                        // 初次扫描构建baseline文件,指定exit-code永远为0
                        glstatus = sh(script: "gitleaks detect --report-path gitleaks-baseline.json --exit-code 0", returnStatus: true)
                    } else {
                        glstatus = sh(script: "gitleaks detect --baseline-path gitleaks-baseline.json --report-path gitleaks-report.json", returnStatus: true)
                    }
                    if (glstatus != 0) {
                        sh "cat gitleaks-report.json"
                        error "Gitleaks security scan failed"
                    }
                }
            }
        }
...

标签:git,Gitleaks,--,扫描,ali,秘密,report,jenkins,gitleaks
From: https://www.cnblogs.com/bfmq/p/17540801.html

相关文章

  • 4.7 x64dbg 应用层的钩子扫描
    所谓的应用层钩子(Application-levelhooks)是一种编程技术,它允许应用程序通过在特定事件发生时执行特定代码来自定义或扩展其行为。这些事件可以是用户交互,系统事件,或者其他应用程序内部的事件。应用层钩子是在应用程序中添加自定义代码的一种灵活的方式。它们可以用于许多不同的用......
  • 扫描linux系统磁盘占用,释放空间的免费工具
    如何查找linux系统的磁盘占用,扫描大文件,释放空间,可以使用免费工具ncdu。虽然有du和df命令可以查询磁盘和文件夹的大小,但毕竟不方便,不能扫描整个磁盘的情况。用ncdu命令更直观,可以按目录以树形显示每个文件夹的大小,找到占空间的文件或者文件夹,删除释放磁盘空间。并且扫描速度飞快......
  • Web漏洞扫描(AWVS)
    AWVS原理是基于漏洞匹配方法,通过网络爬虫测试你的网站安全,检测流行安全漏洞。AWVS可以通过SQL注入、XSS、目录遍历、代码执行等漏洞来审核web应用程序的安全性并输出扫描报告。相对于手动测试的复杂和耗时,它能快速的发现漏洞来提高效率和漏洞覆盖面。 安装与启动:这个AWVS并......
  • 网安周报|黑客利用未修补的WordPress插件缺陷来创建秘密管理员帐户
    网安周报是棱镜七彩推出的安全资讯专栏,旨在通过展示一周内发生的与开源安全、软件供应链安全相关攻击事件,让用户了解开源及软件供应链威胁,提高对安全的重视,做好防御措施。1、黑客利用未修补的WordPress插件缺陷来创建秘密管理员帐户来百度APP畅享高清图片终极会员插件中未修补的关......
  • 《Kali渗透基础》07. 弱点扫描(一)
    目录1:漏洞发现1.1:Exploit-DB1.2:searchsploit1.3:nmap2:漏洞管理3:弱点扫描类型4:漏洞基本概念4.1:CVSS4.2:CVE4.3:OVAL4.4:CCE4.5:CPE4.6:CWE4.7:SCAP4.8:NVD5:漏洞管理6:扫描结果分析本系列侧重方法论,各工具只是实现目标的载体。命令与工具只做简单介绍,其使用另见《安全工具录》。本文以......
  • mybatis: 正确使用mybatis中的mapperLocations配置多个xml扫描路径
    <!--myBatis文件--><beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"><propertyname="dataSource"ref="dataSource"/><!--自动扫描entity目录,省掉Configu......
  • 4.2 针对PE文件的扫描
    通过运用LyScript插件并配合pefile模块,即可实现对特定PE文件的扫描功能,例如载入PE程序到内存,验证PE启用的保护方式,计算PE节区内存特征,文件FOA与内存VA转换等功能的实现,首先简单介绍一下pefile模块。pefile模块是一个用于解析Windows可执行文件(PE文件)的Python模块,它可以从PE文件中......
  • C#winform软件移植上linux的秘密,用GTK开发System.Windows.Forms
    国产系统大势所趋,如果你公司的winform界面软件需要在linux上运行,如果软件是用C#开发的,现在我有一个好的快速解决方案。世界第一的微软的MicrosoftVisualStudio,确实好用,C#开发起来确实效率高,不过微软的开发语言开发的软件的界面都是跟windows系统绑定的,现在.netcore已......
  • 关于 SAP UI5 应用附件上传的病毒扫描功能 virus scan profile
    SAPUI5是基于HTML5和JavaScript的SAP的前端开发框架,用于构建企业级应用程序。它提供了丰富的用户界面控件,以及可重用、可扩展和可定制的组件。在企业应用场景中,附件上传和下载是非常常见的需求,SAPUI5提供了丰富的UI控件库以满足各种应用需求。在实现附件上传功能时,主......
  • 扫描线
    391·数飞机lintcode/***DefinitionofInterval:*classInterval{*public:*intstart,end;*Interval(intstart,intend){*this->start=start;*this->end=end;*}*}*/classSolution{public:/......