基于Github的源码白盒扫描工具Raptor
Raptor(猛禽)是一款基于WEB界面的github源代码扫描器。你只需要给它一个Github repository的URL地址,它就能进行自动扫描。
简单介绍
你也可以在Raptor设置WEB监控机制,在每次进行提交或者合并分支时,它会收到消息然后进行自动化扫描。这些扫描工作是异步进行的,而且只有启动扫描的用户自己才能看到扫描结果。
Raptor的一些特性:
插件体系结构(新加入的插件能直接使用+生成统一报告) WEB服务可以定时自动化运行(不需要去UI界面操作) 为新的漏洞或者编程语言,进行创建/编辑/删除签名的操作
笔者声明一下,这个项目是为了帮助社区和初创企业进行代码安全检测,可能不会有商业产品的那样的质量保证。此外,这个工具只是为了给代码审计和研发人员提供发现漏洞的切入点,所以请不要盲目信任工具输出的内容。
当然,如果你将它加入CI/CD(持续集成和持续交付)的话,那应该会不错的。
在这里Raptor集成了一些插件。大家注意,为了兼容本框架,下面不少的工具/模块/库都是被改过的:
MozillaScanJS – 扫描JavaScript (主要是客户端的Node.JS等等, 未来会支持Chrome和Firefox插件) Brakeman- 扫描Ruby Rails RIPS - 扫描PHP Manitree – 扫描 AndroidManifest.xml等等
规则包:
ActionScript – 扫描Flash/Flex(ActionScript 2.0 & 3.0)源 FindSecurityBugs (只含规则) – 扫描Java (J2EE, JSP, Android, Scala, Groovy等等) gitrob – 扫描敏感数据的泄露(包含证书/配置/备份/私密设置的信息)
安装步骤
笔者安装时,在Ubuntu 14.04 x64 LAMP环境下测试通过,点击阅读原文查看安装视频。
$ wget https://github.com/dpnishant/raptor/archive/master.zip -O raptor.zip
使用方法
点击阅读原文查看使用视频。
cd raptor-master
然后你就可以访问本地的WEB服务了:
http://localhost/raptor/
登陆
你可以用你在github服务器上注册的用户名来登陆,密码任意输入即可(但在查看扫描结果的时候,需要用到相应的用户名)。
比如,如果你在github.com上注册了账户foobar,你就需要用foobar这个账户名去扫描github.com上面的repos。
但是,如果你在私人的github服务器上注册了foobar_corp账户,比如:
https://github.corp.company.com/
在这时,你就需要使用账户foobar_corp,去扫描github.corp.company.com服务器上的repos。
提醒一下大家,现在没有在demo版本中搞数据库,所以现在密码验证的地方可以随意输入。
规则编辑器
你可以使用系统自带的轻量级GUI规则编辑器,用它来加入新的规则。当然啦,你也可以使用其他文本编辑器,因为规则包文件只是普通的JSON文件。
操作时只需要打开backend/rules下面的规则包,然后将修改/新增后的规则,保存在backend/rules目录下面即可。简单来说,你需要做的只有少量的编辑工作。
你可以通过这里的URL地址直接访问规则编辑器:
http://localhost/raptor/editrules.php
添加规则
ignore_list.rulepack:
你可以添加一些针对目录名/文件名的正则匹配,避免raptor去扫一些无用的文件如jquery.min.js,或者去深入扫描/test/这样的目录。
在“插件”选项里,规则插件都放在rules目录下。Issue区域是规则包文件里提到的issue的ID: Example#1, Example#2。match_type区域的值可以是regex/start/end三个选项,value区域的值是为了配合match_type区域而填写的字符串,这里需要进行Base64编码以防出现JSON syntax语法错误。
解释一下,match_type中的regex是基于正则的匹配,start会匹配字符串片段开头,end会匹配字符串片段结尾。
这是在扫描器扫描完issue后进行的,它会依次遍历发现的issue,然后去除其中(ignore_list.rulepack)里面匹配到的内容。
规则实例:{
your_rule_name.rulepack:
你自己可能也会创建一个新的规则包(rulepack)/扫描插件,然后将其加入扫描器框架。
如果你想要更好地利用这个扫描器,并不仅仅将其作为一个正则匹配器,你可以写一个像这样的简单扫描插件,在这里整合脚本,并脚本加入规则插件列表中。我想,这对那些有着python基础的人是非常简单的。
*参考来源:github,FB小编dawner编译,未经许可禁止转载
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 宏任务和微任务的一个小事
- 如何使用ES6的新特性async await进行异步处理
- java9-可以在interface中定义私有方法了
- 继承
- ES5新增方法
- django 重写user表 继承 AbstractUser 出现创建用户密码是明文
- Element表单嵌套数据验证
- 表格中的输入框验证
- 如何设置Element表格显示或者隐藏列
- Python 二进制,十进制,十六进制转换
- 原生node处理get和post请求
- 如何在Vue中自己实现v-model
- 【STM32F429】第1章 当前主流的小型嵌入式GUI
- 【Unity游戏开发】升级Unity2019后,资源管线后处理采坑记录
- Angular @Effect监听指定Action类型的实现原理