常见漏洞检查示例

自定义漏洞检查数据与Insight平台不兼容dota2必威联赛

如果您是InsightVM订阅者,它利用本文中描述的自定义漏洞检查功能,请注意您创建的任何自定义检查以及从这些检查中派生的任何扫描数据都将包含在内部部署安全控制台中。自定义检查及其扫描结果不会在洞察平台上游行驶。dota2必威联赛这意味着它们在InsightVM的基于云的特征和经验中不存在,例如仪表板修复项目,目标和斯拉斯

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

服务旗帜检查

的<代码类="prism-code language-text">< NetworkService >元素检查网络上运行的某个服务是否存在。的<代码类="prism-code language-text">类型Attribute表示协议。多个<代码类="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-excessive-newline-dos.vck

         
xml
1
<VulnerabilityCheckidhttp-apache-frose-newline-dos范围终点>
2
<NetworkService类型HTTP | HTTPS>
3.
<产品姓名Apache>
4
<版本>
5
<范围><低的>2.0.0低的><>2.0.45>范围>
6
版本>
7
产品>
8
NetworkService>
9
VulnerabilityCheck>

ftp-proftpd-cwd-format-string.vck

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

         
xml
1
<VulnerabilityCheckidftp-proftpd-cwd-format-string版本1.0范围终点>
2
<NetworkService类型FTP>
3.
<产品姓名ProFTPD>
4
<版本><范围><>1.2.0rc3>范围>版本>
5
产品>
6
NetworkService>
7
VulnerabilityCheck>

ftp-servu-directory-traversal.vck

此检查使用任何可用凭证连接到FTP服务器,执行目录更改命令,并检查结果代码和文本:

         
xml
1
<VulnerabilityCheckidftp-servu-directory-traversal版本1.0范围终点>
2
<NetworkService类型FTP/>
3.
<FTPCheck登录1>
4
<FTPRequestResponse>
5
<FTPREQUEST.>慢性消耗病\\20。FTPREQUEST.>
6
<FTPResponse代码250.>
7
<正则表达式>目录变成/正则表达式>
8
FTPResponse>
9
FTPRequestResponse>
10
FTPCheck>
11
VulnerabilityCheck>

http-website-long-options-bof.vck

此示例版本检查是在一个检查文件中的两个不同的产品版本。

         
xml
1
<VulnerabilityCheckidhttp-website-long-options-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-overflow.vck

         
xml
1
<VulnerabilityCheckidphp-ecalloc-integer-overflow范围终点>
2
<NetworkService类型HTTP | HTTPS>
3.
<产品姓名Apache>
4
<组件姓名PHP>
5
<版本><范围><低的>4.0.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)。默认情况下,此元素确实符合杀戮位。换句话说,如果安装了ActiveX控件但是设置了kill-bit,则检查将报告“不容易受动”。如果您想报告漏洞,即使设置杀戮位,指定<代码类="prism-code language-text">

IBM-Access-Support-ActiveX-BOF.VCK

         
xml
1
<?xml版本='1.0'编码='utf-8'?>
2
<VulnerabilityCheckidibm-access-support-activex-bof范围节点版本1.0>
3.
<ActiveXControlInstalled.guid74FFE28D-2378-11D5-990C-006094235084/>
4
VulnerabilityCheck>

WindowsRegistry

Windows注册表检查测试是测试扫描期间安全控制台找到的Windows注册表服务中的某些键,值或值数据的测试。

W32-PROTORIDE-B-WORM.VCK

         
xml
1
<VulnerabilityCheckidw32-protoride-b-worm范围节点>
2
<WindowsRegistry>
3.
<registryKey姓名微软HKEY_LOCAL_MACHINE \ Software \ \ Windows \ CurrentVersion \运行Mustnotbepresent.1>
4
<RegistryValue.姓名Windows任务栏管理器><正则表达式cflags.REG_ICASE>正则表达式>RegistryValue.>
5
registryKey>
6
WindowsRegistry>
7
VulnerabilityCheck>

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

的<代码类="prism-code language-text">< registryKey >元素是描述要测试的注册表项和值的顶级元素。它有两个属性:<代码类="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">< registryValue >元素指定分配给特定注册表值的预期数据。它包含三个属性:<代码类="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_sz.
    • REG_EXPAND_SZ
    • REG_BINARY
    • reg_dword.
    • REG_DWORD_LITTLE_ENDIAN
    • REG_DWORD_BIG_ENDIAN
    • reg_link.
    • REG_MULTI_SZ
    • REG_RESOURCE_LIST
    • REG_FULL_RESOURCE_DESCRIPTOR
    • REG_RESOURCE_REQUIREMENTS_LIST.
    • reg_qword.
    • REG_QWORD_LITTLE_ENDIAN
  • 的<代码类="prism-code language-text">默认当您想要在密钥下检查注册表“默认值”时使用属性而不指定<代码类="prism-code language-text">姓名属性。

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

WindowsFileExists

的<代码类="prism-code language-text">< fileExists >元素用于确定文件在系统中是否可用。的Trojan-Gimmiv.vck.下面的示例展示了这种检查是如何工作的。的<代码类="prism-code language-text">姓名属性是文件的名称。可以使用百分比替换指定某些众所周知的窗口路径。例如,Windows目录是不始终知道的。通常,这是<代码类="prism-code language-text">C:\WINDOWS,但根据设备配置的不同会有所不同。在运行时(扫描),安全控制台将发现被测试设备的Windows根目录并替换<代码类="prism-code language-text">%列出%的路径中的字符串<代码类="prism-code language-text">fileVersion使用设备上的实际Windows根目录进行测试。支持以下替换字符串:

  • % SystemDrive %
  • %列出%
  • % CSIDL_SYSTEM %
  • %csidl_systemx86%
  • %programfiles%
  • % ProgramFiles (x86) %
  • % CommonProgramFiles %
  • %csidl_program_files_commonx86%
  • %sqlpath%
  • %ExpancePath%
  • % OfficePath %

Trojan-Gimmiv.vck.

         
xml
1
<VulnerabilityCheckidTrojan-Gimmiv范围节点>
2
<>
3.
<--由滴管创建组件Gimmiv一个-->
4
<WindowsRegistry>
5
<RegistryKeyExists.姓名HKLM \ SYSTEM \ CurrentControlSet \ Services \ sysmgr \参数>
6
<RegistryValueexists.姓名服务/>
7
<RegistryValueexists.姓名ServiceMain/>
8
RegistryKeyExists.>
9
<RegistryKeyExists.姓名HKLM \ System \ CurrentControlset \ Services \ sysmgr>
10
<RegistryValueexists.姓名显示名称/>
11
<RegistryValueexists.姓名imagepath./>
12
RegistryKeyExists.>
13
WindowsRegistry>
14
<WindowsFileExists>
15
<--由滴管创建组件Gimmiv一个-->
16
<文件已存在姓名%csidl_system%\ wbem \ sysmgr.dll/>
17
<--由蠕虫创造组件GimmivB-->
18
<文件已存在姓名%csidl_system%\ wbem \ winbaseinst.exe/>
19
<文件已存在姓名% CSIDL_SYSTEM % \ wbem \ winbase.dll/>
20.
<文件已存在姓名%csidl_system%\ wbem \ basesvc.dll/>
21
<文件已存在姓名%csidl_system%\ wbem \ syicon.dll/>
22
WindowsFileExists>
23
>
24
VulnerabilityCheck>

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

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

文件版本检查测试将类似于以下内容:

         
xml
1
<WindowsFileVersion.>
2
<fileVersion姓名%windir%\ system32 \ scesrv.dllmustExist1>
3.
<版本><范围><包括的0>5.0.2195.3649>范围>版本>
4
fileVersion>
5
WindowsFileVersion.>

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

         
xml
1
<VulnerabilityCheckidacme-windows-file-check-1范围节点版本1.0>
2
<系统>
3.
<OS.minCertainty1.0姓名Windows XP专业小贩微软>
4
<版本>
5
<价值>SP2价值>
6
版本>
7
OS.>
8
系统>
9
<WindowsFileVersion.>
10
<fileVersion姓名% % \ system32系统\ shsvcs.dll列出mustExist1>
11
<版本><范围><包括的0>6.0.2900.3051>范围>版本>
12
fileVersion>
13
WindowsFileVersion.>
14
VulnerabilityCheck>

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

         
xml
1
<VulnerabilityCheckidacme-windows-registry-check-1范围节点版本1.0>
2
<安装软件>
3.
<产品minCertainty1.0姓名Internet Explorer小贩微软>
4
<版本>
5
<价值>5.01SP4价值>
6
版本>
7
产品>
8
安装软件>
9
<WindowsRegistry>
10
<registryKey姓名HKLM \ SOFTWARE \ \ \ Microsoft Internet Explorer ActiveX兼容性\ {d9998bd0 - 7957 - 11 - d2 - 8美联储- 00606730 - d3aa}>
11
<RegistryValue.姓名兼容性旗帜类型reg_dword.>
12
<价值>1024价值>
13
RegistryValue.>
14
registryKey>
15
<registryKey姓名HKLM \ SOFTWARE \ \ \ Microsoft Internet Explorer ActiveX兼容性\ {be4191fb - 59 - ef - 4825 aefc - 109727951 - e42}>
16
<RegistryValue.姓名兼容性旗帜类型reg_dword.>
17
<价值>1024价值>
18
RegistryValue.>
19
registryKey>
20.
WindowsRegistry>
21
VulnerabilityCheck>

检查已安装软件的版本

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

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

默认帐户检查

在安全控制台中,所有用户名和密码检查都基本相同。你有一个<代码类="prism-code language-text">< NetworkService >元素,后跟服务类型<代码类="prism-code language-text">元素。的<代码类="prism-code language-text">< uid >和<代码类="prism-code language-text"><密码>元素应该不言自明。可选<代码类="prism-code language-text"><世界>元素可用于指定域名(对于CIFS)、数据库或模式(对于数据库身份验证)或身份验证领域(对于HTTP)。

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

  • IBM小型机PortMapper
  • pcAnywhere-control
  • CIFS.(可选<代码类="prism-code language-text"><世界>指定Windows域名)
  • DB2.(<代码类="prism-code language-text"><世界>指定数据库名称,例如<代码类="prism-code language-text">样本
  • FTP
  • 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,如港口<代码类="prism-code language-text">512 / tcp
  • SNMP(仅指定<代码类="prism-code language-text"><密码>元素,它将是SNMP团体名,例如<代码类="prism-code language-text">私人
  • s
  • 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

此检查查找CIFS上的Administrator/密码:

         
xml
1
<VulnerabilityCheckidcifs -通用- 0002范围节点>
2
<NetworkService类型CIFS./>
3.
<DefaultAccount>
4
<uid>行政人员uid>
5
<密码>密码密码>
6
DefaultAccount>
7
VulnerabilityCheck>

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

此检查查找SSH上的root /密码:

         
xml
1
<VulnerabilityCheckidssh-default-account-root-password-password范围终点>
2
<NetworkService类型s/>
3.
<DefaultAccount>
4
<uid>uid>
5
<密码>密码密码>
6
DefaultAccount>
7
VulnerabilityCheck>

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

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

         
xml
1
<VulnerabilityCheckidTelnet-Default-account-root-password-password范围终点>
2
<NetworkService类型telnet./>
3.
<DefaultAccount>
4
<uid>uid>
5
<密码>密码密码>
6
<领域>领域>
7
DefaultAccount>
8
VulnerabilityCheck>

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

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

         
xml
1
<VulnerabilityCheckidmysql-default-account-admin-nopassword范围终点>
2
<NetworkService类型MySQL/>
3.
<DefaultAccount>
4
<uid>行政uid>
5
<密码>密码>
6
<领域>mysql领域>
7
DefaultAccount>
8
VulnerabilityCheck>

操作系统指纹检查

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

拒绝服务检查

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

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

布尔表达式

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

         
xml
1
VulnerabilityCheckid”的例子-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>