标注的博客| 安全研究| 渗透测试| APT

首页

thesponge/dawn scanner:dawn是一个用于ruby编写的web应用程序的静态分析安全扫描器。它支持sinatra、padrino和ruby on rails框架。

作者 prehn 时间 2020-02-26
all

dawnscanner是一个源代码扫描器,用于检查ruby代码的安全性问题。

dawnscanner能够扫描普通的ruby脚本(例如命令行应用程序),但在处理web应用程序源代码时,它的所有功能都会释放出来。dawnscanner能够扫描主要的MVC(模型-视图-控制器)框架,开箱即用:

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]

麻省理工学院执照

兹免费授予获得本软件及相关文档文件(以下简称“软件”)副本的任何人使用、复制、修改、合并、发布、分发、再授权和/或出售本软件副本的权利,并允许其受以下条件限制,软件提供方:

上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。

软件是“按原样”提供的,没有任何保证,明示或默示,包括但不限于适销性、适合特定用途和不侵权的保证。在任何情况下,无论是在合同诉讼、侵权诉讼或其他诉讼中,作者或版权所有人都不应相信任何索赔、损害赔偿或其他责任是由软件或软件的使用或其他交易引起的、由软件引起的或与之相关的。