欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

甲方安全中心建设:代码审计系统

来源:本站整理 作者:佚名 时间:2018-07-09 TAG: 我要投稿

纵观甲方的安全体系建设,最开始和最重要的那一部分就是代码安全。甲方公司内部有很多项目,每个项目都由不同的开发人员进行开发,所以项目开发水平也是参差不齐,也就是说有很大可能产生漏洞(SQL注入XSS,命令执行等)。很多甲方公司公司无法将SDL彻底落地除了DevOps的频繁交付,还有就是安全工程师无法在短时间内对大量项目的源代码进行人工审计。基于上面这个原因,我自己写了一个自动化代码审计的系统,为了让自己能够偷懒,减少工作量,提升工作效率。
该系统是使用python3的django去开发,队列使用celery+redis,最后调用代码审计工具fortify进行审计代码。
安装
源码的地址:https://github.com/yingshang/banruo.git
docker安装,具体可以去查看源码的docker目录
FROM ubuntu:16.04
COPY run.sh /opt/run.sh
COPY sources.list /etc/apt/sources.list
COPY fortify_linux /opt/fortify_linux
ENV DEBIAN_FRONTEND noninteractive  
RUN chmod 777 /opt/run.sh
RUN apt-get update -y \
  && apt-get install -y mysql-server mysql-client libmysqlclient-dev --no-install-recommends \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN apt-get update -y
RUN apt-get install -y redis-server  unzip python3-pip wget vim git libffi-dev libssl-dev  libjpeg8-dev zlib1g-dev libxml2-dev libxslt-dev libyaml-cpp-dev
RUN pip3 install django
RUN pip3 install  mitmproxy==0.18.2
RUN pip3 install django-celery redis pymysql
RUN pip3 install typing
RUN cd /opt && git clone https://github.com/yingshang/banruo.git
RUN service mysql start && mysql -e "create  database banruo DEFAULT CHARSET utf8 COLLATE utf8_general_ci; " && mysql -e "set password for 'root'@'localhost' =password('123456');"
RUN service mysql start &&  cd /opt/banruo && python3 manage.py makemigrations && python3 manage.py migrate
RUN mkdir /data && mkdir /data/fortify && mkdir /data/fortify/report && chmod 777 /data -R
#这个是fortify的运行程序
#RUN chmod 777 -R /opt/fortify_linux/ && ln -s /opt/fortify_linux/bin/sourceanalyzer /usr/local/bin/sourceanalyzer && ln -s /opt/fortify_linux/bin/ReportGenerator /usr/local/bin/ReportGenerator
EXPOSE 8000
ENTRYPOINT /opt/run.sh
演示的docker,里面有一些测试数据。
docker run -it -p 8000:8000 wushangleon/sc
(很奇怪,在最小安装版的centos7启动不起来,但是图形系统又可以启动。可以直接使用Ubuntu启动这个docker)
系统架构
系统分为下面几个部分:
1.报告图表
报告图表我使用echarts进行渲染生成图表,这里面包括周报、月报和年报,图表中有漏洞趋势和高危漏洞占比。

2.项目扫描
我在设计要怎么拖取项目进行扫描的时候,想过要不要直接调取gitlab或者jenkins的接口,但是感觉这样太麻烦了,还不如干脆直接拉取项目。
①git项目扫描,这个功能只支持对单个项目进行扫描,适合于扫描单个项目的代码。
②git-list扫描,这个功能支持对多个项目批量扫描,我在配置文件设置了两种扫描方案,一种是本地文本文件里面有多个项目的git地址(推荐),一种服务器运行一个接口,通过调取这个接口获取项目的git地址。这里可以去django的后台设置定时计划,我是每天凌晨的时候去跑项目,因为晚上服务器没有人用。
#git-list
http://192.168.1.210:8880/root/dvwa.git
http://192.168.1.210:8880/root/test.git
下面是web-api

③svn扫描,对于这个功能我感觉可有可无,对于中型企业一般都是本地搭建gitlab做版本控制,主要是我没用到SVN= =
④压缩包上传,这个功能只支持单个项目进行扫描,并且只允许上传ZIP文件。

3.项目情况
这个功能显示每个项目的名字,漏洞总数,以及扫描的类型,点击项目的序号进入到项目详情查看项目的具体情况,里面包括项目高危漏洞分布的图表和漏洞代码的位置,这样就可以很快定位到漏洞的问题。还有一个重新审计的功能,这个功能不支持压缩类型的重新审计,毕竟你还不如直接上传审计。(对于代码高亮那一部分是借鉴了cobra的代码=-=)


这些漏洞标题、漏洞描述、修复建议是参照fortify报告的描述,但是fortify是英文,我在info.py翻译成中文,我只翻译了严重和高危的漏洞的描述。

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载