编写漏洞检查
这是一个关于在安全控制台中开发自定义漏洞检查的教程。关于这个主题的更多信息可在以下文章中获得:
安全控制台包括一个使用简单XML格式创建复杂漏洞检查的框架。漏洞检查被分割成两个或多个文件,当扫描引擎启动时,安全控制台会对这些文件进行解析。
有两种类型的XML文件构成一个漏洞检查:
- 漏洞描述符-以字符结尾的文件<代码class="prism-code language-text">.xml包含特定漏洞信息(标题、描述、严重性、CVE ID、CVSS分数等)的扩展。
- 漏洞检查-以字符结尾的文件<代码class="prism-code language-text">.vck包含多个测试的扩展,这些测试在运行时编译并由安全控制台用于验证描述符中描述的漏洞的存在(或不存在)。
一个漏洞可以有几种不同类型的检查(或<代码class="prism-code language-text">.vcks) 与之相关的。
存在第三种可选的XML文件类型:
- 漏洞解决方案文件-以字符结尾的文件<代码class="prism-code language-text">.sol包含漏洞解决方案信息的扩展。此解决方案信息可以选择性地包含在漏洞定义中<代码class="prism-code language-text">.xml锉刀,锉刀<代码class="prism-code language-text">.sol用于重新使用其他漏洞。解决方案包含有关如何修复漏洞的信息。当推荐的解决方案因使用同一解决方案的多个漏洞而发生更改时,解决方案文件允许该解决方案编写一次并在一个位置更新。
- 您可以在本文中阅读有关解决方案文件的更多信息
外部参照.
- 您可以在本文中阅读有关解决方案文件的更多信息
创建您的第一个漏洞检查
在本文中,我们将从Nikto重新实现一个简单的漏洞检查,因为这是一个许多人都会熟悉的开源工具。这个示例基于Nikto中添加的WordPress版本信息泄漏检查。让我们在安全控制台中执行相同的检查,以便您可以看到方法上的差异。
Nikto支票写为:
1.
“006184”、“0”、“3”、“/wp links opml.php”、“GET”、“generator=\”WordPress/“、”“、”“、”“、”“,”,此WordPress脚本显示已安装的版本。“、”“、”
在本支票中:
- <代码class="prism-code language-text">006184是Nikto漏洞ID
/ wp-links-opml.php是请求的URL路径生成器=\“WordPress/要在响应中查找的字符串,该字符串表示存在此漏洞(引号以Nikto文件格式转义)
现在,让我们在Security Console中创建一个相同漏洞的检查——您将发现格式更复杂,并且需要更长时间来编写(尽管在Rapid7内部,我们有创作工具来加快这个过程)。
创建漏洞描述符(.xml)文件
首先,我们创建<代码class="prism-code language-text">.xml描述符文件。该文件看起来很复杂,但实际上很容易解释。创建一个名为<代码class="prism-code language-text">cmty-http-wordpress-wplinks-opml-info-leak.xml其内容如下:
xml
1.
<?xml版本='1.0'编码='UTF-8'?>
2.
<弱点身份证件="cmty http wordpress wplinks opml信息泄漏"出版="2007-05-26"补充="2010-03-13"被改进的="2010-03-13"版本="2">
3.
<的名字>WordPress通过wp泄漏版本信息-链接-opml.php的名字>
4.
<标签>
5.
<标签>WordPress标签>
6.
<标签>网状物标签>
7.
<标签>社区标签>
8.
标签>
9
<cvss>(成人影片:N/自动控制:L/金:N/C:P/我:N/A.:N)cvss>
10
<AlternateIds>
11
<身份证件的名字="统一资源定位地址">http://blogsecurity.网/wordpress/工具/可湿性粉剂-扫描仪身份证件>
12
AlternateIds>
13
<描述>
14
<P>这个版本的这个WordPress博客软件可能会因请求
15
名为wp的文件-链接-opml.php.这页面输出链接信息在里面OPML
16
总体安排.OPML是这个
17
<A.href="http://en.wikipedia.org/wiki/OPML">概述处理器标记语言A.>,
18
用于在博客和用户之间交换信息RSS聚合器.P>
19
描述>
20.
<解决方案>
21
<解决方案身份证件="cmty http wordpress禁用wplinks opml"时间="30米">
22
<总结>使残废查阅可湿性粉剂-链接-opml.php页面总结>
23
<解决方案>
24
<P>评估是否OPML需要启用对于你的博客.如果不,禁用对wp的访问-链接-opml.php页面由
25
删除它或使用web服务器的访问控制机制(对于实例.htaccess上阿帕奇)禁用超文本传输协议访问
26
来这文件.P>
27
解决方案>
28
解决方案>
29
解决方案>
30.
弱点>
让我们解释一下这个文件的不同部分:
- 这个<代码class="prism-code language-text">身份证件属性-安全控制台中的每个漏洞都有一个唯一的标识符。此ID区分此漏洞,并由相应的<代码class="prism-code language-text">.vck文件(如下所述)。在这种情况下,漏洞ID为<代码class="prism-code language-text">cmty http wordpress wplinks opml信息泄漏. 这个<代码class="prism-code language-text">cmty部分代表“社区”。此前缀用于防止此漏洞与Rapid7发布的任何漏洞发生冲突。
- 请注意,XML文件必须具有与ID相同的基名。漏洞ID包含不超过255个字母、数字或连字符(<代码class="prism-code language-text">-).
- 这个<代码class="prism-code language-text">出版属性-漏洞可能有一个发布日期,该日期描述了有关漏洞的信息首次发布的日期。此属性是可选的,但如果该漏洞的信息可用,强烈建议包含此属性。在这种情况下,我们选择了<代码class="prism-code language-text">2007-05-26因为这是我能找到的关于这一特定信息泄露的最早参考资料。此属性可能包含以下格式的有效日期:<代码class="prism-code language-text">YYYY-MM-DD.
- 这个<代码class="prism-code language-text">补充属性-描述符可能有一个添加的日期,用于记录它首次包含在安全控制台中的时间。在这种情况下,添加的日期为<代码class="prism-code language-text">2010-03-13,这是本教程最初编写的日期。
- 这个<代码class="prism-code language-text">被改进的attribute—描述最后一次修改XML文件的时间。
- 如果修改XML文件,则必须修改<代码class="prism-code language-text">被改进的属性,否则安全控制台将不会重新处理此文件。如果希望安全控制台将此数据重新导入其内部数据库,则必须更改<代码class="prism-code language-text">被改进的属性。
- 这个<代码class="prism-code language-text">版本属性-此属性表示漏洞描述符文件格式的版本。这应始终设置为<代码class="prism-code language-text">2.
- 这个<代码class="prism-code language-text">
元素-元素<代码class="prism-code language-text"> 元素是漏洞的标题,如安全控制台UI和报告中的漏洞详细信息列表所示。 - 这个<代码class="prism-code language-text">< cvss >元素-此元素存储对该漏洞进行评分的完整CVSSv2向量。看见
http://www.first.org/cvss/cvss-guide.html有关CVSS的更多信息。 - 安全控制台根据向量自动计算CVSS基本分数。
- 这个<代码class="prism-code language-text">
元素标记用于对漏洞进行分类,以便进行类别搜索或自定义扫描模板。我给了这个漏洞两个标签:<代码class="prism-code language-text">网状物和<代码class="prism-code language-text">WordPress. - 这个<代码class="prism-code language-text">
元素-此元素用于将多个引用标识符分组到漏洞描述符。这些通常包括对Secunia咨询、CVE ID和URL的引用。安全控制台将自动在UI中生成正确的超链接,并根据内置逻辑为大多数类型的ID生成报告。备用ID可以采用多种形式,包括: - <代码class="prism-code language-text">< id名称=“出价”> 8725 < / id >为了一个Bugtraq ID
< id名称= " CVE " > CVE - 2002 - 1850 < / id >获取CVE ID
- 这个<代码class="prism-code language-text">
元素-此元素用于提供有关漏洞行为的有用信息,该信息显示在UI的漏洞详细信息页面中。此元素支持有限的HTML标记子集,包括<代码class="prism-code language-text">,<代码class="prism-code language-text">,<代码class="prism-code language-text"> - 这个<代码class="prism-code language-text">< >解决方案元素-此元素描述“如何修补或补救此漏洞?”。漏洞的解决方案分组在“解决方案”元素下,并由引用<代码class="prism-code language-text">身份证件(对于文件外解决方案)或在文件本身中构造(内联解决方案)。使用解决方案ID的原因是,修复报告可以自动找出如何优化修复步骤(例如,将多个漏洞分解为一个通用解决方案,以修复所有漏洞)。时间属性是指按照解决方案中列出的步骤操作所需的估计时间。你可以用<代码class="prism-code language-text">30米代表30分钟或<代码class="prism-code language-text">2h20m代表2小时20分钟。
创建一个漏洞检查(.vck)文件
现在创建一个名为<代码class="prism-code language-text">cmty-http-wordpress-wplinks-opml-info-leak.vck其内容如下:
xml
1.
<脆弱性检查身份证件="cmty http wordpress wplinks opml信息泄漏"范围="端点">
2.
<网路服务类型="HTTP | HTTPS"/>
3.
<HTTPCheck>
4.
<HTTPRequest方法="收到">
5.
<URI>/可湿性粉剂-链接-opml.phpURI>
6.
HTTPRequest>
7.
<HTTPResponse代码="200">
8.
<正则表达式>发电机=“WordPress/(*)”正则表达式>
9
HTTPResponse>
10
HTTPCheck>
11
脆弱性检查>
让我们解释一下这个文件的不同部分:
- 这个<代码class="prism-code language-text">身份证件属性引用XML文件中使用的相同ID。这将告诉安全控制台此检查针对的是哪个漏洞。
- 这个<代码class="prism-code language-text">范围属性应设置为<代码class="prism-code language-text">端点针对特定于服务的漏洞(影响特定端口或服务的漏洞),或<代码class="prism-code language-text">节点针对系统范围的漏洞(影响整个系统的漏洞)。根据定义,Web漏洞是特定于端点的,而利用TCP/IP堆栈进行攻击将针对整个节点。
- 这个<代码class="prism-code language-text">
元素指示扫描引擎对发现运行HTTP或HTTPS协议的任何端口运行此检查。请注意<代码class="prism-code language-text">|字符(也称为“管道”字符),用于指示HTTP或HTTPS。 - 这个特殊的<代码class="prism-code language-text">.vck使用<代码class="prism-code language-text">
元素来指示基本HTTP“发送请求,匹配响应”类型的检查。<代码class="prism-code language-text"> 只能包含一个<代码class="prism-code language-text"> 子元素和一个<代码class="prism-code language-text">< HTTPResponse >要素这个<代码class="prism-code language-text"> 元素可以包含一个或多个<代码class="prism-code language-text">< URI >元素。如果有多个<代码class="prism-code language-text">< URI >元素存在时,将依次请求每个URI,以查找与<代码class="prism-code language-text">< HTTPResponse >条件 - 这个<代码class="prism-code language-text">< HTTPResponse >元素表示“查找HTTP状态代码为。<代码class="prism-code language-text">200其主体与给定的正则表达式匹配”。
- 这个<代码class="prism-code language-text"><正则表达式>元素使用Perl 5语法,但有一些小差异。这将与HTTP响应体进行匹配。看到
http://nlp.stanford.edu/nlp/javadoc/gnu-regexp-docs/syntax.html查阅完整的语法参考。如果要进行不区分大小写的匹配,请指定<代码class="prism-code language-text"> . 模式匹配是逐行进行的。如果希望正则表达式跨多行匹配,请指定<代码class="prism-code language-text"> .
部署漏洞检查
要部署此漏洞检查,只需复制<代码class="prism-code language-text">.xml及相应<代码class="prism-code language-text">.vck文件保存到以下目录中:
1.
/plugins/java/1/CustomScanner/1/
接下来,访问
1.
2015-12-18T08:59:43[信息]插入了1个漏洞。
2.
...
3.
2015-12-18T08:59:55[信息]加载内容命令完成。
最后,打开弱点选项卡,并访问新漏洞检查的详细信息。最简单的方法是附加<代码class="prism-code language-text">cmty http wordpress wplinks opml信息泄漏到<代码class="prism-code language-text">/脆弱/ vuln-summary.jsp吗?vulnid =格式在浏览器的URL字段。下面是一个类似的例子(代换)<代码class="prism-code language-text">{控制台地址或域}使用控制台主机的正确IP地址或FQDN):
1.
https://{console address或domain}:3780/vulen/vuln summary.jsp?vulnid=cmty-http-wordpress-wplinks-opml-info-leak
您应该在此视图中看到新漏洞的详细信息。检查信息并纠正任何错误。在进行任何必要的更改后,不要忘记将文件重新部署到安全控制台目录。
用你的新漏洞进行扫描
您的新漏洞将自动包含在大多数默认扫描模板中。只需对存在此漏洞的服务器运行扫描,并查看是否显示该漏洞。安全控制台应在下显示任何新的受影响资产<代码class="prism-code language-text">vulnerability.html上面描述的页面URL(不要忘记刷新页面)。如果系统易受攻击,但未检测到您的检查,请尝试运行受影响资产的漏洞报告卡报告(详细程度设置为高),以了解安全控制台未找到漏洞的原因。