对gitlab安全的一些思考

http://lee90.blog.51cto.com/10414478/1858636 这篇博客里面,我提到了开发人员在异地git clone导致阿里云报警的情况。

虽然后来排除了被入侵的情况,但是gitlab的配置是否安全呢?有没有被爬虫的可能呢?这些都需要再挖掘下。

我们祭出神器AWVS(全称 Acunetix Web Vulnerability Scanner),输入我们gitlab的网址,让其自动检测一遍(实际上是通过爬虫方式爬取链接,然后和他的特征库比对,看是否有已知的漏洞或能被遍历的目录)。

工具的使用不是本文的重点,不介绍了。用AWVS差不多扫了1分钟,发现gitlab服务器网页打不开了(后来发现是gitlab自带的防护机制,详见http://www.178linux.com/7982), 我们的本机IP被暂时屏蔽了,好在awvs已经给出了结果,如下图:

上图红色框内的就是能被爬虫爬到的目录,是不是很触目惊心,一个小小的疏忽就会导致很严重的后果。

我们立即管理员账号登录gitlab后台,将这些目录(或称项目)都改成internal或者private。

当然,安全起见,还要检查下暴露出的项目代码里面写了哪些用户名和密码(是否有数据库的配置、是否有VPN等非常重要的参数),建议都修改下,以免到时候出了大问题都找不到原因。

有空再贴一篇之前写的gitlab的笔记吧,gitlab的官网介绍的也已经很详细了,我就贴些重要的地方和个性化配置的参数。

拓展思路:

下面是一个判断某个网站是否是gitlab站点的方法(哪位朋友用自己的gitlab验证下吧,我不确定是否每个人的gitlab返回值都是这样子的):

#!/bin/bash
if curl -I -s --connect-timeout 1  http://xxxx.xxxx.com/users/sign_in  |grep gitlab_session > /dev/null
    echo ‘git server‘
fi

我们可以在此基础上,扩展下,导入IP列表,然后批量检测。脚本如下:

#!/bin/bash
while read line; do
    if curl -I -s --connect-timeout 1  $line/users/sign_in  |grep gitlab_session > /dev/null 2>&1 ; then
    echo "[+] $line: may be a gitlab server" >> /root/findgit.log
fi
done < /root/ip_list

经过了解,发现public项目的是在http://www.xxxx.com/public 这种目录下存放的。

因此,我们通过上面的脚本得到gitlab server主机的地址后,可以直接去 $line/public这个地址查看有哪些项目是暴露在外部的(shell处理起来有难度,得用python来解决,顺便说一下,爬虫爬的线程不要太多,太多的话会被gitlab检测到自动封IP的)。

具体操作的思路自己拓展,找到公开的项目不。

欢迎大家一起交流。。。。

时间: 2024-10-10 05:58:36

对gitlab安全的一些思考的相关文章

对前端质量保障的思考

我们时时在踩坑,有时也忍不住埋怨前人给我们留下了无数的坑,可回头想想,自己是不是也在挖坑等别人踩... 上次听 赵海平 的讲座,他提到 Facebook 没有测试人员,以前和现在都没有,以后也不打算有.还提到上线之后就开发者坐在系统前等着,只要有bug,系统能够在五分钟之内检测到,并提供快捷方式修复.我惊叹的是他们能够在五分钟之内监控到所有的问题,实时回馈并及时修复. 当然在探讨质量保障这个话题前,我们需要明确几个关键点:编码前.提交代码.测试.上线.回滚.上线后.针对这几个点,下面我谈一谈我的

Gitlab CI 自动部署 asp.net core web api 到Docker容器

为什么要写这个? 在一个系统长大的过程中会经历不断重构升级来满足商业的需求,而一个严谨的商业系统需要高效.稳定.可扩展,有时候还不得不考虑成本的问题.我希望能找到比较完整的开源解决方案来解决持续集成.监控报警.以及扩容和高可用性的问题.是学习和探索的过程分享给大家,也欢迎同行的人交流. 先来一个三步曲,我们将完成通过GitLab CI 自动部署 net core web api 到Docker 容器的一个示例.这是第一步,通过此文您将了解如何将net core web api 运行在Docker

jenkins 设置 gitlab web hooks

背景 接口自动化期望代码push后触发实现持续集成,代码push后,自动化执行jenkins的job. 步骤 准备工作 工具:jenkins,gitlab jenkins需要安装插件:git plugin,gitlab hook plugin , gitlab plugin(有的插件是自带的,缺什么安装什么) gitlab:确保有web hook权限,这个跟公司的gitlab有关,入口settings下的web hooks如下: 确保gitlab跟jenkins的连通性 hook的大概原理其实很

CentOS 7.x上gitlab搭建教程(https可用,邮件可用)

目录 知识要求 搭建感想 搭建过程 参考 知识要求: nginx基础知识 搭建感想 注:以下是我搭建gitlab时的思考,需要nginx的基础知识,Docker的基础知识才容易理解,与下面的搭建过程是独立的,不感兴趣可直接略过. 其实gitlab已经搭建并用了一年多了,现在所有的项目管理都通过gitlab完成.但是一直以来都有2个问题: 80端口被系统的nginx占用了,所以只能监听非80端口: 443端口也被系统的nginx占用,所以也一直没增加对https的支持: 最近正在尝试对所有已有的服

腾讯IVWEB前端工程化工具feflow思考与实践

本篇文章主要介绍腾讯IVWEB团队从0到1在工程化的思考和实践.feflow的全称是Front-end flow(前端工作流),致力于提升研发效率和规范的工程化解决方案.愿景是通过feflow,可以使项目创建.开发.构建.规范检查到最终项目上线的整个过程更加自动化和标准化. 要解决的问题 项目的目录结构按约定生成 团队有一套开发规范进行约束 支持多种类型的构建,包括Fis构建和webpack构建 团队内部的代码贡献统计.离线包内置App等 为了解决上述问题,我们于17年2月底开始投入工程化fef

ubuntu14.04升级以及gitlab升级

环境:系统版本ubuntu14.04 .gitlab-ce.8.11.3 升级要求:系统升级为目前最新的LTS版本的ubuntu16.04.gitlab升级为最新的版本 升级可以有两种方案: 一种类似于迁移(重新找台机器,系统直接安装ubuntu16.04,然后安装gitlab版本和原版本一致,进行数据迁移后确认数据无误后再对gitlab进行升级). 另一种直接在原机器上,首先对系统升级,然后对gitlab升级. 1.直接在原机器上升级的方案: 升级前备份数据: 停止gitlab备份数据 git

关于迭代測试的一些思考

作者:朱金灿 来源:http://blog.csdn.net/clever101 一个软件的功能的越来越多,怎样建立一个规范的測试流程来保证对开发的功能进行充分的測试,是摆在我们面前的难题.在改动bug中经常会出现一种"按下葫芦浮起瓢"情形--改动了A模块的bug,却造成了原来測试没有问题的B模块出现了新的问题.这就促使我们思考:怎样保证測试的百分百的覆盖率.为此我设想一种迭代測试和迭代公布的流程.这个流程详细是这种:全部功能測试分为常规功能測试和新功能測试.所谓常规功能測试是指之前測

关于重构工作的一点思考

最近两周一直忙着和重构相关的事情,本文将简要概述从开始制定重构方案,到具体执行的过程中遇到的问题,以及对重构的一点理性思考. 起因: 本系统是2015年11月开始建设,当时为了快速投入使用,大量的烂代码,后期一直保持快速前进,没有进行过实质性的重构. 具体表现: ● 分层不清,sql哪都有,dao有.service也有,就差controller没写了.同样dao也包含业务逻辑. ● sql用的是spring jdbc,并没有使用mybatis,导致sql写起来有些复杂,封装不够基本都是原始sql

php各种设计模式简单实践思考

前言 我一直觉得什么框架,版本,甚至语言对于一个coder来说真的不算什么,掌握一个特别高大上的一个框架或者是一个新的,少众的语言真的不算什么,因为你可以,我要花时间也可以,大家都是这样的.所以基本的显得额外重要,即是算法和数据结构,再就是好的设计模式了,,,听过一句话,是好的数据结构是让计算机更快的工作,而一个好的设计模式则是使开发者工作的更快! 单例模式 单例模式特点 $_instance 必须声明为静态的私有变量 构造函数和克隆函数必须声明为私有的,这是为了防止外部程序 new 类从而失去