常见漏洞检查示例

编写漏洞检查教程通过如何在安全控制台中撰写如何编写基于HTTP的漏洞检查并运行它的简单示例。此页面包含您可以创建的不同类型检查的详细示例。

服务旗帜检查

的<代码类="prism-code language-text">元素检查网络上运行的某个服务是否存在。的<代码类="prism-code language-text">类型属性表示协议。多种的<代码类="prism-code language-text">'d类型由a分开<代码类="prism-code language-text">|(管)字符。下面的示例使用<代码类="prism-code language-text">HTTP | HTTPS表示HTTP或HTTPS。

的<代码类="prism-code language-text">元素表示在该服务上发现的指纹产品。的<代码类="prism-code language-text"><版本>元素检查产品版本号的范围。要注意<代码类="prism-code language-text">< >高版本号是独家的——换句话说<代码类="prism-code language-text">< >高应等于该产品的下一个非易受攻击版本。在下面的示例中,Apache 2.0.45包含该修补程序。

http-apache-newline-dos.vck

         
xml
1
<VulnerabilityCheck身份证件http-apache-excessive-newline-dos范围终点>
2
<NetworkService类型HTTP | HTTPS>
3.
<产品姓名Apache>
4
<版本>
5
<范围><>2.0><高的>2。45高的>范围>
6
版本>
7
产品>
8
NetworkService>
9
VulnerabilityCheck>

ftp-proftpd-cwd-format-string.vck

此检查使用FTP横幅版本测试来测试是否存在漏洞:

         
xml
1
<VulnerabilityCheck身份证件ftp-proftpd-cwd-format-string版本1范围终点>
2
<NetworkService类型文件传输协议>
3.
<产品姓名Proftpd.>
4
<版本><范围><高的>1.2.0rc3高的>范围>版本>
5
产品>
6
NetworkService>
7
VulnerabilityCheck>

ftp-servu-directory-traversal.vck

此检查连接到具有任何可用凭据的FTP服务器,执行目录更改命令,然后检查结果代码和文本:

         
xml
1
<VulnerabilityCheck身份证件ftp服务目录遍历版本1范围终点>
2
<NetworkService类型文件传输协议/>
3.
<FTPCheck登录1>
4
<前驱反应>
5
<FTPRequest>CWD\\20FTPRequest>
6
<FTPResponse代码250.>
7
<正则表达式>目录更改为/正则表达式>
8
FTPResponse>
9
前驱反应>
10.
FTPCheck>
11.
VulnerabilityCheck>

http-wite-long-options-bof.vck

这个示例版本检查意味着在一个检查文件中有两个不同的产品版本。

         
xml
1
<VulnerabilityCheck身份证件http网站长选项bof范围终点>
2
<NetworkService类型HTTP | HTTPS>
3.
<产品姓名网站>
4
<版本><范围><高的>3.5.15高的>范围>版本>
5
产品>
6
<产品姓名WebSitePro>
7
<版本><范围><高的>3.5.15高的>范围>版本>
8
产品>
9
NetworkService>
10.
VulnerabilityCheck>

有时你想检查某个特定的版本<代码类="prism-code language-text"><组件>的<代码类="prism-code language-text">,如PHP。

php-ecalloc-integer-odflow.vck

         
xml
1
<VulnerabilityCheck身份证件php-ecalloc-integer-overflow范围终点>
2
<NetworkService类型HTTP | HTTPS>
3.
<产品姓名Apache>
4
<组件姓名PHP>
5
<版本><范围><>4.0><高的>4.3.0高的>范围>版本>
6
<版本><范围><>5.0.0><高的>5.2.0高的>范围>版本>
7
组件>
8
产品>
9
NetworkService>
10.
VulnerabilityCheck>

经过身份验证的Windows检查

为了让Security Console执行经过身份验证的Windows检查,它必须访问WMI或Remote Registry服务,这通常是使用默认帐户检查(已知默认密码)或站点配置中指定的管理凭据发现的。

ActiveXControlInstalled

此检查验证是否存在ActiveX控件。的<代码类="prism-code language-text">元素允许您测试Windows系统上ActiveX控件是否存在(通过GUID)。默认情况下,该元素不支持kill-bit。换句话说,如果安装了ActiveX控件,但设置了kill-bit,检查将报告“不容易攻击”。如果即使设置了终止位,也希望报告漏洞,请指定<代码类="prism-code language-text">

IBM-Access-Support-ActiveX-BOF.VCK

         
xml
1
< ?xml version = ' 1.0 '编码=“utf - 8”?>
2
<VulnerabilityCheck身份证件IBM-Access-Support-ActiveX-BOF范围节点版本1>
3.
<ActiveXControlInstalledGUID.74 ffe28d - 2378 - 11 - d5 - 990 - c - 006094235084/>
4
VulnerabilityCheck>

WindowsRegistry.

Windows注册表检查测试是检查安全控制台在扫描过程中找到的Windows注册表服务中是否存在某些键、值或值数据的测试。

w32-protoride-b-worm.vck

         
xml
1
<VulnerabilityCheck身份证件w32-protoride-b-worm范围节点>
2
<WindowsRegistry.>
3.
<注册表项姓名HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ RunMustnotbepresent.1>
4
<registryValue姓名Windows任务栏管理器><正则表达式cflags.REG_ICASE>正则表达式>registryValue>
5
注册表项>
6
WindowsRegistry.>
7
VulnerabilityCheck>

的<代码类="prism-code language-text">元素是Windows注册表测试的顶级元素。此元素必须包含至少一个<代码类="prism-code language-text">子元素。不允许使用其他元素。

的<代码类="prism-code language-text">元素是描述要测试的注册表项和值的顶级元素。它有两个属性:<代码类="prism-code language-text">姓名和<代码类="prism-code language-text">Mustnotbepresent.。的<代码类="prism-code language-text">姓名要检查的注册表项的名称。请注意,<代码类="prism-code language-text">Mustnotbepresent.属性的措辞是否定的。如果<代码类="prism-code language-text">mustNotBePresent=“1”,表示“如果钥匙存在,则触发此检查,否则返回not vulnerable”。

的<代码类="prism-code language-text">元素指定分配给特定注册表值的预期数据。它包含三个属性:<代码类="prism-code language-text">姓名,<代码类="prism-code language-text">类型,及<代码类="prism-code language-text">默认(如下所述)。

  • 的<代码类="prism-code language-text">姓名属性指定注册表值的名称(在父键下)。
  • 的<代码类="prism-code language-text">类型属性指定注册表值的预期类型,该类型必须是以下类型之一。请参阅http://msdn.microsoft.com/en-us/library/ms724884%28VS.85%29.aspx有关不同价值类型的更多信息。
    • 瑞格施
    • reg_expand_sz.
    • REG_二进制
    • reg_dword.
    • REG_DWORD_LITTLE_ENDIAN
    • REG_DWORD_BIG_ENDIAN
    • reg_link.
    • REG_MULTI_SZ
    • REG_RESOURCE_LIST
    • 注册表\u完整\u资源\u描述符
    • REG_RESOURCE_REQUIREMENTS_LIST
    • REG_QWORD
    • REG_QWORD_LITTLE_ENDIAN
  • 的<代码类="prism-code language-text">默认属性用于当您希望检查键下的注册表“默认值”而不指定<代码类="prism-code language-text">姓名属性

如果要测试注册表项和注册表值是否存在,请使用<代码类="prism-code language-text">< registryKeyExists >和<代码类="prism-code language-text">元素。

WindowsFileexists.

的<代码类="prism-code language-text">< fileExists >元素用于确定文件在系统上是否可用trojan-gimmiv.vck下面的示例展示了这种检查是如何工作的。的<代码类="prism-code language-text">姓名属性是文件的名称。可以使用百分比替换指定某些知名的Windows路径。例如,并不总是知道Windows目录在哪里。通常,这是<代码类="prism-code language-text">C:\WINDOWS但是,它可能因设备的配置而变化。在运行时(扫描)期间,安全控制台将发现正在测试的设备的Windows root并替换<代码类="prism-code language-text">%列出%字符串的路径中<代码类="prism-code language-text">文件版本使用设备上的实际Windows根目录进行测试。支持以下替换字符串:

  • % SystemDrive %
  • %列出%
  • %CSIDL_系统%
  • %csidl_systemx86%
  • %programfiles%
  • % ProgramFiles (x86) %
  • %commonprogramfiles%
  • % CSIDL_PROGRAM_FILES_COMMONX86%
  • %SQLPath%
  • %ExpancePath%
  • % OfficePath %

trojan-gimmiv.vck

         
xml
1
<VulnerabilityCheck身份证件trojan-gimmiv范围节点>
2
<>
3.
<--由滴管创建组件GIMMIV一个-->
4
<WindowsRegistry.>
5
<registryKeyExists姓名HKLM\SYSTEM\CurrentControlSet\Services\sysmgr\Parameters>
6
<RegistryValueexists.姓名服务/>
7
<RegistryValueexists.姓名点函数/>
8
registryKeyExists>
9
<registryKeyExists姓名HKLM \ SYSTEM \ \ sysmgr CurrentControlSet \服务>
10.
<RegistryValueexists.姓名DisplayName/>
11.
<RegistryValueexists.姓名ImagePath/>
12.
registryKeyExists>
13.
WindowsRegistry.>
14.
<WindowsFileexists.>
15.
<--由滴管创建组件GIMMIV一个-->
16.
<fileExists姓名% CSIDL_SYSTEM % \ wbem \ sysmgr.dll/>
17.
<--由蠕虫创造组件GIMMIVB-->
18.
<fileExists姓名%csidl_system%\ wbem \ winbaseinst.exe/>
19.
<fileExists姓名% CSIDL_SYSTEM % \ wbem \ winbase.dll/>
20.
<fileExists姓名% CSIDL_SYSTEM % \ wbem \ basesvc.dll/>
21.
<fileExists姓名%csidl_system%\ wbem \ syicon.dll/>
22.
WindowsFileexists.>
23.
>
24.
VulnerabilityCheck>

WindowsFileVersion -检查Windows的。exe或。dll的版本

此检查查找Windows的版本<代码类="prism-code language-text">. exe或<代码类="prism-code language-text">.dll。<代码类="prism-code language-text">测试允许在扫描期间测试从被测端点的文件系统上的文件检索的版本。如果在扫描期间找到文件版本控制服务,安全控制台将使用它们执行这些测试。

文件版本检查测试类似如下:

         
xml
1
<WindowsFileVersion>
2
<文件版本姓名% % \ system32系统\ scesrv.dll列出疯子1>
3.
<版本><范围><高的包容0>5.0.2195.3649高的>范围>版本>
4
文件版本>
5
WindowsFileVersion>

下面是一个更复杂的检查,其中包含仅针对Windows XP SP2上的特定文件版本的测试(系统和Windows文件版本检查测试的组合):

         
xml
1
<VulnerabilityCheck身份证件acme-windows-file-check-1范围节点版本1>
2
<系统>
3.
<操作系统minCertainty1姓名Windows XP专业小贩微软>
4
<版本>
5
<价值>SP2价值>
6
版本>
7
操作系统>
8
系统>
9
<WindowsFileVersion>
10.
<文件版本姓名%windir%\ system32 \ shsvcs.dll疯子1>
11.
<版本><范围><高的包容0>6.0.2900.3051高的>范围>版本>
12.
文件版本>
13.
WindowsFileVersion>
14.
VulnerabilityCheck>

以下是针对特定版本的Internet Explorer的示例检查,该Internet Explorer为该特定产品测试多个注册表值:

         
xml
1
<VulnerabilityCheck身份证件acme-windows-registry-check-1范围节点版本1>
2
<InstalledSoftware>
3.
<产品minCertainty1姓名Internet Explorer小贩微软>
4
<版本>
5
<价值>5.01SP4价值>
6
版本>
7
产品>
8
InstalledSoftware>
9
<WindowsRegistry.>
10.
<注册表项姓名HKLM \ SOFTWARE \ \ \ Microsoft Internet Explorer ActiveX兼容性\ {d9998bd0 - 7957 - 11 - d2 - 8美联储- 00606730 - d3aa}>
11.
<registryValue姓名兼容性旗帜类型reg_dword.>
12.
<价值>1024价值>
13.
registryValue>
14.
注册表项>
15.
<注册表项姓名HKLM \ Software \ Microsoft \ Internet Explorer \ ActiveX兼容性\ {Be4191FB-59EF-4825-AEFC-109727951E42}>
16.
<registryValue姓名兼容性旗帜类型reg_dword.>
17.
<价值>1024价值>
18.
registryValue>
19.
注册表项>
20.
WindowsRegistry.>
21.
VulnerabilityCheck>

检查已安装软件的版本

此检查查找已安装软件的版本。

         
xml
1
<InstalledSoftware>
2
<产品minCertainty1姓名Exchange 2000服务器小贩微软>
3.
<版本>
4
<价值>SP3价值>
5
版本>
6
产品>
7
InstalledSoftware>

默认的帐户检查

在Security Console中,所有用户名和密码检查的工作方式基本相同。你有一个<代码类="prism-code language-text">元素,后跟服务类型<代码类="prism-code language-text">< DefaultAccount >元素<代码类="prism-code language-text">< uid >和<代码类="prism-code language-text">元素应该是自解释的<代码类="prism-code language-text">元素可用于指定域名(用于CIFS)、数据库或架构(用于数据库身份验证)或身份验证领域(用于HTTP)。

以下<代码类="prism-code language-text">类型属性值可用于<代码类="prism-code language-text">与A.<代码类="prism-code language-text">< DefaultAccount >查看:

  • IBM AS400端口映射器
  • pcAnywhere控制
  • CIFS(可选的<代码类="prism-code language-text">指定Windows域名)
  • DB2(<代码类="prism-code language-text">指定数据库名称,例如<代码类="prism-code language-text">样品
  • 文件传输协议
  • HTTP
  • MySQL(<代码类="prism-code language-text">指定数据库名称,例如<代码类="prism-code language-text">mysql.
  • 网络操作系统
  • 甲骨文(<代码类="prism-code language-text">指定数据库名称)
  • postgres.(<代码类="prism-code language-text">指定数据库名称,例如<代码类="prism-code language-text">template1
  • 远程执行(rexec,如port<代码类="prism-code language-text">512/tcp
  • SNMP(请仅指定<代码类="prism-code language-text">元素将是SNMP社区名称,例如<代码类="prism-code language-text">私人
  • SSH
  • TDS.(Microsoft SQL Server,<代码类="prism-code language-text">指定数据库名称,例如<代码类="prism-code language-text">掌握
  • Sybase(<代码类="prism-code language-text">指定数据库名称,例如<代码类="prism-code language-text">掌握
  • telnet.

cifs-default-password-administrator-password.vck

此检查查找CIF上的管理员/密码:

         
xml
1
<VulnerabilityCheck身份证件cifs -通用- 0002范围节点>
2
<NetworkService类型CIFS/>
3.
<默认帐户>
4
<uid>行政人员uid>
5
<密码>密码密码>
6
默认帐户>
7
VulnerabilityCheck>

ssh-default-account-root-password-password.vck * *

这个检查查找SSH上的root/密码:

         
xml
1
<VulnerabilityCheck身份证件ssh-default-account-root-password-password范围终点>
2
<NetworkService类型SSH/>
3.
<默认帐户>
4
<uid>uid>
5
<密码>密码密码>
6
默认帐户>
7
VulnerabilityCheck>

telnet-default-account-root-password-password.vck**

这个检查在Telnet上查找root/密码:

         
xml
1
<VulnerabilityCheck身份证件Telnet-Default-account-root-password-password范围终点>
2
<NetworkService类型telnet./>
3.
<默认帐户>
4
<uid>uid>
5
<密码>密码密码>
6
<领域>领域>
7
默认帐户>
8
VulnerabilityCheck>

mysql-default-account-admin-nopassword。vck**(检查MySQL上没有密码的管理员)

此检查查找管理员在MySQL上没有密码:

         
xml
1
<VulnerabilityCheck身份证件mysql默认帐户管理员nopassword范围终点>
2
<NetworkService类型MySQL/>
3.
<默认帐户>
4
<uid>行政uid>
5
<密码>密码>
6
<领域>mysql.领域>
7
默认帐户>
8
VulnerabilityCheck>

操作系统指纹检查

         
xml
1
<系统>
2
<操作系统minCertainty1姓名Windows NT服务器小贩微软>
3.
<版本>
4
<价值>4SP5价值>
5
版本>
6
<版本>
7
<价值>4SP6A价值>
8
版本>
9
<版本>
10.
<价值>4SP4价值>
11.
版本>
12.
操作系统>
13.
系统>

拒绝服务检查

有时您希望进行不安全的检查,例如拒绝服务检查。在这种情况下,设置的安全属性<代码类="prism-code language-text">到<代码类="prism-code language-text">0。除非用户明确地检查它们的扫描模板,否则这将导致跳过此检查。

         
xml
1
<VulnerabilityCheck身份证件http-jrun-long-url-bof安全0范围终点>
2
<NetworkService类型HTTP | HTTPS>
3.
<产品姓名杰伦/>
4
NetworkService>
5
<HTTPCheck重试3.>
6
<HTTPRequest方法得到>
7
<URI>/<垃圾长度5200>R7.垃圾>jspURI>
8
HTTPRequest>
9
<httpresponse.><thrownExceptionjava.io.ioexception./>httpresponse.>
10.
HTTPCheck>
11.
<状态检查等待2500地位关闭/>
12.
VulnerabilityCheck>

布尔表达式

有时你可能想要将一组检查分组<代码类="prism-code language-text"><和>或<代码类="prism-code language-text"><、>(或组合)形成复杂的布尔测试。例如:

         
xml
1
VulnerabilityCheck身份证件“例子-http-敏感的-数据“范围“终点”>
2
<NetworkService类型“HTTP | HTTPS”/>
3.
<HTTPCheck>
4
<HTTPRequest方法“得到”><URI>/URI>
5
<httpresponse.代码“200”>
6
<>
7
<正则表达式>密码密码正则表达式>
8
<正则表达式>SSN.0-93.-0-92-0-94正则表达式>
9
>
10.
httpresponse.>
11.
HTTPCheck>
12.
VulnerabilityCheck>