一、布景

在甲方做安全的同学可能会有一项代码审计的作业,一般需求从gitlab把代码拉取下来,然后运用代码审计东西进行扫描,然后对成果进行人工承认;

在这个流程中需求做的事情比较繁琐,比如说gitlab怎么装备token、怎么主动化把代码拉取到本地、怎么调用fortify实现批量扫描等许多繁琐问题。

本篇文章以甲方安全代码安全建造为主线,同享怎么让代码审计东西主动化扫描gitlab库房里的代码。而且供给了一个便捷的试验环境供咱们测验。

本文试验中调用了多款代码审计东西(包含semgrep、fortify、墨菲、河马,其中fortify软件归于商业性质,本文章无法供给该软件,如需自备此软件并存放在主机/data/share/fortify目录),完结试验后能够看到各代码审计东西的作用比照。

二、预备环境

为了便利咱们,我把我的试验gitlab地址直接同享出来,咱们能够优先运用此同享环境。

URL:http://123.249.6.139:1880/
用户名:root
暗码:qingtingtest
token:glpat-SMsSWy6xzB4x8B6rFryB

装备gitlab环境

为了实在模拟fortify扫描gitlab库房的代码,我需求快速建立一个gitlab库房,这儿试验docker的方式最为简略,只需求履行以下的指令

docker run --detach --hostname gitlab.thinkpad --publish 8443:443 --publish 880:80 --publish 222:22 --name gitlab --restart always --volume /data/gitlab/config:/etc/gitlab --volume /data/gitlab/logs:/var/log/gitlab --volume /data/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

指令履行之后,docker会主动拉取docker镜像,并创立一个gitlab的容器,服务发动之后会随机生成一个root用户的暗码,能够经过以下指令检查root用户的初始化暗码

docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

指令履行之后,能够在终端中看到如下所示暗码

Password: UnSoOs7l8YN6dYDQRP/1/dzpKswF7dq7fpyhKBey95A=

现在能够运用浏览器拜访gitlab的页面,拜访地址是http://x.x.x.x:880/,然后浏览器会主动跳转到登录页面,如下图所示

蜻蜓:GitLab结合fortify实现自动化扫描实践

在登录页面,咱们在用户名处输入root,暗码处输入刚才得到的暗码;登录成功之后会主动跳转到作业台的首页,如下图所示。

蜻蜓:GitLab结合fortify实现自动化扫描实践

创立API拜访的token

为了让fortify能够拜访到gitlab库房的代码,咱们需求创立一个token,用于API拜访;在头像方位展开下拉菜单,挑选preferences->Access Tokens ,填下相关参数,界面如下所示

蜻蜓:GitLab结合fortify实现自动化扫描实践

创立完结,把生成的token仿制出来,后续要用到

蜻蜓:GitLab结合fortify实现自动化扫描实践

glpat-ggjo6Z6aQXWCZ2FNJcsz

gitlab建立完后,默认里面有一个空项目,fortify无法扫除有价值的缝隙,为了便利测验,需求在新建项目的方位导入项目进去,翻开URL地址 http://10.1.1.140:880/projects/new#import_project,然后挑选Repository by URL,然后填入一个能够被拉取的库房地址,这儿我供给一个供咱们试验,如下图所示

https://gitee.com/songboy/QingScan

蜻蜓:GitLab结合fortify实现自动化扫描实践

导入项目之后,gitlab会主动拉取代码到服务器,如下图所示

蜻蜓:GitLab结合fortify实现自动化扫描实践

三、装备参数

现在已经有了gitlab的试验环境,能够正式开始做试验,首要翻开蜻蜓的商场页面,URL地址如下

http://qingting.starcross.cn/scenario/store

可能会提示要求登录,如果是首次进入蜻蜓安全控制台,扫描登录之后会主动注册

然后需求在服务器履行增加节点的shell指令,依照提示进行操作即可,如下图所示

蜻蜓:GitLab结合fortify实现自动化扫描实践

现在回到商场页面,找到快速发掘0day缝隙,在下方有个按钮,增加到作业流,如下图所示

蜻蜓:GitLab结合fortify实现自动化扫描实践

增加到作业流之后,会看到作业流的信息,这儿能够把gitlab的装备信息填写进去,需求点击进入编排流程,如下图所示

蜻蜓:GitLab结合fortify实现自动化扫描实践

在编排作业流页面,上方有一个设置全局变量的小图标,依照提示装备必要参数,如下图所示

蜻蜓:GitLab结合fortify实现自动化扫描实践

四、运转程序

运转全局变量完结之后,能够右键点击第一个节点,再次点估运转选项,就能够运转这个作业流,运转过程中节点状态会发生变化

蜻蜓:GitLab结合fortify实现自动化扫描实践

节点会依照自上而下运转,运转过程中状态图标会一直旋转,当运转完结时,能够看到成功的小图标

蜻蜓:GitLab结合fortify实现自动化扫描实践

运转完结之后,能够去数据中心检查运转成果,能够依据节点和任务ID等方式挑选,如下图所示

蜻蜓:GitLab结合fortify实现自动化扫描实践

我选中fortify代码扫描节点,挑选出来的列表页面如下所示

蜻蜓:GitLab结合fortify实现自动化扫描实践

在列表页面只展现了一小部分数据,能够点击检查按钮,在详情页检查具体的缝隙信息,用于审计标示,如下图所示。

蜻蜓:GitLab结合fortify实现自动化扫描实践

上面节点的代码已经在GitHub中开源,有需求的小伙伴也能够在GitHub

https://github.com/StarCrossPortal/QingTing

GitHub地址:github.com/StarCrossPo…