写漏洞检查
自定义漏洞检查数据与Insight Platform不兼容dota2必威联赛
如果您是利用本文中描述的自定义漏洞检查功能的InsightVM订阅者,请注意,您创建的任何自定义检查以及从这些检查派生的任何扫描数据都将包含在内部安全控制台中并仅限于此。自定义检查及其扫描结果不会上游传送到洞察平台。dota2必威联赛这意味着它们将不存在于InsightVM基于云的功能和体验中,例如指示板,修复项目, 和目标和sla.
这是在安全控制台中开发自定义漏洞检查的教程。有关此主题的更多信息,请参阅以下文章:
- <李><一个href="//m.gcpym.com/insightvm/common-vulnerability-check-examples">漏洞检查示例一个>
- 构建弱凭据漏洞检查一个>
- 转换NASL检查一个>
安全控制台包括一个框架,用于使用简单的XML格式创建复杂的漏洞检查。漏洞检查在两个或多个文件之间进行分割,当扫描引擎启动时,安全控制台将解析这些文件。
有两种类型的XML文件构成一个漏洞检查:
- <李>漏洞描述符- 结尾的文件<代码class="prism-code language-text">. xml扩展,它包含关于特定漏洞的信息(标题,描述,严重性,CVE id, CVSS评分,等)。
- 漏洞检查- 结尾的文件<代码class="prism-code language-text">.vck包含多个测试的扩展,这些测试在运行时编译,并由安全控制台用于验证描述符中描述的漏洞的存在(或不存在)。
一个漏洞可以有几种不同类型的检查(或<代码class="prism-code language-text">.vck与它相关联。
存在第三个可选的XML文件类型:
- <李>漏洞解决方案文件- 结尾的文件<代码class="prism-code language-text">.sol扩展,其中包含漏洞解决方案信息。此解决方案信息可以选择性地包含在漏洞定义中<代码class="prism-code language-text">. xml成一列或分成一列<代码class="prism-code language-text">.sol以便重用其他漏洞。解决方案包含关于如何修复漏洞的信息。解决方案文件允许只编写解决方案一次,并在针对使用相同解决方案的许多漏洞所推荐的解决方案发生更改时在一个地方进行更新。
- <李>您可以在此阅读更多关于解决方案文件的信息<一个href="https://github.com/BrianWGray/cmty-nexpose-checks/wiki/Understanding-Fingerprints-and-Vulnerability-Checks">外部参考一个>.
创建您的第一个漏洞检查
在本文中,我们将从Nikto重新实现一个简单的漏洞检查,因为它是一个很多人都熟悉的开源工具。这个例子是基于添加到Nikto的WordPress版本信息泄露检查。让我们在Security Console中进行同样的检查,以便您可以看到方法上的区别。
尼克托支票是这样写的:
1
“006184”、“0”、“3”、“/ wp-links-opml.php”、“得到”,“发电机= \”WordPress /","","","",""," 这个WordPress脚本揭示了安装版本。”、“”、“”
在这张支票:
- <李><代码class="prism-code language-text">006184尼克托的漏洞ID
/wp-links-opml.php.是请求的URL路径吗发电机= \“WordPress /是要在响应中查找的字符串,该字符串将指示存在此漏洞(引用在Nikto文件格式中转义)
现在让我们在安全控制台中创建检查相同的漏洞 - 您会发现格式更复杂,并且写入更长的时间(尽管在RAPID7的内部我们有创作工具来加快工具来加速该过程。
创建漏洞描述符(.xml)文件
首先,我们创建<代码class="prism-code language-text">. xml描述符文件。文件看起来很复杂,但它实际上很容易解释。创建一个名为的文件<代码class="prism-code language-text">cmty-http-wordpress-wplinks-opml-info-leak.xml其内容如下:
xml
1
<?xml version = ' 1.0 '编码=“utf - 8”?>
2
<漏洞id="cmty-http-wordpress-wplinks-opml-info-leak"发表="2007-05-26"添加="2010-03-13"修改的="2010-03-13"版本="2.0">
3.
<的名字>WordPress版本信息通过wp泄露-链接-opml.PHP.的名字>
4
<标签>
5
<标签>WordPress标签>
6
<标签>网络标签>
7
<标签>社区标签>
8
标签>
9
<CVSS.>(AV:N/交流:l/非盟:N/C:P/我:N/一个:N)CVSS.>
10.
<alterateids.>
11.
<id的名字="URL">http://blogsecurity.网/wordpress/工具/wp-扫描仪id>
12.
alterateids.>
13.
<描述>
14.
<p>的版本的的WordPress博客软件可以通过一个请求泄露到
15.
一个名为WP的文件-链接-opml.PHP..这页面输出链接信息在OPML
16.
格式.OPML是的
17.
<一个href="http://en.wikipedia.org/wiki/OPML">大纲处理器标记语言一个>,
18.
用于在博客和rss.聚合器.p>
19.
描述>
20.
<解决方案>
21.
<解决方案id="cmty-http-wordpress-disable-wplinks-opml"时间="30m.">
22.
<总结>禁用进入湿地-链接-opml.php页面总结>
23.
<解决方法>
24.
<p>评估无论OPML需要启用为你的博客.如果不,禁用对wp的访问-链接-opml.PHP页面
25.
删除它或使用您的web服务器的访问控制机制(为例子.htaccess上Apache)禁用HTTP使用权
26.
来这文件.p>
27.
解决方法>
28.
解决方案>
29.
解决方案>
30.
漏洞>
让我们来解释一下这个文件的不同部分:
- <李>的<代码class="prism-code language-text">idattribute—安全控制台中的每个漏洞都有一个唯一的标识符。此ID用于区分该漏洞,并被相应的代码引用<代码class="prism-code language-text">.vck文件(在下面描述)。在本例中,漏洞ID为<代码class="prism-code language-text">cmty-http-wordpress-wplinks-opml-info-leak.的<代码class="prism-code language-text">cmty部分代表“社区”。此前缀用于将此漏洞保留与RAPT7发布的任何内容碰撞。
- 的<代码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">添加attribute—描述符可能有一个添加的日期,用于说明首次包含在安全控制台中的时间。在本例中,添加的日期为<代码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">修改的属性。
- <李>请注意,XML文件必须具有与ID相同的基本名称。该漏洞ID包含一系列最多255个字母字符,数字或连字符(<代码class="prism-code language-text">-).
- <李>安全控制台从向量自动计算CVSS基本分数。
- <李><代码class="prism-code language-text">
< id名称= " CVE " > CVE - 2002 - 1850 < / id >获取CVE ID创建漏洞检查(.vck)文件
现在创建一个名为的文件<代码class="prism-code language-text">cmty-http-wordpress-wplinks-opml-info-leak.vck其内容如下:
xml
1
<VulnerabilityCheckid="cmty-http-wordpress-wplinks-opml-info-leak"范围="终点">
2
<NetworkService类型="HTTP | HTTPS"/>
3.
<HTTPCheck>
4
<HTTPRequest方法="得到">
5
<URI>/wp-链接-opml.PHP.URI>
6
HTTPRequest>
7
<HTTPResponse代码="200.">
8
<正则表达式>发电机=“WordPress /(. *)”正则表达式>
9
HTTPResponse>
10.
HTTPCheck>
11.
VulnerabilityCheck>
让我们来解释一下这个文件的不同部分:
- <李>的<代码class="prism-code language-text">id属性是指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协议的任何端口运行此检查。注意the的用法<代码class="prism-code language-text">|字符(也称为“管道”字符)以指示HTTP或HTTPS。 - 这个特别<代码class="prism-code language-text">.vck用来<代码class="prism-code language-text">< HTTPCheck >元素指示一个基本的HTTP“发送请求,匹配响应”类型的检查。<代码class="prism-code language-text">< HTTPCheck >可能只包含一个<代码class="prism-code language-text">< HTTPRequest >子元素和1<代码class="prism-code language-text">
元素。的<代码class="prism-code language-text">< HTTPRequest >元素可以包含一个或多个<代码class="prism-code language-text"> 元素。如果多个<代码class="prism-code language-text"> 元素时,将依次请求每个URI,以查找与<代码class="prism-code language-text"> 条件。 - 的<代码class="prism-code language-text">
元素说“使用HTTP状态代码查找响应<代码class="prism-code language-text">200.其主体与给定的正则表达式匹配”。 - 的<代码class="prism-code language-text">
元素使用Perl 5语法,但有一些小差异。这将与HTTP响应体进行匹配。看到<一个href="http://nlp.stanford.edu/nlp/javadoc/gnu-regexp-docs/syntax.html">http://nlp.stanford.edu/nlp/javadoc/gnu-regexp-docs/syntax.html一个>有关完整的语法参考。如果要做不区分大小写的匹配,请指定<代码class="prism-code language-text"> .模式匹配是逐行进行的。如果您希望正则表达式跨多行匹配,请指定<代码class="prism-code language-text">< regex cflags = " REG_LINE_ANY_CRLF " >.
部署漏洞检查
要部署此漏洞检查,只需复制您的<代码class="prism-code language-text">. xml和相应的<代码class="prism-code language-text">.vck文件进入以下目录:
1
< nexpose-install-dir > / plugins / java / 1 / CustomScanner / 1 /
接下来,访问<一个href="//m.gcpym.com/insightvm/using-the-command-console">InsightVM命令控制台一个>和运行<代码class="prism-code language-text">加载内容命令。在控制台上观看错误(看<代码class="prism-code language-text">nsc.log),当内容被重新加载时。如果您犯了任何错误,Security Console在编译新的漏洞时将记录一些错误消息。如果一切都成功了,你应该在日志中看到类似下面的消息:
1
2015-12-18T08:59:43 [INFO]插入1个漏洞。
2
......
3.
2015-12-18T08:59:55 [INFO]加载内容命令完成。
最后,打开漏洞选项卡,并访问新的漏洞检查的详细信息。最简单的方法是追加<代码class="prism-code language-text">cmty-http-wordpress-wplinks-opml-info-leak到<代码class="prism-code language-text">/脆弱/ vuln-summary.jsp吗?vulnid =格式在浏览器的URL字段。下面是一个类似的例子(代换)<代码class="prism-code language-text">{console-address-or-domain}使用您的控制台主机的正确IP地址或FQDN):
1
https:// {console-address-or-domain}: 3780 /脆弱/ vuln-summary.jsp ? vulnid = cmty-http-wordpress-wplinks-opml-info-leak
您应该在这个视图中看到新漏洞的详细信息。复习资料并改正错误。在进行了必要的更改之后,不要忘记将文件重新部署到Security Console目录。
用你的新漏洞进行扫描
您的新漏洞将自动包含在大多数默认扫描模板中。只需对具有此漏洞的服务器进行扫描,看看是否显示该漏洞。安全控制台应该显示任何新的受影响的资产<代码class="prism-code language-text">vulnerability.html上面描述的页面URL(不要忘记刷新页面)。如果系统存在漏洞,但您的检查未被检测到,请尝试对受影响的资产运行漏洞报告卡报告(详细级别设置为高),以了解为什么安全控制台没有发现漏洞。