dawnscanner是一个源代码扫描器,用于检查ruby代码的安全性问题。
dawnscanner能够扫描普通的ruby脚本(例如命令行应用程序),但在处理web应用程序源代码时,它的所有功能都会释放出来。dawnscanner能够扫描主要的MVC(模型-视图-控制器)框架,开箱即用:
- Ruby on Rails公司
- 西纳屈
- 帕德里诺
2018年11月快速更新
正如你所见,道恩斯卡纳已经被搁置了一年多。对不起,这是生活。我被成堆的东西压得喘不过气来,我把空闲时间花在提供安全认证上。老实说,我很快就要开始欧安组织的工作了。
dawnscanner项目将很快更新,进行新的安全检查,并再次启动。
保罗
dawnscanner 1.6.6版在其知识库中加载了235个安全检查。大多数是应用于gems或ruby解释器的CVE公告。还有一些来自Owasp Ruby on Rails的检查单。
全面介绍
当您在代码上运行dawnscanner时,它会解析您的项目Gemfile.lock,查找使用的gems,并尝试检测您正在使用的或您在您的ruby版本管理工具中声明的您喜欢的ruby解释器版本(RVM,rbenv,…)。
然后,该工具尝试检测您的web应用程序使用的MVC框架,并相应地应用安全检查。这些检查旨在匹配railsapplication或适用于任何ruby代码的检查。
dawnscanner还可以理解视图中的代码,并通过backtracksinks发现由您实际编写的代码引入的跨站点脚本和sql注入。在项目路线图中,这是大多数未来开发工作将关注的代码。
dawnscanner security scan result是一个漏洞列表,其中包含一些您希望遵循的缓解措施,以便构建更强大的web应用程序。
安装
您可以安装最新的dawnscanner版本,通过键入以下命令从rubygems获取:
$ gem install dawnscanner
如果要将dawn添加到项目Gemfile中,必须添加以下内容:
group :development do
gem 'dawnscanner', :require=>false
end
然后升级包
$ bundle install
您可能希望从源代码构建它,因此必须首先从github签出它:
$ git clone https://github.com/thesp0nge/dawnscanner.git
$ cd dawnscanner
$ bundle install
$ rake install
dawnscanner gem将构建在pkg目录中,然后安装在您的系统中。请注意,您必须以这种方式管理对自己的依赖关系。只有当你想破解代码或者其他类似的东西时才有意义。
用法
您可以很容易地用dawnscanner开始代码检查。只需告诉工具项目根目录的位置。
dawnscanner使用目标Gemfile.lockfile自动检测底层MVC框架。如果autodetect由于某种原因失败,工具会抱怨它,您必须手动指定它是rails、sinatra还是padrino web应用程序。
基本用法是指定一些可选的命令行选项以满足您的需要,并指定存储代码的目标目录。
$ dawn [options] target
在需要的情况下,有一个快速的命令行选项参考runningdawn-h在您的操作系统提示符下。
dawn -h
$ dawn -h
Usage: dawn [options] target_directory
Examples:
$ dawn a_sinatra_webapp_directory
$ dawn -C the_rails_blog_engine
$ dawn -C --json a_sinatra_webapp_directory
$ dawn --ascii-tabular-report my_rails_blog_ecommerce
$ dawn --html -F my_report.html my_rails_blog_ecommerce
-G, --gem-lock force dawn to scan only for vulnerabilities affecting dependencies in Gemfile.lock (DEPRECATED)
-d, --dependencies force dawn to scan only for vulnerabilities affecting dependencies in Gemfile.lock
Reporting
-a, --ascii-tabular-report cause dawn to format findings using tables in ascii art (DEPRECATED)
-j, --json cause dawn to format findings using json
-K, --console cause dawn to format findings using plain ascii text
-C, --count-only dawn will only count vulnerabilities (useful for scripts)
-z, --exit-on-warn dawn will return number of found vulnerabilities as exit code
-F, --file filename tells dawn to write output to filename
-c, --config-file filename tells dawn to load configuration from filename
Disable security check family
--disable-cve-bulletins disable all CVE security checks
--disable-code-quality disable all code quality checks
--disable-code-style disable all code style checks
--disable-owasp-ror-cheatsheet disable all Owasp Ruby on Rails cheatsheet checks
--disable-owasp-top-10 disable all Owasp Top 10 checks
Flags useful to query Dawn
-S, --search-knowledge-base [check_name] search check_name in the knowledge base
--list-knowledge-base list knowledge-base content
--list-known-families list security check families contained in dawn's knowledge base
--list-known-framework list ruby MVC frameworks supported by dawn
--list-scan-registry list past scan informations stored in scan registry
Service flags
-D, --debug enters dawn debug mode
-V, --verbose the output will be more verbose
-v, --version show version information
-h, --help show this help
Rake任务
要将dawnscanner包含在rake任务列表中,只需将这一行放在Rakefile中
Rakefile
require 'dawn/tasks'
然后执行$rake-T您将有一个黎明:运行您想要执行的任务。
$ rake -T
dawn:run
$ rake -T
...
rake dawn:run # Execute dawnscanner on the current directory
...
与知识库交互
你可以用这种方法转储知识库中的所有安全检查
$ dawn --list-knowledge-base
在脚本中很有用,您可以使用--search knowledge base或-S with作为参数,该参数是要查看它是否实现为securitycontrol的检查名称。
--search-knowledge-base
-S
$ dawn -S CVE-2013-6421
07:59:30 [*] dawn v1.1.0 is starting up
CVE-2013-6421 found in knowledgebase.
$ dawn -S this_test_does_not_exist
08:02:17 [*] dawn v1.1.0 is starting up
this_test_does_not_exist not found in knowledgebase
dawnscanner安全扫描正在运行
作为输出,dawnscanner将放置扫描期间失败的所有安全检查。
这是Codedake::dawnscanner运行aSinatra 1.4.2web应用程序的结果,它为2013年在Railsberry会议上提交的一个演讲编写了一篇文章。
如您所见,dawnscanner首先通过在Gemfile.lock处查找来检测运行应用程序的MVC,然后丢弃所有不适用于inatra的安全检查(1.0版中有49个安全检查,特别是为Ruby onRails设计的),并应用它们。
$ dawn ~/src/hacking/railsberry2013
18:40:27 [*] dawn v1.1.0 is starting up
18:40:27 [$] dawn: scanning /Users/thesp0nge/src/hacking/railsberry2013
18:40:27 [$] dawn: sinatra v1.4.2 detected
18:40:27 [$] dawn: applying all security checks
18:40:27 [$] dawn: 109 security checks applied - 0 security checks skipped
18:40:27 [$] dawn: 1 vulnerabilities found
18:40:27 [!] dawn: CVE-2013-1800 check failed
18:40:27 [$] dawn: Severity: high
18:40:27 [$] dawn: Priority: unknown
18:40:27 [$] dawn: Description: The crack gem 0.3.1 and earlier for Ruby does not properly restrict casts of string values, which might allow remote attackers to conduct object-injection attacks and execute arbitrary code, or cause a denial of service (memory and CPU consumption) by leveraging Action Pack support for (1) YAML type conversion or (2) Symbol type conversion, a similar vulnerability to CVE-2013-0156.
18:40:27 [$] dawn: Solution: Please use crack gem version 0.3.2 or above. Correct your gemfile
18:40:27 [$] dawn: Evidence:
18:40:27 [$] dawn: Vulnerable crack gem version found: 0.3.1
18:40:27 [*] dawn is leaving
当您在具有最新依赖项的web应用程序上运行dawnscanner时,它可能会返回友好的“未找到漏洞”消息。让它继续这样工作!
这是dawnscanner运行的Padrino web应用程序,我为ascorecard应用程序安全问答游戏编写的。仅限意大利语。对不起的。
18:42:39 [*] dawn v1.1.0 is starting up
18:42:39 [$] dawn: scanning /Users/thesp0nge/src/CORE_PROJECTS/scorecard
18:42:39 [$] dawn: padrino v0.11.2 detected
18:42:39 [$] dawn: applying all security checks
18:42:39 [$] dawn: 109 security checks applied - 0 security checks skipped
18:42:39 [*] dawn: no vulnerabilities found.
18:42:39 [*] dawn is leaving
如果您需要一个关于您的扫描的漂亮的HTML报告,只需让它使用--HTML标记与--file一起使用,因为我想将HTML保存到磁盘。
--html
--file
$ dawn /Users/thesp0nge/src/hacking/rt_first_app --html --file report.html
09:00:54 [*] dawn v1.1.0 is starting up
09:00:54 [*] dawn: report.html created (2952 bytes)
09:00:54 [*] dawn is leaving
有用的链接
项目主页:http://dawnscanner.org
推特简介:@dawnscanner
Github存储库:https://Github.com/thesponge/dawnscanner
邮件列表:https://groups.google.com/forum/#!论坛/dawnscanner
支持我们
反馈很好,我们真的很喜欢听到你的声音。
如果你是一个自豪的dawnscanner用户,如果你觉得它有用,如果你把它集成到你的发布过程中,如果你想公开支持这个项目,你可以把你的参考放在这里。打开anissue,写上一个声明,说你觉得这个工具和你的公司标志怎么样,如果有的话。
更容易的是,你可以通过电子邮件[email protected]发送一份关于你成功故事的声明,我会把它放到网站上。
谢谢您。
多亏了
萨滕:第一期是关于自述中的一个错误
贝弗主席:他杰出的工作激发了我创造曙光和双重检查比较矩阵。第二期是你的:)
marinerJB:对于其他bug报告和进一步的想法
Matteo:关于API的想法及其在github.com钩子中的使用
许可证
版权所有(c)2013-2016 Paolo Perego [email protected]
麻省理工学院执照
兹免费授予获得本软件及相关文档文件(以下简称“软件”)副本的任何人使用、复制、修改、合并、发布、分发、再授权和/或出售本软件副本的权利,并允许其受以下条件限制,软件提供方:
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
软件是“按原样”提供的,没有任何保证,明示或默示,包括但不限于适销性、适合特定用途和不侵权的保证。在任何情况下,无论是在合同诉讼、侵权诉讼或其他诉讼中,作者或版权所有人都不应相信任何索赔、损害赔偿或其他责任是由软件或软件的使用或其他交易引起的、由软件引起的或与之相关的。