写作漏洞检查

这是在安全控制台中开发自定义漏洞检查的教程。有关此主题的更多信息,请参阅以下文章:

安全控制台包括使用简单XML格式创建复杂漏洞检查的框架。漏洞检查跨越安全控制台启动时由安全控制台解析的两个或多个文件。

组成漏洞检查的2种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.用于重新使用其他漏洞。解决方案包含有关如何修复漏洞的信息。当推荐的解决方案因使用同一解决方案的多个漏洞而发生更改时,解决方案文件允许该解决方案编写一次并在一个位置更新。
      <李>您可以在此阅读更多关于解决方案文件的信息外部引用.

创建您的第一个漏洞检查

在本文中,我们将从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-leap.xml具有以下内容:

         
xml
1.
<?xml version = ' 1.0 '编码=“utf - 8”?>
2.
<脆弱性id="cmty http wordpress wplinks opml信息泄漏"发表="2007-05-26"补充="2010-03-13"修改="2010-03-13"版本="2.0">
3.
<姓名>WordPress版本信息通过wp泄露-链接-OPML.php姓名>
4.
<标签>
5.
<标签>WordPress标签>
6.
<标签>网页标签>
7.
<标签>社区标签>
8.
标签>
9
<CVSS.>(成人影片:N/自动控制:L/:N/C:P/:N/A.:N)CVSS.>
10.
<alterateids.>
11.
<id姓名="URL">http://博主安全/WordPress./工具/WP.-扫描仪id>
12.
alterateids.>
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.
<解决方案id="cmty http wordpress禁用wplinks opml"时间="30米">
22.
<概括>使残废进入湿地-链接-OPML.php页面概括>
23.
<解决方法>
24.
<P>评估是否OPML.需要启用你的博客如果不是,禁用访问WP-链接-OPML.PHP页面要么
25.
删除它或使用您的Web服务器的访问控制机制(例子htaccess on阿帕奇)禁用超文本传输协议使用权
26.
这个文件P>
27.
解决方法>
28.
解决方案>
29.
解决方案>
30.
脆弱性>

让我们来解释一下这个文件的不同部分:

    <李>这个<代码class="prism-code language-text">id属性-安全控制台中的每个漏洞都有一个唯一的标识符。此ID区分此漏洞,并由相应的<代码class="prism-code language-text">.vck文件(在下面描述)。在本例中,漏洞ID为<代码class="prism-code language-text">cmty http wordpress wplinks opml信息泄漏.这个<代码class="prism-code language-text">cmty部分代表“社区”。此前缀用于将此漏洞保留与RAPT7发布的任何内容碰撞。
      <李>请注意,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">修改属性 - 这描述了上次修改此XML文件时。
      <李>如果修改XML文件,则必须修改<代码class="prism-code language-text">修改否则,否则安全控制台不会重新处理此文件。如果希望安全控制台将此数据重新导入其内部数据库,则必须更改<代码class="prism-code language-text">修改每次更改此文件时都会属性。
  • 这个<代码class="prism-code language-text">版本attribute—此属性指的是漏洞描述符文件格式的版本。应该始终设置为<代码class="prism-code language-text">2.0
  • 这个<代码class="prism-code language-text"><名称>元素 - 这<代码class="prism-code language-text"><名称>元素是漏洞的标题,如安全控制台UI和报告中的漏洞细节列表中显示。
  • 这个<代码class="prism-code language-text">元素——该元素存储了完整的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
    • cve-2002-1850 对于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"><李>这样它就可以被解析为中间文档格式,随后被转换为(x)HTML,PDF,RTF和明文格式。
      1. 这个<代码class="prism-code language-text"><解决方案>element—该元素描述了“我如何修补或修复这个漏洞?”漏洞的解决方案分组在解决方案元素下,并由<代码class="prism-code language-text">id(对于文件外解决方案)或在文件本身中构造(内联解决方案)。使用解决方案id的原因是为了让补救报告能够自动确定如何优化补救步骤(例如,将多个漏洞压缩为一个通用解决方案,以对所有漏洞进行补救)。时间属性指的是遵循解决方案中列出的步骤所需的估计时间。您可以使用<代码class="prism-code language-text">30米代表30分钟或<代码class="prism-code language-text">2 h20m代表2小时20分钟。

    创建漏洞检查(.vck)文件

    现在创建一个名为的文件<代码class="prism-code language-text">cmty-http-wordpress-wplinks-opml-info-lever.vck具有以下内容:

             
    xml
    1.
    <脆弱性检查id="cmty http wordpress wplinks opml信息泄漏"范围="终点">
    2.
    <网路服务类型="HTTP | HTTPS"/>
    3.
    <HTTPCheck>
    4.
    <HTTPRequest方法="得到">
    5.
    <URI>/WP.-链接-OPML.phpURI>
    6.
    HTTPRequest>
    7.
    <httpresponse.代码="200">
    8.
    <正则表达式>发电机=“WordPress/(*)”正则表达式>
    9
    httpresponse.>
    10.
    HTTPCheck>
    11.
    脆弱性检查>

    让我们来解释一下这个文件的不同部分:

      <李>这个<代码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">< NetworkService >元素指示扫描引擎对发现运行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">< HTTPRequest >子元素和一个<代码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响应主体匹配。看到http://nlp.stanford.edu/nlp/javadoc/gnu-regexp-docs/syntax.html..有关完整的语法参考。如果要做不区分大小写的匹配,请指定<代码class="prism-code language-text">< regex cflags = " REG_ICASE " >.模式匹配在按线路基础上发生。如果您希望正则表达式匹配多行,请指定<代码class="prism-code language-text">

    部署漏洞检查

    要部署此漏洞检查,只需复制您的<代码class="prism-code language-text">. xml和相同的<代码class="prism-code language-text">.vck文件保存到以下目录中:

             
    1.
    /plugins/java/1/CustomScanner/1/

    接下来,访问Nexpose命令控制台和运行<代码class="prism-code language-text">负载内容命令。注意控制台上的错误(查看<代码class="prism-code language-text">nsc.log)重新加载内容时。如果您犯了任何错误,则安全控制台将在编译新漏洞时记录一些错误消息。如果一切都成功,您应该在日志中看到类似以下消息的内容:

             
    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信息泄漏到<代码class="prism-code language-text">/vulnerability/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">vultnerability.html.上面描述的页面URL(不要忘记刷新页面)。如果系统易受攻击,但您的检查未被检测到,请尝试运行受影响资产的漏洞报告卡报告(详细级别设置为高),以了解为什么安全控制台没有找到漏洞。