IIS FTP Server Anonymous Writeable Reinforcement, WEBDAV Anonymous Writeable Reinforcement(undone)

时间:2021-03-14 01:20:57

目录

. 引言
. IIS 6.0 FTP匿名登录、匿名可写加固
. IIS 7.0 FTP匿名登录、匿名可写加固
. IIS >= 7.5 FTP匿名登录、匿名可写加固
. IIS 6.0 Anonymous PUT(WEBDAV匿名可写)加固
. IIS 7.0 Anonymous PUT(WEBDAV匿名可写)加固
. IIS >= 7.5 Anonymous PUT(WEBDAV匿名可写)加固
. IIS ISAPI Filter(isapiFilters)
. IIS Extension
. IIS FTP匿名登录的自动化修复
. IIS WEBDAV匿名访问的自动化修复
. IIS 恶意Filter/Extension的自动化修复

0. 引言

0x0: 本文主要研究的技术点

因为本文篇幅较长,这里对全文的调研技术点做一个梳理总结

. 基于IIS FTP、IIS WEBDAV的黑客入侵、GETSHELL
. IIS FTP配置加固的原理
. IIS的增强扩展(Filter、Extension)的原理及利用方式
. 如何通过API方式对IIS 、IIS .5进行配置修复,从而达到批量集群自动漏洞修复的目的

0x1: 要通过FTP进行GETSHELL需要满足的条件

基于FTP对目标主机进行GETSHELL本质上是一个写磁盘的动作,要达到这个目的,需要满足几个先决条件

. 目标服务器开启了FTP匿名访问
. 目标服务器开启了FTP写权限(IIS FTP软件层的逻辑控制)
. 目标服务器的登录帐号(以及所在组)对指定的目录有写的权限(ACL)
. 目标服务器的"FTP根目录"同时也是"WEB服务器的WEB目录"

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,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" alt="" />

对于第3点,需要特别注意的是,在默认情况下,磁盘文件的ACL设置中,是没有IUSR_computername的,而在windows中,如果没有明确禁止,则隐含的条件是默认允许,从这点也可以看出,如果我们想要明确的禁止这个FTP目录遭到黑客的写入,应该明确地添加IUSR_computername,并禁止写权限

aaarticlea/png;base64,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" alt="" />

当这4点同时满足时,黑客就可以通过FTP的漏洞达到直接GETSHELL的目的

Relevant Link:

http://blog.csdn.net/luckyp/article/details/3929895

0x2: 如何进行FTP匿名登录

当目标主机开启了FTP匿名访问之后,在客户端使用

. 帐号: anonymous、密码: 为空
. 帐号: ftp、密码: 为空

这两个账户都可以登录

0x3: 匿名FTP的来由

大量的匿名FTP站点对所有用户公开文件访问权,目的是发布它们的软件和信息(就是我们常说的下载文件)。鉴于FTP在Internet中仍占据重要的地位,故IIS集成了FTP服务器。在IIS上架构的FTP站点,用户可以用IUSRR_SERVERNAME账户试图连接该服务器,在命令行下用户名是anonymous,密码可以使用任何内容,在Internet Explorer中不用输入任何信息就能匿名登录FTP站点。

Relevant Link:

http://soft.zdnet.com.cn/software_zone/2007/0807/446657.shtml

1. IIS 6.0 FTP匿名登录、匿名可写加固

0x1: IIS 6.0 FTP匿名匿名登录原理

匿名身份验证使用户无需输入用户名或密码便可以访问 Web 或 FTP 站点的公共区域。默认情况下,IUSR_computername 帐户用于允许匿名访问。
在 IIS 6.0 中,匿名身份验证不再需要"允许本地登录"用户权限,因为 NETWORK_CLEARTEXT 目前是匿名和基本身份验证的默认登录类型。
在安装过程中,将 IUSR_computername 帐户添加到运行 IIS 的计算机上的 Guests 组中。默认情况下,Guest 与 User 组的成员具有相同的访问权限,但是 Guest 帐户将受到更多限制。

aaarticlea/png;base64,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" alt="" />

0x2: IIS 6.0 FTP启用匿名身份验证

在开始进行高权限操作的时候,出于最佳安全实践(Best Security Practice),我么应该遵循以下原则

只有本地计算机上 Administrators 组的成员才能执行以下过程。作为安全性最佳操作,请使用不属于 Administrators 组的帐户登录计算机,然后使用 runas 命令以管理员身份运行 IIS 管理器。在命令提示符下,
键入 runas /user:Administrative_AccountName "mmc %systemroot%\system32\inetsrv\iis.msc"。

启用匿名身份验证

. 在 IIS 管理器中,双击本地计算机,右键单击"网站"文件夹、单个网站文件夹、虚拟目录或文件,然后单击"属性"。
) 服务器上的所有网站均将继承在网站级别设定的配置设置。可以通过配置单个站点或站点元素来覆盖继承。
. 单击"目录安全性"或"文件安全性"选项卡,然后在"身份验证和访问控制"部分中单击"编辑"。
. 选中"启用匿名访问"复选框。
. 单击"确定"两次。

Relevant Link:

http://msdn.microsoft.com/zh-cn/library/cc780334(v=ws.10).aspx
http://msdn.microsoft.com/zh-cn/library/cc737887(v=ws.10).aspx
http://msdn.microsoft.com/zh-cn/library/cc740131(v=ws.10).aspx
http://msdn.microsoft.com/zh-cn/library/cc784103(v=ws.10).aspx

2. IIS 7.0 FTP匿名登录、匿名可写加固

0x1: IIS 7 FTP安装

1. windows 7 安装IIS 7 FTP

. 打开"控制面板",运行"程序和功能"
. 点击窗户左侧的"打开或关闭Windows功能"
. 在打开的"Windows功能对于话框"中,展开"Intemet信息服务",勾选"FIP服务器"和其它我们所需功能后"确定"即可
//等待片刻后完成IIS 7的安装
. 在打开的"Internet信息服务(IIS)管理器"窗户中,依次展开到"网站",右键点击"网站"选择"添加加FTP站点"
. 输入FTP站点的名称
. 指定FTP站点的工作物理路径(站点的根目录)
. 指定绑定的IP地址与服务端口,通常将"SSL"设置为"无"。如果有域名的话,还可勾选"启用虚拟主机名"并输入域名
. 按照现真实情况况勾选"身份验证(可设置允许匿名访问)"和在"授权"用户,设置用户的操作权限,此处至少应选择一项
. 完成设置

aaarticlea/png;base64,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*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NpnEr6yYSPTHjDCW847g3HveGEj0z4qKSPSvqolJ+RboPTaZxO45EMEckQ0SwRzQViuWC8EEoUQ6lSOFUm05W6cLoSTpVDqVIoUQzE80Q056ezPirto9I+KuOjM346g0ezRDQfiBcD8VIgXgokysFEOVBDxIESgLeJlfBYyR8v+WOLlf3xMh4HNyhW8EQVT1SJZJVILhDJBSK1QKSuBq6HWDZ8KclvmR9IXPUnrvoSC774gi++4I1XvfEqFqtgsQoWraDRMhopI5FSHUyXYLq4DKV2kRLc9P+5UeWVQjuKltFo5eYDn9uyVL/7Or81NLasz6r+bwyLNn0m8SoWr3rjVW98wRtf8MUXfAngKrPWSKL27/Zb8q3vtiuzRPNZfvu6Rg8MMv4STHcQapb5S7jhajNyhajG1wUys0BlFqjWjebXm1SpdJVMV8l0lUo3tmsqS0o1afuWUV5C059KV6i6TJXOVCPZhZqr0VxN/mos/5c6OvevtbwPlMKZq+cGpnbuPbBz74Ede1/b8ey+7Xv2bXvmla27X+p56oWHn/zTw0/86eEnn+956oVHdr24dffL2555ZfuefTuefW3n3td2PPvajj37dux5dfszr2zd/dIju154+Mk/bXn8D5t//9ymx/ZueHTP+p3PrN/x9Lrtu9du27V2++51O55ev+OZ9Y/u2fDosxsf27vxsb0bH3tu0++a/P5fNv3+XzY//ofNj/9hy+N/3LLEX71j7/6de/fvfO7AzucO7Ny7f8fe/TuefW37nn3bnn7lEebXfv7hJ59/+Knne556oeepF8Cf3cH82syffbSrq6urq+t77cLgFJ37Vzt5lWUIlCPZqzv27v9v3epWt7rVrW516/tVO587EMv/xUYusIxEOZK9uuPZbt53q1vd6la3uvV9q51798dyV23haj3vX/u2f6Vudatb3epWt7p1k2vH3v3R3FVruMoyEKVI9uqOPfu+7V+pW93qVre61a1u3eTa8exr0exVS7DMMuBFOrOwvZv33epWt7rVrW5972r7nn2R7IIpWGLp/AUqU936zKvf9q/UrW51q1vd6la3bnJte+bVSKZqxAssjS9Ppqtbn37l2/6VutWtbnWrW93q1k2urU+/QmUqen+epcZyZKryyO6Xv+1fqVvd6la3utWtbt3kemT3y1S6ovXlWCosR6YqPTcv7ytXr6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" alt="" />

2. windows server 2008 R2 安装IIS 7 FTP

. 打开"控制面板",运行"程序和功能"
. 点击窗户左侧的"打开或关闭Windows功能",此时将打开"服务器管理器"窗户
. 添加服务器角色,点击"角色",再点击右侧的"添加角色",之后在打开的"添加角色向导"对于话框中按照向导勾选"Web服务器(IIS)"角色下的"FTP服务器"和"IIS 6管理节制台"以及其它所需角色
. 点击左侧"FTP站点"节点,添加FTP站点

Relevant Link:

http://iis.juj6.com/html/viewnews-2053.html
http://technet.microsoft.com/zh-cn/library/cc770966(v=ws.10).aspx
http://www.iis.net/learn/publish/using-the-ftp-service/configuring-ftp-user-isolation-in-iis-7

3. IIS >= 7.5 FTP匿名登录、匿名可写加固

待研究

4. IIS 6.0 Anonymous PUT(WEBDAV匿名可写)加固

0x1: WebDAV简介

基于万维网的分布式创作和版本控制(WebDAV)是一组基于超文本传输协议的技术集合,有利于用户间协同编辑和管理存储在万维网服务器文档。WebDAV最重要的特性包括:

. 锁: 防止覆盖
. 特性:
) 创建
) 移除
) 查询
. 命名空间管理
. 集合
) 创建
) 移除
) 列举资源

WebDAV是一种基于 HTTP 1.1协议的通信协议.它扩展了HTTP 1.1,在HTTP标准方法以外添加了一些新的方法

. Options
. Head
. Trace
主要由应用程序用来发现和跟踪服务器支持和网络行为。 . Get
检索文档 . Put
. Post
将文档提交到服务器 . Delete
销毁资源或集合 . Mkcol
创建集合 . PropFind
. PropPatch
针对资源和集合检索和设置属性 . Copy
. Move
管理命名空间上下文中的集合和资源 . Lock
. Unlock
改写保护

WebDAV 请求的一般结构遵循 HTTP 的格式,并且由以下三个组件构成:

. 方法
声明由客户端执行的方法(Options/Head..) . 标头
描述有关如何完成此任务的指令 . 主体(可选)
定义用在该指令或其他指令中的数据,用以描述如何完成此方法
在主体组件中,XML 成为整个 WebDAV 结构中的关键元素

0x2: IIS实现WebDAV原理

IIS实现Webdav是采用的其两种接口

. CGI(Common Gateway Interface)
CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完
整的新的交互式媒体 . ISAPI(ISA)接口(ISAPI Extension)
ISAPI 服务器扩展是可以被 HTTP 服务器加载和调用的 DLL。Internet 服务器扩展也称为 Internet 服务器应用程序 (ISA),用于增强符合 Internet 服务器 API (ISAPI) 的服务器的功能。ISA 通过浏览器应用程序调用,并
且将相似的功能提供给通用网关接口 (CGI) 应用程序
注意和"ISAPI Filter"区分

WebDAV的解析没有采用影射的方式,所以IIS的主程序w3svc.dll本身包含了Webdav的信息,也就是说,webdav的流程和普通的http流量是混合在一起的 ,iis识别出是Webdav的请求后就调用Webdav的处理模块httpext.dll(这是一个ISAPI)
WebDAV的识别流程如下

. 对于常见几种请求方法GET、HEAD、POST等,因为常见一些映射都支持。所以不能以请求方法作为Webdav请求的判断
. w3svc.dll根据请求头的字段的特征来识别识别
. 如果请求头里面包含Translate:、If:、Lock-Token:中的一种,就认为是Webdav的请求
. W3svc.dll还内置了几个别的请求方法TRACK、TRACE等
. TRACK就是用于调试错误的,如果收到这样的请求头,w3svc.dll会原样返回请求数据。相当于我们常见的ping.exe。同时,IIS对TRACK请求没有进行LOG记录,这点我们可以用于来获得banner,而不用担心留下日志记录
. 那么w3svc.dll就会认为是Webdav的请求,交给httpext.dll处理了

0x3: IIS开启WebDAV

为了安全上的考虑,IIS默认并不会启动WebDAV的功能,因此必须另外来激活它。
通过启动“IIS管理器”,展开本地计算机,选择"Web服务扩展"选择"允许"的途径来启动WebDAV功能

aaarticlea/png;base64,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" alt="" />

Relevant Link:

http://drops.wooyun.org/papers/238
http://zh.wikipedia.org/wiki/WebDAV
http://en.wikipedia.org/wiki/WebDAV
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/844f5e01-4b9e-4dac-897e-2a0bb33f28af.mspx?mfr=true
http://www.rapid7.com/db/modules/auxiliary/scanner/http/dir_webdav_unicode_bypass

0x4: 黑客如何利用IIS WebDAV进行GETSHELL

在学习各种的攻击技术之前,我们首先要明白这种技术的原理,对于IIS PUT匿名可写也一样,WebDAV本质上就是一种HTTP协议,所以我们进行GETSHELL也就是在构造一定格式的HTTP数据包,将我们的payload发送到服务端的webdav的接口上,如果服务器的配置满足以下条件,则可以完成GETSHELL

. WEB服务器扩展里设置WebDAV为允许
. 网站权限配置里开启了写入权限
. WEBDAV所在目录的ACL权限开启了写权限

新建webdav虚拟目录

aaarticlea/png;base64,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" alt="" />

黑客通过iIS PUT漏洞上传webshell的文件之后,可以利用copy、move命令进行重命名,从而达到getshell的目的

Relevant Link:

http://blog.sina.com.cn/s/blog_6b347b2a0101auat.html

测试iis put可以使用netscan、iis put scanner这些工具来做

0x5: WEBDAV加固

. 验证客户端
配置WebDAV目录的最佳方法取决于要进行的发布类型。当通过IIS来创建虚拟目录时,匿名和集成Windows身份验证都是打开的。虽然这种默认配置对于将客户端连接到服务器、读取网页中的内容以及运行脚本来说可以工作得很好,但要
将客户端发布到目录以及操作该目录上的文件时就会无法胜任。
IIS提供了以下身份验证方法:
) Kerberos: 域内主要的安全验证协议。Kerberos是用于WebDAV客户端身份验证和文件安全性的最佳选项
) 匿名身份验证: 允许任何人访问该目录。必须关闭对WebDAV目录的匿名访问。如果不控制访问的用户,您的目录可能会受到某些未知客户端的攻击。
) 基本身份验证: 以明文形式通过连接发送密码。可以截取和解读明文密码。只有在通过安全套接字层加密密码时,才能打开基本身份验证。
) 摘要式身份验证: 将信息发布到通过Internet和防火墙访问的服务器上的极佳选择,因为密码在网络上是以MD5哈希值的形式来发送的。然而,密码以明文形式保存在Active Directory中。
) 高级摘要式身份验证: 摘要式身份验证的改进形式,因为除了以MD5哈希值形式通过网络发送密码外,密码还以MD5哈希值的形式(而不是明文形式)保存在Active Directory中。这使得高级摘要式身份验证成为将信息发布到通
过Internet和防火墙访问的服务器的最佳选择
) 集成Windows身份验证: 在Intranet上设置WebDAV目录时,最为有效
) .NET Passport身份验证: 使用cookies来验证用户凭据 . 控制访问
2.1 配置Web权限
) 启用读取、写入和目录浏览:启用这些权限允许客户端查看资源列表并进行修改(除非对这些资源没有写入权限)、发布自己的资源以及处理文件
) 启用写入;并禁用读取和目录浏览:如果只想让客户端在目录中发布私人信息,而不希望别人查看所发布的内容,可以设置写入权限,但不设置读取和目录浏览权限。该配置在客户端端提交选票或性能检查时非常有用。
) 启用读取和写入;并禁用目录浏览:如果希望通过隐藏文件名来提高安全性,可设置该配置。然而,请注意,通过隐藏文件名来设置安全性是一种低级的安全防范措施,因为一个故意破坏者可通过试探和错误信息来猜测出文
件名。
) 启用索引资源:如果打算让客户端搜索目录资源,请确保启用了索引服务。 2.2 使用DACL控制访问
) WebDAV 利用了平台和Web服务器提供的安全功能,其中包括权限控制和NTFS文件系统中的随机访问控制列表(DACL)
) 在NTFS文件系统驱动器上设置WebDAV发布目录时,请确保"Everyone"组只有读取权限。然后授予特定的个人或组写入权限。 2.3 保护脚本代码
) 如果在发布目录中有一些不想让客户端看到的脚本文件,您可以通过不授予"脚本资源访问"权限来拒绝访问。可执行文件将作为静态 HTML文件处理,除非为该目录启用了"脚本和可执行文件"。
) 要阻止.exe 文件下载并作为HTML文件来查看,但允许其运行,可在发布目录的"虚拟目录"属性页中,将执行权限更改为"脚本和可执行文件",这一权限级别使所有可执行文件受"脚本资源访问"设置的影响。换句话说,如
果选中了"脚本资源访问",有读取权限的客户端可以看到所有的可执行文件;有写入权限的客户端既可运行它们,也可以编辑它们。

Relevant Link:

http://longsago.blog.163.com/blog/static/168237037201111595351401/
http://documents.software.dell.com/DOC223423
http://msdn.microsoft.com/zh-cn/library/cc779784(v=ws.10).aspx

5. IIS 7.0 Anonymous PUT(WEBDAV匿名可写)加固

IIS 7的WEBDAVDE开关和IIS 6上是类似的

aaarticlea/png;base64,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" alt="" />

6. IIS >= 7.5 Anonymous PUT(WEBDAV匿名可写)加固

http://www.iis.net/learn/install/installing-publishing-technologies/installing-and-configuring-webdav-on-iis

待研究

7. IIS ISAPI Filter(isapiFilters) 

在IIS下,要想实现后门,或者从本质上讲要实现对HTTP请求的自定义处理,通过自定义的IIS Handler,黑客可以将攻击的payload放在正常的HTTP流量中,可以通过编写IIS Filter、或者IIS Extension来实现

0x1: ISAPI Filter简介

ISAPI filters are DLL files that can be used to modify and enhance the functionality provided by IIS. ISAPI filters always run on an IIS server, filtering every request until they 
find one they need to process. The ability to examine and modify both incoming and outgoing streams of data makes ISAPI filters powerful and flexible.

IIS ISAPI Filter的作用

//ISAPI filters can be registered with IIS to modify the behavior of a server. For example, filters can perform the following tasks:
. Change request data (URLs or headers) sent by the client
. Control which physical file gets mapped to the URL(URL Mapping)
. Control the user name and password used with anonymous or basic authentication
. Modify or analyze a request after authentication is complete
. Modify a response going back to the client(Outing Package Filter)
. Run custom processing on "access denied" responses
. Run processing when a request is complete
. Run processing when a connection with the client is closed
. Perform special logging or traffic analysis.
. Perform custom authentication.
. Handle encryption and compression.

0x2: ISAPI Filter Processing Sequence

The following steps outline the interaction between ISAPI filters and IIS:

. When IIS initially loads an ISAPI filter, it also creates and partially populates an HTTP_FILTER_VERSION structure. It then calls the filter's GetFilterVersion function, passing 
a pointer to the new structure as a parameter. . The ISAPI filter populates the HTTP_FILTER_VERSION structure with version information and descriptive information.
More importantly, the filter also uses HTTP_FILTER_VERSION to specify which event notifications it should receive(Filter需要告诉IIS自己所关注的事件Event), and to declare the general
priority level for the filter(当多个Filter都注册了同一个事件Event的时候,需要根据Filter的Priority来进行排序).
In addition, the filter also indicates whether it is interested in events from secure ports only, unsecure ports only, or both. . Each HTTP transaction between IIS and a client browser triggers several distinct events. Every time an event occurs for which an ISAPI filter is registered, IIS calls the
filter's HttpFilterProc entry-point function(当HTTP事件到达时,调用对应的处理函数). If more than one ISAPI filter is registered for a given event(事件驱动模型), IIS notifies the filters that the event occurred. The filters, which are marked as high, medium, or low
priority, are notified according to priority in descending order. If more than one ISAPI filter is declared the same general priority level, IIS uses the order in which the filters
appear in the FilterLoadOrder property to resolve the tie. . The ISAPI filter uses the notification type information, passed by IIS as a parameter to HttpFilterProc, to determine which particular data structure is pointed to by the other
HttpFilterProc parameter, pvNotification. The ISAPI filter then uses the data contained in that data structure, as well as in the context structure HTTP_FILTER_CONTEXT, to perform
any custom processing. . Once processing is complete, the filter returns one of the SF_STATUS status codes to IIS, and IIS continues processing the HTTP request or response until another event occurs for which ISAPI filters are registered. . When the Web service is stopped or unloaded, IIS calls TerminateFilter in all ISAPI filters as part of its shutdown sequence, for any filters that implemented and exported the
function. TerminateFilter is typically used to perform cleanup and de-allocation of allocated resources.

0x3: ISAPI Filter Event Notifications

In general, the events that occur during the processing of a typical Internet Information Services (IIS) request and response are regular and predictable. The following list outlines the most common ordering of events.

. SF_NOTIFY_READ_RAW_DATA: HttpFilterProc Function is passed a pointer to HTTP_FILTER_RAW_DATA Structure (IIS))
When a client sends a request, one or more SF_NOTIFY_READ_RAW_DATA notifications occur. Data is read until the client has sent all of the HTTP headers associated with the request. . SF_NOTIFY_PREPROC_HEADERS: (HttpFilterProc Function is passed a pointer to HTTP_FILTER_PREPROC_HEADERS Structure (IIS))
A single SF_NOTIFY_PREPROC_HEADERS notification occurs for each request. This notification indicates that the server has completed preprocessing of the headers associated with the
request, but has not yet begun to process the information in the headers. . SF_NOTIFY_URL_MAP: (HttpFilterProc Function is passed a pointer to HTTP_FILTER_URL_MAP Structure (IIS))
An SF_NOTIFY_URL_MAP notification occurs whenever the server is converting a URL to a physical path. This notification occurs at least once after the preprocessed
header's notification for the request, and might occur many additional times during processing of the associated request. . SF_NOTIFY_AUTHENTICATION: (HttpFilterProc Function is passed a pointer to HTTP_FILTER_AUTHENT Structure (IIS))
An SF_NOTIFY_AUTHENTICATION notification occurs just before IIS attempts to authenticate the client. This notification occurs for every new connection
(including anonymous requests), and every time the client sends enabled user credentials for the target URL, in the form of an authorization header, to be authorized by the server.
The AuthPersistence property setting in the metabase directly affects this filter. Note that not all requests are guaranteed to trigger an authentication notification.
This notification only fires for anonymous requests and requests with an authorization header that specifies Basic authentication. . SF_NOTIFY_AUTH_COMPLETE: (HttpFilterProc Function is passed a pointer to HTTP_FILTER_AUTH_COMPLETE_INFO Structure (IIS))
This notification, new to IIS 5.0, offers functionality similar to that of SF_NOTIFY_PREPROC_HEADERS. Specifically, it allows viewing and modification of the method, URL, version,
or headers sent from the client. The key difference between this notification and preprocessed headers is that this notification occurs after the
client's identity has been negotiated with the client. Because of the notification's timing, the AUTH_USER server variable can be used to reliably obtain the identity of the user.
Also, functionality is provided to retrieve a copy of the token that IIS impersonates when processing the request. . SF_NOTIFY_READ_RAW_DATA: (HttpFilterProc Function is passed a pointer to HTTP_FILTER_RAW_DATA Structure (IIS))
As mentioned in step , if the client has more data to send, one or more SF_NOTIFY_READ_RAW_DATA notifications occur at this point. Each one indicates that IIS has read another
chunk whose size equals either the value of the UploadReadAheadSize metabase property (usually KB), or the remaining number of bytes available (if the chunk is the last one).
Because many factors can force IIS to adopt a different chunking scheme, additional raw read events are not always completely predictable. Therefore, ISAPI filters should not rely
on the exact behavior described above.
NoteNote: At this point, IIS begins processing the substance of the request. This can be done by an ISAPI extension, a CGI application, a script engine such as ASP or PERL,
or by IIS itself for static files. . SF_NOTIFY_SEND_RESPONSE: (HttpFilterProc Function is passed a pointer to HTTP_FILTER_SEND_RESPONSE Structure)
This event occurs after the request is processed and before headers are sent back to the client. . SF_NOTIFY_SEND_RAW_DATA
As the request handler returns data to the client, one or more SF_NOTIFY_SEND_RAW_DATA notifications occur. . SF_NOTIFY_END_OF_REQUEST
At the end of each request, the SF_NOTIFY_END_OF_REQUEST notification occurs. . SF_NOTIFY_LOG: (HttpFilterProc Function is passed a pointer to HTTP_FILTER_LOG Structure (IIS))
After the HTTP request is complete and just before IIS writes the request to its log, the SF_NOTIFY_LOG notification occurs. . SF_NOTIFY_END_OF_NET_SESSION
When the connection between the client and the server is closed, the SF_NOTIFY_END_OF_NET_SESSION notification occurs. If a Keep-Alive connection has been negotiated, it is
possible for many HTTP requests to occur before this notification.

可以看到,整个IIS Event的处理流程就是一个处理状态机的逻辑流程,从一个HTTP数据报达到IIS后开始解析,到最后解析完毕这一整个流程,事件之间是遵循一定的先后顺序的

0x4: ISAPI filter编程

和apache、nginx的模块、插件、Filter编程一样,IIS ISAPI Filter也属于一种插件式编程的架构,也就是说我们在编写DLL程序的时候,需要遵循一定的函数名规范、约定,必须声明实现一些指定的函数,在满足大的框架的前提下,去利用IIS传给Filter的参数去实现自定义的HTTP数据报操作逻辑功能

Every ISAPI filter is contained in a separate DLL that must export some entry-point functions

. BOOL WINAPI GetFilterVersion( PHTTP_FILTER_VERSION pVer);
该函数是DLL筛选器第一次被加载到站点处理进程时被调用 . DWORD WINAPI HttpFilterProc(PHTTP_FILTER_CONTEXT pfc,DWORD notificationType,LPVOID pvNotification);
该函数用于响应注册在GetFilterVersion 的形参PHTTP_FILTER_VERSION 中的dwFlags通知事件。根据所注册的通知事件进行相应的筛选处理 . BOOL WINAPI TerminateFilter(DWORD dwFlags);
该函数是DLL筛选器被站点处理进程卸载时时所调用的处理

这3个函数是我们编写IIS Filter必须要实现的导出函数

The metabase property, FilterLoadOrder, contains a list of all filters that IIS loads when the Web service is started.

Example(redirects HTTP requests to HTTPS)

IIS Filter、IIS Extension本质上是一个DLL,所以我们是在进行DLL编程

使用VS2010创建一个空的DLL项目

aaarticlea/png;base64,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" alt="" />

并添加2个文件MyISAPIFilter.cpp、MyISAPIFilter.def

aaarticlea/png;base64,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" alt="" />

MyISAPIFilter.cpp:DLL源代码文件,实现了IIS Filter必须要求实现的导出函数

#define _WIN32_WINNT 0x0400

#include <windows.h>
#include <httpfilt.h> #define BUFFER_SIZE 2048 BOOL WINAPI GetFilterVersion(PHTTP_FILTER_VERSION pVer)
{
//char tmp[SF_MAX_FILTER_DESC_LEN] = "RedirectHttpToHttps";
// Specify the filter version and description.
pVer->dwFilterVersion = HTTP_FILTER_REVISION;
lstrcpy((LPWSTR)(pVer->lpszFilterDesc), (LPWSTR)"RedirectHttpToHttps");
// Specify the filter notifications.
pVer->dwFlags = SF_NOTIFY_ORDER_HIGH | SF_NOTIFY_PREPROC_HEADERS; return TRUE;
} DWORD WINAPI HttpFilterProc(PHTTP_FILTER_CONTEXT pfc, DWORD NotificationType, LPVOID pvNotification )
{
if (NotificationType == SF_NOTIFY_PREPROC_HEADERS)
{
char szServerName[BUFFER_SIZE] = "";
char szSecure[] = "";
char szLocationHeader[BUFFER_SIZE + ] = "";
char szRequest[BUFFER_SIZE] = "";
DWORD dwBuffSize = ; // Determine if request was sent over a secure port.
dwBuffSize = ;
pfc->GetServerVariable(
pfc, "SERVER_PORT_SECURE",
szSecure, &dwBuffSize); // If the request is on a secure port, do not process further.
if (szSecure[] == '')
return SF_STATUS_REQ_NEXT_NOTIFICATION; // Retrieve the URL for the request.
dwBuffSize = BUFFER_SIZE;
pfc->GetServerVariable(
pfc, "URL",
szRequest, &dwBuffSize); // Retrieve the server name.
dwBuffSize = BUFFER_SIZE;
pfc->GetServerVariable(
pfc, "SERVER_NAME",
szServerName, &dwBuffSize); // Specify the redirection header.
wsprintf(
(LPWSTR)szLocationHeader, (LPWSTR)"Location: https://%s/%s\r\n\r\n",
szServerName, &szRequest[]);
pfc->AddResponseHeaders(
pfc, szLocationHeader, );
pfc->ServerSupportFunction(
pfc, SF_REQ_SEND_RESPONSE_HEADER, "302 Object Moved",
(DWORD)"Please resubmit the request using a secure port.", ); return SF_STATUS_REQ_FINISHED;
} return SF_STATUS_REQ_NEXT_NOTIFICATION;
}

MyISAPIFilter.def:导出函数被导出的时候不能被VC++编译器导出后函数名发生改变,所以使用定义模块文件对三个文件进行导出

LIBRARY    "MyISAPIFilter"
EXPORTS
GetFilterVersion
HttpFilterProc

编译之

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN4AAACBCAIAAAAg3ZPCAAAQMElEQVR4nO2d+3cT55nH5+x/sNtN03PaJKW06XFzst22ayFt2ZCUnOyydbdJoKYEG2wJuWzAhkIowYlzqRsZ3y0TMBhMA2tAvkrCkW18wdggEnDsYNkSsnyXb2CwLOsyGmlm5P1hZGk0loyRxmiMn8/5/jBI7zPzcvw576uR5j0v0mGYgkA4GOQL+XUIhINBCILQjdsJAOAYoOYK41Xhe5HuwhMC1FxJrN9xIPb0tR1Hz0W6I08CUHPFsH7b3sQTtZKvH0jbHxbXqiPdnWUH1FwZbNy5L0OpbjDaVAOWG6O22xP262NP+V8N1AQ4CqgJcBRQE+AobKmpyUmQlo0Gf3+0OTkhNSZBpiYIdVFqTnvYFwSedlhRU5OTkBqzIMnKSYIgRpTSmHkpCYJyVPb0314CYROumpR5zFFwtDk5rXnE9+/JsjRKx8mytMAGAwCDsNQcUUpj0ppHCEJdRJvN22UxPi8Xuug3ZMLkDgSDxc+aqTnthLooNaZIE+hdykhN2fwsn6ycXDC4AoAP1u7QA8/sFO2ymITUGNp9kkdNAAgOC2qqiwLcA9E+RE6WFcly0mRqQpOT1jzSLosp0owopclKTVkazOZAUMJSk5IyOS3QENguS/bN3Zr52yDPzD4/aj7qKydgFcPCqBl4dp5XU10kU3vu0Ce9w6SvpF0Wk9YcztWBpxV21Fx0QidoXx75SuCzJrA4yz5qEgThp6bnlgg+ZQKPAH5DBzgKqAlwFFAT4CigJsBRQE2Ao4CaAEcBNQGOAmoCHAXUBDgKqAlwFFAT4CigJsBRQE2Ao4CaAEcBNQGOAmoCHIUdNa8tCoZhbHQVWF2wpiaB4wSBkyRBkoTbTbrdJEHgbjd5+/btxsbGWcssG70FVhHsqNnS0oLjroV2ut2kWq1GUbSpqclsNrPRYWC1wI6azc3NLpczoJ0NDQ319fX19fUNDQ3MMn2eABHk6WkHS0KfJ0AQBBHneatqxIi4Jsz/A50a8Xx3vGdm+xLAo2BHzaamJpcTc7mcBI5XXtdGxUnlar0Dwyg7J8bHh4eG2FJTnyfwSKIHNZ9m2FGzoaHBiTkIHI+Kk5Ik0WeZ67PMRcVJ3W7SO3zW19ez0WGaNn6v+WxlwSBQkwOwo2Z9fT3mQCuva0mSqNHej3otXmee+9Zol6v1oCYQGuyoqVKpHCgaFSfts8z9w/fWuZxO+XWtwWSPipOShOdzp0qlYpZ5RaIZ5fkgiSBIIBVqxIjvXV8V5Q3tTZ9Y/i94rlQjpr0U4Nx+ZwA1IwM7atbU1KB2e+V1LTWVF8vbdPdm0hXabYcK0xVaksBJkqipWfCXXajmEkY934jGVJNRTx9e/S4QSPoaMe3VGjGoGXnYUVOpVKI2G2q3R8VJB2xzfZa5dIU2Kk7qwomoOGm6QksQuFKpZJYFMJIauha7JVqqmv6D4PxJg7jP+JQAEzoHYEfNqqoqu9Vqt9lQu426Q992qNCFE+kKrQsnth0qJHC8qqqKWRZ0sKTGtsCCPoaaAU4Aaq4Y2FGzsrLSZrF47XSgdsaoieOuyspKZlmgCT2vhvEek8eZ0OlzdKD7JL+vn7yv6/MEMKFHHnbULCkpsVosfnba7d7PmtRXniUlJcyyQKOmbx4OYsKias7fRVEtAtxSBVPT/5YpD0bNyMOOmgUFBdbZWatldt5OK2WnA0Uxh8OJOVxOrKCggI0OA6sFdtSUSCQWs9lrpy2QnRKJ5PFPzLyXgYFr9cCOmqlLg40OA6sFeJQY4CigJsBRQE2Ao4Sipgsn7k7irX14vQ4CWa6EoqZmDNdNElaMJEg3BLJMCUXNRj3uxN0unGTkcpuekeqrPWVXvi2tudXeM7KwPQSySEJRs16HE6TbiZOMXG7Tzy3APTd3puJa9CbRhcutC0sgkGAJUU2cCKCmvEXL9NI9hxPu46VXGtQ90ZtEF5TXIv4fhqyUhKimi3BjLpKKyey8JDOaZlxHPrw5Nmbxekm653DcjTnJY+freP+9i4q3CnORmC6fjwhydLQD11JiyBEgCIKIcr1VKhEiVi6pFrJiErqaDhfpcJEPTE5Nt6W8Yioje+DgX25XnS78Wn7E2Lpz5Oq2kabN/Zc3fN01NGPDj52vowSlqjzR5fMRQbaOduB6dHpyBcgulV+5SyVCxIol1EJWUEJXE3WSqJMsLR2TyUxZWbfEorw9/1smFl8VJhSg907Yx/LtIxm9Vb8aNo72Vv1q4qHz2Pm66E0iqiqcKHYh/ByD/4sqISJWOEnUacjiI0JluJeAcCEhqunE3XYnaXeSD824tNC4Y3ve19X7Mz+QJuxs0d06bh85ahv6xNZ3WF/+0rBxVF/+0tA9jFKTqgon8l0IP8fg/6JKiIjlTtI+r2b4V4FEPCGqieFuG0baMHLPHlVKSuMuccWRA58fOngzdqsi/p1CW/9hm36ftSep89yLw8bRznMvGowopSZV5Yk2n4eIq+kHGKnJ8T1jWU1vjJE2jKwW+R5CqvZVqYSIuBpTCb1v8vM1ntc98HIMNoy0YYZMPiJUqoS+Nt4wG2tyBN4+VIsQRKTyK0cQBEGESmYPIWwlRDUdLrfVQVodZP/Qw0vlt+Pj5f/z1tnY2PPlZz++c2WfVSu2dMVbOrbcKP7JsHH0RvFPuofslJpUlSc9+TxEXB3wIHiqRQgv2+BX7lAleg4MmXwkUUG1VCUigswe6tj7uiGTjyABLhGw8fy1FGKEn9/lWFCuEAc6FYSdhK6mxUFSMQw+3L0z9ZuKP/55d+rQjT3WrnhLxxbLrd+ab/6moXDtwNBwQ+HaDoOVUtNbZXGQlp58HiKupB84VIkIgiCCoz2kX0taKkUIL9tgYVZRB4ajfCRRQVocpEXBXLbGyzb4NaAncOOF/WGUBzkbhI2EqCbqcs+ipDcGOX9A9Ya+4l8sHZtnb/12Vr3R3CYwt/xSmb1mYGhYmb3mK61HTXrVbHc+DxFX0g88MWTwEQQRZHSTfu1RchYlK4UIL8vgV46qEjwHhgw+kqAgZ1FyViFG+PnfMstpDegJ3Jg6M70njPIgZ4OwkRDVtDvdZpT0xiBf1395Q/eFn87e3Ghu+/eZll/MNEaZ6n90Kf2F3r7+S+kvtHXNUmrSq8zd+TxEXOF/kKGg3vX81f3ao6QZJSuECC/L4FeOqhI8B/QqVQLiO0OFcGED6gyCjO5gjT3X6swSIPz8zvlyRKiimnVmCRDPdSHsJ3Q1Z+ykNwb5uj7lf3See3HmqkfKadX3py8/80Xa8719/V+kPd/UYabUpFfNaPKjEXE5/cBOlvtuMVR+jedTLkSiswx+5XZVwnx5Z5aAug3q9DTwkCCnyg0SvveYaiCQaLzHfo3LhfPnsRskfKo/BgkfSRD6VtaVB+ohhJWEqKYNc5vspDeNhWsbC9e2Fv24sXCtMntNheSH5z9+/vSR54qPPNfb11985DnqK/foTSJ61QqMQcJHdsoj3o1VkdDVnLaR3ihPvf1p0rOfFFRkFCkLztafutRyrupGee3tlq/u9hjGTh7+QfQmERV61RKi2ul/d7Kz+rHKWY/hM17E+7BaEqKaVsz90EbS82nSs2nC736Q+N33dz5zeMcz78U9c/Cdf07Z+p29f/in4iPPMRqv2Bj+xkN2VEe8G6siIappwdwPrCQEsnwJRc2rvbjJ7n5oi3zvIU9xQlGzZxzvmSDMDrcFAlm2hKKm00V0jeGN+sivbII8xYHFvgBHYUfNRRasfaMdYaOfwKqDpX2DrgwssmDt4uVWNroKrC5YUBOfwvV7e8mHJGXkqAlbuGDtovIaSx0GVgvhqkl5OVc617e/n3xIjpqw7af1xmls4YK1AMUc2m1t/gy+nrC0zwsQKuGqqd/b6/4/d8efOnNezjUOOraf1hddt248eGvgvsOKEvQFa4GKubPbGqjJOVhQ8+b2myf/7aTXyw+/vP/spou9E6jJgk/N4NSCtcBqhsTybGm1UG5QM8KwMKHnvJzbWKUYncY2HrxFeakfR6ct+H2Ta/yBk1qwBmoCjwsbt0Gjd01XBYTVMHjf8eymi3fH0elZ/PSZgfMXjH1GNPWjzoMHmoNP6BzZbY0+odMtf+SuB8ByEa6apLXXdFUwZ/zcdFVgN+l1Y+gDs2ty2iW7OHb2730f/fVO6ked+/ddWaqakdxtLYCaCP1kIOeThQU1Hc1rnN2754yfKwrXm+7drbsyVSjtU9XaZWXTksyBw2m65L1tBw5cO3igmVnMnd3Wgo6aC/sKPCFYmNBJa+/Ulz84+8E/5r7/2v0xXV7BwMXScZnMnLKn/M23/vpOXGHy3ratsUpedDKzkju7rYGa3IOdX4MuyP7+SdJL98a0gxOYbsghyejOzR/e8OpBrWHqYpUuJaVja6zSbMaYZdzabS3QhO63ARuY+URhR81j5+smR3UDE5je6JBk9B8+dE2S0b9lS27hydbM3Fsi0Y2tscqtsUvZPjVSu60FGTXFcBcUMVhTs3/cQX27/oetJ19//eN3U67tSGzcEl+/b79BJLrxyht/CzChA0BwWFPTuzCNyutvHE0SKtev37/57ePr1++P3iQK6cSw29rqZbme19wed2LrH48TBCE98dXmt4+zfn7gqQceJQY4CqgJcBRQE+AooCbAUUBNgKOwpiasXAPYhU01YeUawCJsPK+JYdPdXc3HT3cek3YWn9LX1gbcag1WrgGPRdhPuWPYoLJamy0ZOykdk2bqUt9rStxx+dBfAm61xizm0LK1pRHo93tgmQhXzekeTfdn6TOlJWitfLbqwkRhtubdXeWvbUj6XRovZfARK9c4tGxtaYCaT5Bw1ewqOT2clW6tLLXXyS3VlyaOZWv372n4z9+ceWuLxU7QV66F+jM6k+VZG/S41wY1l51w1WzPzx366PD0meMzpWcelJwYknz8zW7hldc3ZK5Zy9s39K9Jmp/Ft3q3WmOlx6DmKiFcNTtPnez6k3Dk0yPGo58MfJqqSdndFvt7xbpfnIx5857JNTaFDU06vFutMYs5tGxtkUVq/k8/+akJi9qWkXDVvFurqt38Zkfclq6khPaE7W1v/67uFX7xj9fEb/gzb9/gz5M0L8W3erdaYxZzaNlasEVqjEfl/dSERW3LCgtfHlXtP3BJwKt7hV+3fp38ly+f+tELefxfj9xz9o077o6g3YM271ZrzEoOLVsLshKI8ekh6IQO8zv7sPOV+50vaz/79WsZz7/wYdS6d//rwO/Tp159f5KXMvjzpK6fxbd6t1pjlnFo2RqoyTlY+zXo2Pm6eybn6BQ2OIH1jjq0Q/Y7ffZ2vfWm1uLdao1Zw6Fla8EWqdFPos8T+E/osKhtOWFTTeN9J7VyrXvQ3tlnu33Xqu6xtN6Z9W61xqzh0LK14IvU6LdSef7XhkVtywmbanpXrgUMW18eLQ8wI3MONtVkrFxbmMc/6xNbtgZqcg54XpMC1OQcoCbAUUBNgKOAmgBHATUBjgJqAhwF1AQ4CqgJcBRQE+AooCbAUUBNgKOAmgBHATUBjgJqAhzl/wH8WMLplrhS/gAAAABJRU5ErkJggg==" alt="" />

加载到IIS指定的站点中

aaarticlea/png;base64,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" alt="" />

Relevant Link:

http://blog.csdn.net/mycoolx/article/details/6913048
http://www.codeproject.com/Articles/2570/Discover-ISAPI-Working-with-GET-POST-data
http://www.codeproject.com/KB/ISAPI/
http://msdn.microsoft.com/en-us/library/ms525035.aspx
http://www.iis.net/configreference/system.webserver/isapifilters
http://blog.526net.com/?p=378
http://msdn.microsoft.com/en-us/library/ms525103(v=vs.90).aspx
http://msdn.microsoft.com/en-us/library/ms524610(v=vs.90).aspx
http://msdn.microsoft.com/en-us/library/ms525612(v=vs.90).aspx
http://msdn.microsoft.com/en-us/library/ms524855(v=vs.90).aspx
http://www.hacker.com.cn/show-16-1250-1.html
http://www.xfocus.net/articles/200508/813.html
http://technet.microsoft.com/zh-cn/library/cc733109(v=ws.10).aspx

8. IIS Extension

我们已经学习了IIS ISAPI Filter,在继续学习IIS Extension之前,我们需要梳理一下IIS Filter和IIS Extension的概念

/*
ISAPI分为两种:ISAPI extension(ISAPI扩展)和ISAPI filter(ISAPI筛选器)
*/
. ISAPI服务器扩展(ISAPI extension)
) 可以被 HTTP 服务器加载和调用的DLL
) ISAPI扩展(extension)也称为Internet服务器应用程序(ISA),用于增强符合Internet服务器API(ISAPI)的服务器的功能
) ISAPI扩展(extensio)通过浏览器应用程序调用,并且将相似的功能提供给通用网关接口(CGI)应用程序 . ISAPI筛选器(ISAPI Filter)
) 在启用ISAPI的HTTP服务器上运行的DLL,用以筛选与服务器之间来回传送的数据
) 该筛选器可以完成一些前置、后置处理,通过注册事件的通知的方式,当发生选定事件时,筛选器被调用
2.1) 登录或URL映射
2.2) 监视及更改数据(在数据从服务器传输到客户端或相反的过程中)
2.3) 使用ISAPI筛选器提供增强的HTTP请求记录(例如,跟踪登录到服务器的用户)、自定义加密、自定义压缩或其他身份验证方法

ISAPI扩展(ISAPI extension)同样需要3个导出函数(TerminateExtension是可选的):

. BOOL WINAPI GetExtensionVersion( HSE_VERSION_INFO  *pVer);
该函数是扩展DLL文件第一次被加载到站点处理进程时被调用。 . DWORD WINAPI HttpExtensionProc( LPEXTENSION_CONTROL_BLOCK lpECB);
该函数是IIS服务每次触发ISAPI扩展时所调用的函数。也就是IIS服务增强服务时具体的实现内容通过本函数的调用。 . BOOL WINAPI TerminateExtension( DWORD dwFlags);
该函数是ISAPI扩展DLL文件从进程中被载时调用一次。

Example(validate credit number)

IIS Extension的编程和IIS Filter的编程很类似,都是在进行DLL编程

使用VS2010创建一个空的DLL项目

aaarticlea/png;base64,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" alt="" />

添加2个头文件StdAfx.cpp、StdAfx.h

StdAfx.cpp

// stdafx.cpp : source file that includes just the standard includes
// validate.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information #include "stdafx.h" // TODO: reference any additional headers you need in STDAFX.H
// and not in this file

StdAfx.h

// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
// #if !defined(AFX_STDAFX_H__3D1F2106_3F8E_45D4_BC4E_E93F382011FC__INCLUDED_)
#define AFX_STDAFX_H__3D1F2106_3F8E_45D4_BC4E_E93F382011FC__INCLUDED_ #if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000 // Insert your headers here
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <windows.h> // TODO: reference additional headers your program requires here //{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_STDAFX_H__3D1F2106_3F8E_45D4_BC4E_E93F382011FC__INCLUDED_)

aaarticlea/png;base64,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" alt="" />

添加2个源文件validate.cpp、validate.def

validate.def

; Validate.def : Declares the module parameters for the DLL.

LIBRARY      "Validate"
DESCRIPTION 'Validate ISAPI Extension' EXPORTS
; Explicit exports can go here HttpExtensionProc @
GetExtensionVersion @

validate.cpp

// validate.cpp : Defines the entry point for the DLL application.
// #include "StdAfx.h"
#include "httpext.h"
#include "stdio.h" #define ERR_WRONG_NUMBER_OF_DIGITS 1
#define ERR_NOT_A_MASTERCARD 2
#define ERR_INVALID_CC 3
#define ERR_INVALID_INPUT 4 void WriteContext(EXTENSION_CONTROL_BLOCK *pECB, char *pszFormat, ...); BYTE CheckCC(const char *pszNumber)
{
int i = ;
if(strlen(pszNumber) != )
return ERR_WRONG_NUMBER_OF_DIGITS; for(i = ; i < ; i++)
if(!isdigit(pszNumber[i]))
return ERR_INVALID_INPUT; if(pszNumber[] != '' || pszNumber[] < '' || pszNumber[] > '')
return ERR_NOT_A_MASTERCARD; int nSum;
for(i = , nSum = ; i < ; i += )
{
int nDigit = (pszNumber[i] - ) * ;
nSum += (nDigit < ? nDigit : nDigit / + nDigit % ) + (pszNumber[i + ] - );
} if(nSum % )
return ERR_INVALID_CC; return ;
} BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
return TRUE;
} BOOL WINAPI GetExtensionVersion(HSE_VERSION_INFO *pVer)
{
pVer->dwExtensionVersion = HSE_VERSION;
strncpy(pVer->lpszExtensionDesc, "Validate ISAPI Extension", HSE_MAX_EXT_DLL_NAME_LEN); return TRUE;
} void StartContext(EXTENSION_CONTROL_BLOCK *pECB)
{
WriteContext(pECB, "<html>\r\n<body>\r\n");
} void EndContext(EXTENSION_CONTROL_BLOCK *pECB)
{
WriteContext(pECB, "</body>\r\n</html>");
} void WriteContext(EXTENSION_CONTROL_BLOCK *pECB, char *pszFormat, ...)
{
char szBuffer[];
va_list arg_ptr;
va_start(arg_ptr, pszFormat);
vsprintf(szBuffer, pszFormat, arg_ptr);
va_end(arg_ptr); DWORD dwSize = strlen(szBuffer);
pECB->WriteClient(pECB->ConnID, szBuffer, &dwSize, );
} DWORD WINAPI HttpExtensionProc(EXTENSION_CONTROL_BLOCK *pECB)
{
StartContext(pECB); BYTE byRet = CheckCC(pECB->lpszQueryString);
if(!byRet)
{
//this is a valid master card, echo a suitable string to the client
WriteContext(pECB, "<p><b><font face='Verdana' color='#008000'>Congratulations!</font></b></p>");
WriteContext(pECB, "<p><font size='2' face='Verdana'>%s is a valid matser card #</font></p>\r\n", pECB->lpszQueryString);
}
else
{
//this is an invalid master card, echo a proper string to the client!
WriteContext(pECB, "<p><b><font face='Verdana' color='#800000'>Sorry!</font></b></p>");
WriteContext(pECB, "<p><font size='2' face='Verdana'>What you have entered is an invalid master card#</font></p>\r\n");
} EndContext(pECB); return HSE_STATUS_SUCCESS;
}

编译之

aaarticlea/png;base64,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" alt="" />

载入IIS

aaarticlea/png;base64,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" alt="" />

Relevant Link:

http://www.codeproject.com/Articles/1432/What-is-an-ISAPI-Extension
http://blog.csdn.net/mycoolx/article/details/6913048
http://msdn.microsoft.com/en-us/cc302003.aspx

9. IIS FTP匿名登录的自动化修复

需要注意的是

. 对于WINDOWS IIS FTP API来说,IIS .0和IIS 7是两套不同的API,因此针对IIS FTP的匿名访问的禁用,需要同时准备2套API调用代码,因为我们并不知道客户端的IIS是什么版本的
. 我们要修复(禁用)的是IIS FTP的匿名登录,仅仅是匿名登录,因为"可写"并不算系统配置的漏洞,这本来就是正常的功能,而匿名登录才是一个导致黑客入侵的攻击向量

0x1: 通过API方式编程实现IIS 6.0 FTP匿名登录禁用

IIS(Internet Information Service) 6.0属于windows操作系统的一部分,我们可以使用IIS Programmatic Administration SDK API去操作IIS

//IIS Programmatic Administration SDK的适用范围
http://msdn.microsoft.com/en-us/library/ms525568(v=vs.90).aspx
//MSDN官方的介绍
http://msdn.microsoft.com/en-us/library/ms525041(v=vs.90).aspx

Technology

. Active Directory Service Interfaces (ADSI)
Automation-compliant languages like C, Visual C++, Visual Basic, Microsoft Visual Basic Scripting Edition (VBScript), Microsoft JScript, PerlScript
http://blog.sina.com.cn/s/blog_722787fe0100md61.html
ADSI(Active Directory Services Interface)是Microsoft新推出的一项技术,它统一了许多底层服务的编程接口,程序员可以使用一致的对象技术来访问这些底层服务。 ADSI把这些服务的公共部分提取出来,同时隔离出相异
的部分,程序员可以用统一的接口访问底层服务的公共部分,并延伸到底层服务的专有部分 . Windows Management Instrumentation (WMI)
Automation-compliant languages like C, C++, Visual Basic, VBScript, or JScript, PerlScript
http://blog.csdn.net/hzy694358/article/details/6717042 . System.DirectoryServices
.NET-compliant languages like C# and Visual Basic.NET . Admin Base Object (ABO) interfaces
C, C++, Visual Basic . Other IIS interfaces for low-level logging and service control
C, C++, Visual Basic

由于windows的IIS API接口是一个在不断发展的体系,因此对于不同版本的操作系统、不同版本的IIS,它们所能使用的API是不同的,在编程和使用的过程中我们需要特别关注不同API对操作系统版本、IIS版本的限制

. ADSI
) C/C++/VB6. code
) Script code
. WMI
) C/C++/VB6. code
) Script code
. ABO
) C/C++/VB6. code

1. ADSI(Active Directory Service Interfaces)技术

Use ADSI to programmatically configure IIS in a script or compiled program. Changes take place immediately without a need to stop and start the server.

适用范围

. IIS 4.0
. IIS 5.0
. IIS 5.1
. IIS 6.0

code(disabled the ftp anonymous login switch)

// fixftp6.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include <atlstr.h>
#include <initguid.h>
#include <objbase.h>
#include <iads.h>
#include <adshlp.h>
#include <atlbase.h>
#include <iiisext.h>
#include <iisext_i.c>
#include <comdef.h> #include <lm.h> #include <string>
#include <sstream>
#include <vector>
#include <iostream> using namespace std; #pragma comment(lib, "Activeds.lib")
#pragma comment(lib, "Adsiid.lib")
#pragma comment(lib, "netapi32.lib") wstring logFilename; // FTP 6.0 匿名访问
HRESULT SetIISFtpAnonymousState(bool anony, bool applyToAll, vector<wstring> &ftpNames)
{
wstring restoreNames;
HRESULT hr;
IADs *pADs = NULL;
IADsContainer* iContainer = NULL;
IUnknown *pUnk = NULL;
IDispatch *pDisp = NULL; //The ADsGetObject function binds to an object given its path and a specified interface identifier.
hr = ADsGetObject( L"IIS://localhost/MSFTPSVC", IID_IADsContainer, (void **)&iContainer );
if (FAILED(hr))
{
wprintf(L"ADsGetObject failed %x\n", hr);
return hr;
} //The IADsContainer::get__NewEnum method Retrieves an enumerator object for the container. The enumerator object implements the IEnumVARIANT interface to enumerate the children
of the container object.
hr = iContainer->get__NewEnum(&pUnk);
if (FAILED(hr))
{
wprintf(L"get__NewEnum failed\n");
return hr;
} IEnumVARIANT *pEnum;
//Retrieves pointers to the supported interfaces on an object. This method calls IUnknown::AddRef on the pointer it returns.
hr = pUnk->QueryInterface(IID_IEnumVARIANT, (void**)&pEnum);
if (FAILED(hr))
{
wprintf(L"QueryInterface failed\n");
return hr;
} BSTR className = NULL;
IADs *iADs = NULL;
ULONG lFetch; VARIANT var;
//Initializes a variant.
VariantInit(&var);
/*
Retrieves the specified items in the enumeration sequence.
*/
hr = pEnum->Next(, &var, &lFetch); while(hr == S_OK)
{
if (lFetch == )
{
//Exposes objects, methods and properties to programming tools and other applications that support Automation.
pDisp = V_DISPATCH(&var);
//The IADs interface defines the basic object features, that is, properties and methods, of any ADSI object. Examples of ADSI objects include users, computers, services,
organization of user accounts and computers, file systems, and file service operations.
pDisp->QueryInterface(IID_IADs, (void**)&iADs);
//get the class
iADs->get_Class(&className); if (wcscmp(className, L"IIsFtpServer") == )
{
BSTR name = NULL;
//get the name
iADs->get_Name(&name); VARIANT status;
VariantInit(&status);
//initialize the state
V_VT(&status) = VT_BOOL;
/*
The IADs::Get method retrieves a property of a given name from the property cache
获取当前FTP站点的匿名登录开关状态
*/
iADs->Get(L"AllowAnonymous", &status);
//loads into the property cache values of the supported properties of this ADSI object from the underlying directory store.
iADs->GetInfo(); //是否需要将当前设置应用到所有FTP站点
if (applyToAll)
{//all
V_VT(&var) = VT_BOOL;
//anony:用户传入的匿名访问开关
V_BOOL(&var) = anony; //如果当前FTP站点的匿名登录开关为"打开允许状态",并且传入的参数指示为"需要关闭"
if (V_BOOL(&status) && anony == false)
{
//将匿名访问的登录开关设置为false
iADs->Put(L"AllowAnonymous", var);
iADs->SetInfo(); //记录设置的FTP列表
if (restoreNames.empty())
{
restoreNames = wstring(name);
}
else
{
restoreNames += L'|';
restoreNames += wstring(name);
} wprintf(L"FTP(%s) AllowAnonymous %s\n", name, anony ? L"enabled" : L"disabled");
} }
else
{//single
for (vector<wstring>::iterator it = ftpNames.begin(); it < ftpNames.end(); it++)
{
if (*it == name)
{
V_VT(&var) = VT_BOOL;
V_BOOL(&var) = anony; iADs->Put(L"AllowAnonymous", var);
iADs->SetInfo(); wprintf(L"FTP(%s) AllowAnonymous %s\n", name, anony ? L"enabled" : L"disabled");
}
}
} }
iADs->Release();
SysFreeString(className);
}
VariantClear(&var);
pDisp->Release();
pDisp = NULL;
//继续遍历
hr = pEnum->Next(, &var, &lFetch);
} if (!restoreNames.empty())
{
WritePrivateProfileString(L"restore", L"ftp", restoreNames.c_str(), logFilename.c_str());
} return hr;
} int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr;
//ADSI 基于 com如果忽略了调用 CoInitialize 或 OleInitialize,AdsGetObject,它将返回 HRESULT 的 MK_E_SYNTAX (0x800401e4,"无效语法"),
hr = CoInitializeEx( NULL, COINIT_MULTITHREADED );
if ( FAILED( hr ) )
{
wprintf( L"CoInitialize failed. Error 0x%0x\n", hr );
return hr;
} vector<wstring> restoreFtpNames;
SetIISFtpAnonymousState(false, true, restoreFtpNames); // 禁用所有 return ;
}

编译后运行

aaarticlea/png;base64,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" alt="" />

Relevant Link:

http://msdn.microsoft.com/en-us/library/ms524767(v=vs.90).aspx

2. WMI(Windows Management Instrumentation)技术

Use WMI to programmatically configure IIS in a script or compiled program. Changes take place immediately without needing to stop and start the server.

适用范围

. IIS 6.0 

Windows Management Instrumentation是WBEM的Windows实现。通过WMI,我们可以获取关于硬件\软件的数据,也可以提供关于硬件或软件服务的数据给WMI

code(get system information)

// wmi_getsysinfo.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include <iostream>
#include <comdef.h>
#include <Wbemidl.h> # pragma comment(lib, "wbemuuid.lib") using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hres; /*
Initialize COM.
由于用C++编写WMI应用是基于COM技术的,所以必须初始化COM库
*/
hres = CoInitializeEx(, COINIT_MULTITHREADED);
if (FAILED(hres))
{
cout << "Failed to initialize COM library. "
<< "Error code = 0x"
<< hex << hres << endl;
return ; // Program has failed.
} /*
Initialize
初始化COM库安全级别
*/
hres = CoInitializeSecurity(
NULL,
-, // COM negotiates service
NULL, // Authentication services
NULL, // Reserved
RPC_C_AUTHN_LEVEL_DEFAULT, // authentication
RPC_C_IMP_LEVEL_IMPERSONATE, // Impersonation
NULL, // Authentication info
EOAC_NONE, // Additional capabilities
NULL // Reserved
);
if (FAILED(hres))
{
cout << "Failed to initialize security. "
<< "Error code = 0x"
<< hex << hres << endl;
CoUninitialize();
return ; // Program has failed.
} // Obtain the initial locator to Windows Management
// on a particular host computer.
IWbemLocator *pLoc = ;
/*
连接到WMI命名空间
通过调用CoCreateInstance初始化WMI的定位器(IWbemLocator类型的实例)
*/
hres = CoCreateInstance(
CLSID_WbemLocator,
,
CLSCTX_INPROC_SERVER,
IID_IWbemLocator, (LPVOID *) &pLoc);
if (FAILED(hres))
{
cout << "Failed to create IWbemLocator object. "
<< "Error code = 0x"
<< hex << hres << endl;
CoUninitialize();
return ; // Program has failed.
} IWbemServices *pSvc = ; // Connect to the root\cimv2 namespace with the
// current user and obtain pointer pSvc
// to make IWbemServices calls.
/*
调用IWbemLocator::ConnectServer方法,通过这个定位器连接到WMI的命名空间,通过把一个IWbemServices的实例以参数形式传递给ConnectServer方法,就会创建这个服务。如我们需要一些BIOS信息,那么需要使用的
WMI提供程序是Win32_BIOS,则需要连接到ROOT//CIMV2命名空间中。
*/
hres = pLoc->ConnectServer( _bstr_t(L"ROOT\\CIMV2"), // WMI namespace
NULL, // User name
NULL, // User password
, // Locale
NULL, // Security flags
, // Authority
, // Context object
&pSvc // IWbemServices proxy
);
if (FAILED(hres))
{
cout << "Could not connect. Error code = 0x"
<< hex << hres << endl;
pLoc->Release();
CoUninitialize();
return ; // Program has failed.
} cout << "Connected to ROOT\\CIMV2 WMI namespace" << endl; // Set the IWbemServices proxy so that impersonation
// of the user (client) occurs.
/*
设置WMI服务的安全级别
根据上一步得到的服务,设置相应的服务安全级别。通常来说,如果我们没有设置适当的安全属性,COM安全方案不允许一个进程去访问另一个进程,因此如果我们要访问一个外部进程的对象,那么我们应该设置适当的
IWbemServices的安全级别。
*/
hres = CoSetProxyBlanket( pSvc, // the proxy to set
RPC_C_AUTHN_WINNT, // authentication service
RPC_C_AUTHZ_NONE, // authorization service
NULL, // Server principal name
RPC_C_AUTHN_LEVEL_CALL, // authentication level
RPC_C_IMP_LEVEL_IMPERSONATE, // impersonation level
NULL, // client identity
EOAC_NONE // proxy capabilities
);
if (FAILED(hres))
{
cout << "Could not set proxy blanket. Error code = 0x"
<< hex << hres << endl;
pSvc->Release();
pLoc->Release();
CoUninitialize();
return ; // Program has failed.
} //通过WQL使用WMI服务
IEnumWbemClassObject* pEnumerator = NULL;
hres = pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t("SELECT * FROM Win32_OperatingSystem"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator); if (FAILED(hres))
{
cout << "Query for processes failed. "
<< "Error code = 0x"
<< hex << hres << endl;
pSvc->Release();
pLoc->Release();
CoUninitialize();
return ; // Program has failed.
}
else
{
IWbemClassObject *pclsObj;
ULONG uReturn = ; while (pEnumerator)
{
hres = pEnumerator->Next(WBEM_INFINITE, ,
&pclsObj, &uReturn); if( == uReturn)
{
break;
} VARIANT vtProp; // Get the value of the Name property
hres = pclsObj->Get(L"Name", , &vtProp, , );
wcout << "Manufacturer Name : " << vtProp.bstrVal << endl;
VariantClear(&vtProp);
} } // Cleanup
// ======== pSvc->Release();
pLoc->Release();
CoUninitialize(); return ;
}

aaarticlea/png;base64,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" alt="" />

Relevant Link:

http://msdn.microsoft.com/zh-cn/library/ms974579.aspx
http://blog.csdn.net/xscarlet/article/details/1755063
http://msdn.microsoft.com/en-us/library/aa394554(v=vs.85).aspx

3. System.DirectoryServices技术

4. System.Web.Management技术

5. ABO(Admin Base Objects)技术

Use ABO to programmatically configure IIS in a compiled program written in C, C++, or Visual Basic 6.0.

Using ABO is the fastest method of configuring IIS. It is faster than using ADSI or WMI because the ADSI and WMI providers are wrappers for ABO.
//ADSI和WMI API本质上是对ABO的一层封装,所以使用ABO技术是最高效的一种方法

code(Creating Virtual Directories)

// abo_create_virtualpath.cpp : 定义控制台应用程序的入口点。
// Precompiled headers: Not Using Precompiled Headers
// (otherwise causes a C1010 error)
// Preprocessor Definitions: include UNICODE
// (otherwise causes multiple C2664 errors) #define STRICT
#define UNICODE
#define INITGUID
#define WINVER 0x0400
#define _WIN32_DCOM #include <WINDOWS.H>
#include <OLE2.H>
#include <winerror.h>
#include <stdio.h>
#include <stdlib.h>
#include <initguid.h> #include "iadmw.h"
#include "iiscnfg.h" // Just #define the data and paths to simplify the sample.
// Note that all vroots of a new server must go under the root
// node of the virtual server. In the following statements,
// the virtual server (1) is "/lm/w3svc/1". The new vroot
// will go underneath "/lm/w3svc/1/root" // Also note that these strings are UNICODE
/*
lm: 本地服务器名
W3SVC: IIS服务器
2: 第2个站点
Root: 站点根目录
*/
#define NEW_VROOT_PATH TEXT("newvroot")
#define NEW_VROOT_PARENT TEXT("/lm/w3svc/1/root")
#define NEW_VROOT_FULLPATH TEXT("/lm/w3svc/1/root/newvroot")
#define NEW_VROOT_DIRECTORY TEXT("C:\\TEMP") int main (int argc, char *argv[])
{
HRESULT hres; IMSAdminBase *pcAdmCom = NULL; // COM interface pointer
HRESULT hresError = ; // Holds the errors returned by the IMSAdminBase API calls
DWORD dwRefCount; // Holds the refcount of the IMSAdminBase object DWORD dwResult = ; METADATA_HANDLE hmdParentHandle; // This is the handle to the parent object of the new vdir.
METADATA_HANDLE hmdChildHandle; // This is the handle to the parent object of the new vdir. if (argc < )
{
puts ("Usage: Create_vdir <machine name>\n Ex: Create_Vdir adamston1\n\n");
return -;
} printf("You will be adding a new VRoot path in the metabase. \n");
printf(" Machine Name: %s\n", argv[]);
wprintf (
L" Path: %s\n"
L" Full Path: %s/%s\n",
NEW_VROOT_PATH,
NEW_VROOT_PARENT,
NEW_VROOT_PATH); // These are required for creating a COM object.
IClassFactory * pcsfFactory = NULL;
COSERVERINFO csiMachineName;
COSERVERINFO *pcsiParam = NULL; // Fill the structure for CoGetClassObject.
csiMachineName.pAuthInfo = NULL;
csiMachineName.dwReserved1 = ;
csiMachineName.dwReserved2 = ;
pcsiParam = &csiMachineName; // Allocate memory for the machine name.
csiMachineName.pwszName = (LPWSTR) HeapAlloc (GetProcessHeap(), HEAP_ZERO_MEMORY, (strlen (argv[]) + ) * sizeof (WCHAR) );
if (csiMachineName.pwszName == NULL)
{
printf ("Error allocating memory for MachineName\n");
return E_OUTOFMEMORY;
} // Convert Machine Name from ASCII to Unicode.
dwResult = MultiByteToWideChar (
CP_ACP,
,
argv[],
strlen (argv[]) + ,
csiMachineName.pwszName,
strlen (argv[]) + ); if (dwResult == )
{
printf ("Error converting Machine Name to UNICODE\n");
return E_INVALIDARG;
} // Initialize COM.
hresError = CoInitializeEx(NULL, COINIT_MULTITHREADED); if (FAILED(hresError))
{
printf ("ERROR: CoInitialize Failed! Error: %d (%#x)\n", hresError, hresError);
return hresError;
} hresError = CoGetClassObject(GETAdminBaseCLSID(TRUE), CLSCTX_SERVER, pcsiParam, IID_IClassFactory, (void**) &pcsfFactory); if (FAILED(hresError))
{
printf ("ERROR: CoGetClassObject Failed! Error: %d (%#x)\n", hresError, hresError);
return hresError;
}
else
{
hresError = pcsfFactory->CreateInstance(NULL, IID_IMSAdminBase, (void **) &pcAdmCom);
if (FAILED(hresError))
{
printf ("ERROR: CreateInstance Failed! Error: %d (%#x)\n", hresError, hresError);
pcsfFactory->Release();
return hresError;
}
pcsfFactory->Release();
} /***********************************************/
/* Important Section */ // Open the path to the parent object.
hresError = pcAdmCom->OpenKey (
METADATA_MASTER_ROOT_HANDLE,
NEW_VROOT_PARENT,
METADATA_PERMISSION_WRITE | METADATA_PERMISSION_READ,
,
&hmdParentHandle); if (FAILED(hresError))
{
printf ("ERROR: Could not open the Parent Handle! Error: %d (%#x)\n", hresError, hresError);
dwRefCount = pcAdmCom->Release();
return hresError;
} printf ("Path to parent successfully opened\n");
/***********************************/
/* Add the new Key for the VROOT */
hresError = pcAdmCom->AddKey (
hmdParentHandle,
NEW_VROOT_PATH); if (FAILED(hresError))
{
printf ("ERROR: AddKey Failed! Error: %d (%#x)\n", hresError, hresError);
hresError = pcAdmCom->CloseKey(hmdParentHandle);
dwRefCount = pcAdmCom->Release();
return hresError;
} printf ("New Child successfully added\n"); // Close the handle to the parent and open a new one to the child.
// This isn't required, but when the handle is open at the parent, no other
// metabase client can access that part of the tree or subsequent child.
// Open the child key because it is lower in the metabase and doesn't conflict with as many
// other paths.
hresError = pcAdmCom->CloseKey(hmdParentHandle);
if (FAILED(hresError))
{
printf ("ERROR: Could not close the Parent Handle! Error: %d (%#x)\n", hresError, hresError);
dwRefCount = pcAdmCom->Release();
return hresError;
} hresError = pcAdmCom->OpenKey (
METADATA_MASTER_ROOT_HANDLE,
NEW_VROOT_FULLPATH,
METADATA_PERMISSION_WRITE | METADATA_PERMISSION_READ,
,
&hmdChildHandle); if (FAILED(hresError))
{
printf ("ERROR: Could not open the Child Handle! Error: %d (%#x)\n", hresError, hresError);
dwRefCount = pcAdmCom->Release();
return hresError;
} printf ("Path to child successfully opened\n"); /***********************************/
/* The vroot needs a few properties set at the new path in order */
/* for it to work properly. These properties are MD_VR_PATH, MD_KEY_TYPE */
/* and MD_ACCESSPERM. */ METADATA_RECORD mdrNewVrootData; // First, add the MD_VR_PATH - this is required to associate the vroot with a specific
// directory on the filesystem
mdrNewVrootData.dwMDIdentifier = MD_VR_PATH; // The inheritable attribute means that paths that are created underneath this
// path will retain the property from the parent node unless overwritten at the
// new child node.
mdrNewVrootData.dwMDAttributes = METADATA_INHERIT;
mdrNewVrootData.dwMDUserType = IIS_MD_UT_FILE;
mdrNewVrootData.dwMDDataType = STRING_METADATA; // Now, create the string. - UNICODE
mdrNewVrootData.pbMDData = (PBYTE) NEW_VROOT_DIRECTORY;
mdrNewVrootData.dwMDDataLen = (wcslen (NEW_VROOT_DIRECTORY) + ) * sizeof (WCHAR);
mdrNewVrootData.dwMDDataTag = ; // datatag is a reserved field. // Now, set the property at the new path in the metabase.
hresError = pcAdmCom->SetData (
hmdChildHandle,
TEXT ("/"),
&mdrNewVrootData); if (FAILED(hresError))
{
printf ("ERROR: Setting the VR Path Failed! Error: %d (%#x)\n", hresError, hresError);
hresError = pcAdmCom->CloseKey(hmdChildHandle);
dwRefCount = pcAdmCom->Release();
return hresError;
} printf ("Successfully set the vrpath\n"); /***********************************/
// Second, add the MD_KEY_TYPE - this indicates what type of key we are creating -
// The vroot type is IISWebVirtualDir
mdrNewVrootData.dwMDIdentifier = MD_KEY_TYPE; // The inheritable attribute means that paths that are created underneath this
// path will retain the property from the parent node unless overwritten at the
// new child node.
mdrNewVrootData.dwMDAttributes = METADATA_INHERIT;
mdrNewVrootData.dwMDUserType = IIS_MD_UT_FILE;
mdrNewVrootData.dwMDDataType = STRING_METADATA; // Now, create the string. - UNICODE
mdrNewVrootData.pbMDData = (PBYTE) TEXT("IIsWebVirtualDir");
mdrNewVrootData.dwMDDataLen = (wcslen (TEXT("IIsWebVirtualDir")) + ) * sizeof (WCHAR);
mdrNewVrootData.dwMDDataTag = ; // datatag is a reserved field. // Now, set the property at the new path in the metabase.
hresError = pcAdmCom->SetData (
hmdChildHandle,
TEXT ("/"),
&mdrNewVrootData); if (FAILED(hresError))
{
printf ("ERROR: Setting the Keytype Failed! Error: %d (%#x)\n", hresError, hresError);
hresError = pcAdmCom->CloseKey(hmdChildHandle);
dwRefCount = pcAdmCom->Release();
return hresError;
}
printf ("Successfully set the Keytype \n"); /***********************************/
// Now, add the MD_ACCESS_PERM - this tells whether we should read, write or
// execute files within the directory. For now, we will simply add
// READ permissions.
mdrNewVrootData.dwMDIdentifier = MD_ACCESS_PERM; // The inheritable attribute means that paths that are created underneath this
// path will retain the property from the parent node unless overwritten at the
// new child node.
mdrNewVrootData.dwMDAttributes = METADATA_INHERIT;
mdrNewVrootData.dwMDUserType = IIS_MD_UT_FILE;
mdrNewVrootData.dwMDDataType = DWORD_METADATA; //Create the access perm.
DWORD dwAccessPerm = ; // 1 is read only
mdrNewVrootData.pbMDData = (PBYTE) &dwAccessPerm;
mdrNewVrootData.dwMDDataLen = sizeof (DWORD);
mdrNewVrootData.dwMDDataTag = ; // datatag is a reserved field. // Now, set the property at the new path in the metabase.
hresError = pcAdmCom->SetData (
hmdChildHandle,
TEXT ("/"),
&mdrNewVrootData); if (FAILED(hresError))
{
printf ("ERROR: Setting the accessperm failed! Error: %d (%#x)\n", hresError, hresError);
hresError = pcAdmCom->CloseKey(hmdChildHandle);
dwRefCount = pcAdmCom->Release();
return hresError;
} printf ("Successfully set the accessperm\n"); /************************************************/
// We're done!!! Just clean up.
hresError = pcAdmCom->CloseKey(hmdChildHandle);
if (FAILED(hresError))
{
printf ("ERROR: Could not close the Child Handle! Error: %d (%#x)\n", hresError, hresError);
dwRefCount = pcAdmCom->Release();
return hresError;
} printf ("\nYou Have successfully installed a new VRoot at %S\n", NEW_VROOT_FULLPATH); // Release the object
dwRefCount = pcAdmCom->Release(); return ERROR_SUCCESS;
}

Relevant Link:

http://msdn.microsoft.com/en-us/library/ms525112(v=vs.90).aspx
http://msdn.microsoft.com/en-us/library/ms524657(v=vs.90).aspx
http://keicode.com/iis/iis21.php
http://msdn.microsoft.com/en-us/library/ms524657%28v=vs.90%29.aspx

6. other IIS management interfaces in administration scripts or applications that configure IIS programmatically技术

Relevant Link:

http://msdn.microsoft.com/en-us/library/ms525885(v=vs.90).aspx

0x2: 通过API方式编程实现IIS 7 FTP匿名登录禁用

在IIS 6使用的ADSI(active directory service interface)无法在在IIS 7.5下使用

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoEAAAAxCAIAAAAqZOSzAAAFCklEQVR4nO3dwXYbNwyF4XlNO8k6btpt0zRPN4+WRU91xiRxccGRzEj6v5VMgiBI1YM6x0q217fv+77v+75NOa6NXvdfHgeP+imdVtcjBoc5o3qqr9MwM3/KPJdYIu7Bry2Nb9LunXQvZ+uh0ln0faY5+6NVq71uPdXzpvGlIi/jYhcnPi11mOoY45yrj2mqEmvNtM5CHS9uZnilc3VO35te29+nTjKM1+PDtGJfUf+Q3iWNDMf7HhwdO63sGObftc55cta5i2H9TkKxUZrfzOOc0Sm1dJxqbU7CKL9ZvL4WczY9i1OYyDOdX4Q593CtetJ4XWoz6B9Bx5fKK93PVZKnU6XZiTzN7ek8peObhUVhwzxphmqRE3lEwJr7f337vsnjDfeI6tBvhvk6qjV9D0Q92/+dQKSarnO411Xyb6P7r56r15dUra30+uRe1bXpeaPgaNOTr6P8abWipFvU499naS/9pRPQT0Ux6TGdhRP3OSzMv8/0XFGSaGF6TBGfnsVM6+dxirnia7+SdNa5zzz+vx58GdVFCMfUUa3muKjEL3IfaaaOX6b19K/77fz8W/B+iCsSR0v3de4nmi2NR+eK7kEH6HsQ9QzPG2XejCt1zuuM+9VGkTetx69QHypN7sQ7m0ZTYlUz2L8WqZwtzHj/XP3sLr+/9KZpnc496PqbekSe4bmc+In8/Xh6BF1nE9mMD/Nsw/u/9GBU9f8RrKwGQAXfvxdPfvzF6MFn6P/lAfA74/t34xKWowcDALAGPRgAgDXowQAArEEPBgBgDXowAABrpD2YX5kDAOAmdA+m+wIAcCuiB9OAAQC4oeO/2dD8sfNEDx5+3Ft8ycfDAQDPS/ybDft7aSrRv5ucaTwAAI8v7cHNoLB3hrNmPAAAD+7qPVjPDn84BgDgGU33YN1To6kohn4MAHg6xx6s/7i4WTgcF0mGX4r8AAA8uP7nYAAA8BEun02iDQMA8KH4+6IBAFjjhR4MAMASL1/pwQAArPDy9e/VJQAA8JTowQAArHHpwfrDvv6vTF/rt6zFh5XTVWf2rZo4rPm56ituHeWP3uLh+D4ykccc9+8BAO7VS/d3dBxnLyPmY7F/LjtLRJ7hM9osYE5pefV+mlXm+ESqKEa8Qemdf+T4+fcRAO7A69s/znO5n+qJteaS8zWcVM1/3XomslUvWb+OemG1d86NV88FAHfv0x8/RJNLH9lRcEPE91NpDcMHd7rFdD1CFFbaV2Rz8qR1HsOO8c1gH2NWW83j5HfOBQB379O3cg+O4tOHtc4fDZa2c4Kr9UT290SMM6iLqd65KLXPv79/W6PxqNRqHp1f3ycAPJTP3/7dO5fZ0qO/Dzg+ZNP80eD5Gpp9xSO++vSP4qPzOquiJP4lRGmHeZpZMe7U6eRJ85vnAoC79/nPn+KZrh/3InjrnrnD3Z3nb1RDujbat1qPMFeDWZgT5hSsL7CfisajHat5dH7/XABw98werJ/jfbyzNopxxvspHVCt3+wBpRr0KlGMX39a5Jn3ItqxmscZN+8fAO7bl7gH7+8dV0Xj0SonPh1vHtai5rTOiXp6ZpLoHqrjTv5qqcNNxXi0XTWPM65PBACP4MtfP1eXcFbftFZWAwCA6QF68MbPTwCAe/QYPRgAgPtDDwYAYA16MAAAa9CDAQBYgx4MAMAa9GAAANagBwMAsAY9GACANejBAACsQQ8GAGANejAAAEv8An2L2Ccn61aDAAAAAElFTkSuQmCC" alt="" />

在IIS 7.5下禁用FTP匿名登录有很多种方式,包括

. WMI Scripts代码(实时生效)(有效)
. 通过appcmd.exe进行IIS操作(命令行方式)(实时生效)(未成功,待研究)
. 编辑IIS配置文件(非实时生效)(有效)
. WMI COM API C++代码(实时生效)(未成功,待研究)
. Microsoft.Web.Administration

1. WMI Scripts代码(实时生效)

' Creates and returns a reference to an Automation object.
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST" Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
' Get the site list of the IIS 7
Set sitesCollection = sitesSection.Collection For i = To CInt(sitesCollection.Count) -
Set siteElement = sitesCollection.Item(i)
Set ftpServerElement = siteElement.ChildElements.Item("ftpServer")
Set securityElement = ftpServerElement.ChildElements.Item("security")
Set authenticationElement = securityElement.ChildElements.Item("authentication")
Set anonymousAuthenticationElement = authenticationElement.ChildElements.Item("anonymousAuthentication")
anonymousAuthenticationElement.Properties.Item("enabled").Value = False
Next adminManager.CommitChanges()

直接运行即可

aaarticlea/png;base64,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" alt="" />

2. 通过appcmd.exe进行IIS操作(命令行方式)(实时生效)

appcmd是IIS 7.5提供的一个命令行管理工具,使用appcmd可以很方便地通过命令行的方式对IIS进行全方位的管理

pushd C:\Windows\System32\inetsrv
. 开启匿名访问
appcmd set config /section:anonymousAuthentication /enabled:true . 关闭匿名访问
appcmd set config /section:anonymousAuthentication /enabled:false

Relevant Link:

http://www.7edown.com/edu/article/soft_4646_1.html
http://blog.csdn.net/hbu_dcf/article/details/4888642

3. 编辑IIS配置文件(非实时生效)

通过编辑IIS的machine.xml、或者网站自己的web.xml的<anonymousAuthentication>节点,关闭IIS 7 FTP的匿名访问,这种方式需要通过重启IIS从而从新加载配置文件来更新设置

4. WMI COM API C++代码(实时生效)

从WMI本身的架构图我们可以知道,对于WMI Client Consumer来说,不论是使用WMI Scripts、还是使用WMI COM API C++方式对WMI 进行操作,在代码层面都是一样的,它们最终都走了WMI COM API的COM组件这个流程,关于WMI技术的相关知识,请参阅另一篇文章

http://www.cnblogs.com/LittleHann/p/4022669.html

所以从理论上来说,完全可以使用C++达到和WMI Scripts脚本代码同样的目的,从google和baidu的搜索结果上来看,对于使用WMI技术的C++代码,目前没有现成的example code可以借鉴,因此我们需要自己探索如何通过查阅和学习API文档进行功能的实现。
首先,我们需要抓住几个关键点

. WMI的信息都保存在各自的命名空间中,我们如果需要IIS FTP的匿名访问的配置信息,就需要找到保存有IIS FTP匿名访问配置的指定的命名空间
. WMI的操作有Put Data、Get Data两种,要进行IIS FTP匿名访问的配置获取,改变配置开关,需要使用不同的Class、Interface

WMI命名空间及类层次查询文档

http://www.wutils.com/wmi/classes/IIsFtpServerSetting.html

先解决第一个问题,通过论坛上一位技术员的评论,得知anonymous开关的命名空间为"ROOT\MicrosoftIISv2",

在"ROOT\MicrosoftIISv2"命名空间中,我们得到2个可能是和FTP匿名有关的Class,"IIsFtpServiceSetting"、和"IIsFtpServerSetting"

查看这2个class的Class.property成员,可以看到,确实有anonymous这个配置项

http://www.wutils.com/wmi/ROOT/MicrosoftIISv2/properties/AllowAnonymous.html

这说明FTP匿名访问的开关很可能和这2个class有关了,我们先尝试去枚举一下这2个配置项

1. WMI Scripts代码

strComputer = "."
Set objWMIService = GetObject _
("winmgmts:{authenticationLevel=pktPrivacy}\\" _
& strComputer & "\root\microsoftiisv2") Set colItems = objWMIService.ExecQuery _
("Select * from IIsFtpServerSetting") For Each objItem in colItems
Wscript.Echo "Access Execute: " & objItem.AccessExecute
Wscript.Echo "Access Flags: " & objItem.AccessFlags
Wscript.Echo "Access No Physical Directory: " & _
objItem.AccessNoPhysicalDir
Wscript.Echo "Access No Remote Execute: " & _
objItem.AccessNoRemoteExecute
Wscript.Echo "Access No Remote Read: " & _
objItem.AccessNoRemoteRead
Wscript.Echo "Access No Remote Script: " & _
objItem.AccessNoRemoteScript
Wscript.Echo "Access No Remote Write: " & _
objItem.AccessNoRemoteWrite
Wscript.Echo "Access Read: " & objItem.AccessRead
Wscript.Echo "Access Script: " & objItem.AccessScript
Wscript.Echo "Access Source: " & objItem.AccessSource
Wscript.Echo "Access Write: " & objItem.AccessWrite
Wscript.Echo "AD Connections Password: " & _
objItem.ADConnectionsPassword
Wscript.Echo "AD Connections User Name: " & _
objItem.ADConnectionsUserName
Wscript.Echo "Admin ACL Bin: " & objItem.AdminACLBin
Wscript.Echo "Allow Anonymous: " & objItem.AllowAnonymous
Wscript.Echo "Anonymous Only: " & objItem.AnonymousOnly
Wscript.Echo "Anonymous Password Sync: " & _
objItem.AnonymousPasswordSync
Wscript.Echo "Anonymous User Name: " & _
objItem.AnonymousUserName
Wscript.Echo "Anonymous User Password: " & _
objItem.AnonymousUserPass
For Each objMessage in objItem.BannerMessage
Wscript.Echo "Banner Message: " & objMessage
Next
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Cluster Enabled: " & objItem.ClusterEnabled
Wscript.Echo "Connection Timeout: " & _
objItem.ConnectionTimeout
Wscript.Echo "Default Logon Domain: " & _
objItem.DefaultLogonDomain
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Disable Socket Pooling: " & _
objItem.DisableSocketPooling
Wscript.Echo "Don't Log: " & objItem.DontLog
Wscript.Echo "Exit Message: " & objItem.ExitMessage
Wscript.Echo "FTP Directory Browse Show Long Date: " & _
objItem.FtpDirBrowseShowLongDate
Wscript.Echo "FTP Log in Utf8: " & objItem.FtpLogInUtf8
For Each objMessage in objItem.GreetingMessage
Wscript.Echo "Greeting Message: " & objMessage
Next
Wscript.Echo "Log Anonymous: " & objItem.LogAnonymous
Wscript.Echo "Log Ext File Bytes Received: " & _
objItem.LogExtFileBytesRecv
Wscript.Echo "Log Ext File Bytes Sent: " & _
objItem.LogExtFileBytesSent
Wscript.Echo "Log Ext File Client IP: " & _
objItem.LogExtFileClientIp
Wscript.Echo "Log Ext File Computer Name: " & _
objItem.LogExtFileComputerName
Wscript.Echo "Log Ext File Cookie: " & objItem.LogExtFileCookie
Wscript.Echo "Log Ext File Date: " & objItem.LogExtFileDate
Wscript.Echo "Log Ext File Flags: " & objItem.LogExtFileFlags
Wscript.Echo "Log Ext File Host: " & objItem.LogExtFileHost
Wscript.Echo "Log Ext File Http Status: " & _
objItem.LogExtFileHttpStatus
Wscript.Echo "Log Ext File Http SubStatus: " & _
objItem.LogExtFileHttpSubStatus
Wscript.Echo "Log Ext File Method: " & objItem.LogExtFileMethod
Wscript.Echo "Log Ext File Protocol Version: " & _
objItem.LogExtFileProtocolVersion
Wscript.Echo "Log Ext File Referer: " & objItem.LogExtFileReferer
Wscript.Echo "Log Ext File Server IP: " & _
objItem.LogExtFileServerIp
Wscript.Echo "Log Ext File Server Port: " & _
objItem.LogExtFileServerPort
Wscript.Echo "Log Ext File Site Name: " & _
objItem.LogExtFileSiteName
Wscript.Echo "Log Ext File Time: " & objItem.LogExtFileTime
Wscript.Echo "Log Ext File Time Taken: " & _
objItem.LogExtFileTimeTaken
Wscript.Echo "Log Ext File URI Query: " & _
objItem.LogExtFileUriQuery
Wscript.Echo "Log Ext File Uri Stem: " & objItem.LogExtFileUriStem
Wscript.Echo "Log Ext File User Agent: " & _
objItem.LogExtFileUserAgent
Wscript.Echo "Log Ext File User Name: " & objItem.LogExtFileUserName
Wscript.Echo "Log Ext File Win32 Status: " & _
objItem.LogExtFileWin32Status
Wscript.Echo "Log File Directory: " & objItem.LogFileDirectory
Wscript.Echo "Log File Local Time Rollover: " & _
objItem.LogFileLocaltimeRollover
Wscript.Echo "Log File Period: " & objItem.LogFilePeriod
Wscript.Echo "Log File Truncate Size: " & _
objItem.LogFileTruncateSize
Wscript.Echo "Log Non-Anonymous: " & objItem.LogNonAnonymous
Wscript.Echo "Log Odbc Data Source: " & objItem.LogOdbcDataSource
Wscript.Echo "Log Odbc Password: " & objItem.LogOdbcPassword
Wscript.Echo "Log Odbc Table Name: " & objItem.LogOdbcTableName
Wscript.Echo "Log Odbc User Name: " & objItem.LogOdbcUserName
Wscript.Echo "Log Plugin Clsid: " & objItem.LogPluginClsid
Wscript.Echo "Log Type: " & objItem.LogType
Wscript.Echo "Maximum Clients Message: " & _
objItem.MaxClientsMessage
Wscript.Echo "Maximum Connections: " & objItem.MaxConnections
Wscript.Echo "Maximum Endpoint Connections: " & _
objItem.MaxEndpointConnections
Wscript.Echo "MS-DOS Directory Output: " & objItem.MSDOSDirOutput
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Realm: " & objItem.Realm
Wscript.Echo "Server AutoStart: " & objItem.ServerAutoStart
Wscript.Echo "Server Command: " & objItem.ServerCommand
Wscript.Echo "Server Comment: " & objItem.ServerComment
Wscript.Echo "Server ID: " & objItem.ServerID
Wscript.Echo "Server Listen Backlog: " & _
objItem.ServerListenBacklog
Wscript.Echo "Server Listen Timeout: " & _
objItem.ServerListenTimeout
Wscript.Echo "Server Size: " & objItem.ServerSize
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "User Isolation Mode: " & objItem.UserIsolationMode
Wscript.Echo "Win32 Error: " & objItem.Win32Error
Next

aaarticlea/png;base64,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" alt="" />

2. WMI COM API C++代码

// wmi_getsysinfo.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include <iostream>
#include <comdef.h>
#include <Wbemidl.h> # pragma comment(lib, "wbemuuid.lib") using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hres; /*
Initialize COM.
由于用C++编写WMI应用是基于COM技术的,所以必须初始化COM库
*/
hres = CoInitializeEx(, COINIT_MULTITHREADED);
if (FAILED(hres))
{
cout << "Failed to initialize COM library. "
<< "Error code = 0x"
<< hex << hres << endl;
return ; // Program has failed.
} /*
Initialize
初始化COM库安全级别
*/
hres = CoInitializeSecurity(
NULL,
-, // COM negotiates service
NULL, // Authentication services
NULL, // Reserved
RPC_C_AUTHN_LEVEL_DEFAULT, // authentication
RPC_C_IMP_LEVEL_IMPERSONATE, // Impersonation
NULL, // Authentication info
EOAC_NONE, // Additional capabilities
NULL // Reserved
);
if (FAILED(hres))
{
cout << "Failed to initialize security. "
<< "Error code = 0x"
<< hex << hres << endl;
CoUninitialize();
return ; // Program has failed.
} // Obtain the initial locator to Windows Management
// on a particular host computer.
IWbemLocator *pLoc = ;
/*
连接到WMI命名空间
通过调用CoCreateInstance初始化WMI的定位器(IWbemLocator类型的实例)
*/
hres = CoCreateInstance(
CLSID_WbemLocator,
,
CLSCTX_INPROC_SERVER,
IID_IWbemLocator, (LPVOID *) &pLoc);
if (FAILED(hres))
{
cout << "Failed to create IWbemLocator object. "
<< "Error code = 0x"
<< hex << hres << endl;
CoUninitialize();
return ; // Program has failed.
} IWbemServices *pSvc = ; // Connect to the root\cimv2 namespace with the
// current user and obtain pointer pSvc
// to make IWbemServices calls.
/*
调用IWbemLocator::ConnectServer方法,通过这个定位器连接到WMI的命名空间,通过把一个IWbemServices的实例以参数形式传递给ConnectServer方法,就会创建这个服务
*/
hres = pLoc->ConnectServer(
_bstr_t(L"ROOT\\microsoftiisv2"), // WMI namespace
NULL, // User name
NULL, // User password
, // Locale
NULL, // Security flags
, // Authority
, // Context object
&pSvc // IWbemServices proxy
);
if (FAILED(hres))
{
cout << "Could not connect. Error code = 0x"
<< hex << hres << endl;
pLoc->Release();
CoUninitialize();
return ; // Program has failed.
} cout << "Connected to ROOT\\microsoftiisv2 WMI namespace" << endl; // Set the IWbemServices proxy so that impersonation
// of the user (client) occurs.
/*
设置WMI服务的安全级别
根据上一步得到的服务,设置相应的服务安全级别。通常来说,如果我们没有设置适当的安全属性,COM安全方案不允许一个进程去访问另一个进程,因此如果我们要访问一个外部进程的对象,那么我们应该设置适当的IWbemServices的安全级别。
*/
hres = CoSetProxyBlanket( pSvc, // the proxy to set
RPC_C_AUTHN_WINNT, // authentication service
RPC_C_AUTHZ_NONE, // authorization service
NULL, // Server principal name
RPC_C_AUTHN_LEVEL_CALL, // authentication level
RPC_C_IMP_LEVEL_IMPERSONATE, // impersonation level
NULL, // client identity
EOAC_NONE // proxy capabilities
);
if (FAILED(hres))
{
cout << "Could not set proxy blanket. Error code = 0x"
<< hex << hres << endl;
pSvc->Release();
pLoc->Release();
CoUninitialize();
return ; // Program has failed.
} //通过WQL使用WMI服务
IEnumWbemClassObject* pEnumerator = NULL;
hres = pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t("Select * From IIsFtpServerSetting"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator); if (FAILED(hres))
{
cout << "Query for processes failed. "
<< "Error code = 0x"
<< hex << hres << endl;
pSvc->Release();
pLoc->Release();
CoUninitialize();
return ; // Program has failed.
}
else
{
IWbemClassObject *pclsObj;
ULONG uReturn = ; while (pEnumerator)
{
hres = pEnumerator->Next(WBEM_INFINITE, , &pclsObj, &uReturn); if( == uReturn)
{
break;
} VARIANT vtProp; // Get the value of the Name property
hres = pclsObj->Get(L"AllowAnonymous", , &vtProp, , );
wcout << "Manufacturer Name : " << (bool)vtProp.boolVal << endl;
VariantClear(&vtProp);
} } // Cleanup
// ======== pSvc->Release();
pLoc->Release();
CoUninitialize(); return ;
}

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABDQAAACNCAIAAADHBr2DAAAd5ElEQVR4nO2dS47kOBJEueyDzEUqrzO3aOTNGujlbAbgdWIWORXNEOlG50c/6j0YCgqKcjopKeWWEZURvn59BQAAgMsQ//uf1+sV//ufP/717z/+9e+X5KdP2nPzMu9WlNWtOoozbHqUFVPPzpP2TrNACO2nnx93Hn3/+f3166t41PuH52Z7c9T7pf65ei4BcwIAAJdiY06Kz/JXVvH/USrxN/11fVDsk7d7olkpdURoiu9fgYk5IIRG9CqZk/cPQ485yTunLZgTAACAITzvnKS70md83ifvViwO8qOK7VZPEdOaRZ7eZsOZdnFDbDvXBCF0jF7D5sT/fgvmBAAAoJmqOdk816stVuPB9cfLtg0vw2PotDfdilhrKJYUIXSkXjM+1oU5AQAA2Ivqx7oQQmgZvV6v7z+/nUrNScdRmBMAAIBmMCcIoefo69dXk0aOwpwAAAA0gzlBCKE9hDkBAABoBnOCEEJ7CHMCAADQzNucIIQQmivMCQAAQBsRc4IQQvsIcwIAANBGxJwghNA+wpwAAAC0ETEnCCG0jzAnAAAAbUTMCUII7SPMCQAAQBsRc4IQQvsIcwIAANBGxJwghNA+wpwAAAC0EVc0J2c/7ns4fdEQQtN1J3Py919/v9X9RJkSZBZ9mVwnf4HO8CJTSC+GWZfWxPQuy2am75dWe7jYfQcwTlzOnNx0Ol+/vk7PASE0V7cxJ3mho58c1cp4/OE0K0gxjhXcKgRn5dNBNdWOvZ74rVjrbF1XTeM+qvjW5iTfLh4FcGuir5o/+wHawOnlyN2LmKud96vlM4vTLzl0gK5zX1uEr19fusopFoWiEppSJE10ONWieaR9b7odiDPhg9e5yQAXgzyhBK+ak6JVe8LKwHOIDnNS7XAd3SjVYhFzehoxeQ/nIot5tXymzwstrFuakw3Wb6z9dbz4YI8os/Jd1q+N9a/n9dCeSfXlk+7S821dB5Gwrlz98WfluVmWkfW0trvztJYxT6NpPavnJdSwwub5WKM7h9ARrKV2DgEwQqzVfHrv1eTM9mfi3X3SXYOhNkXM6QsYk3Lq9Eyumc/ceZ2eBtpVK5gTQfFAZ+Untq3I1iHOODqx4C5em6aWRpu4DsUcZsWffr78lXTT+Z21XR03fzlr3CLVcfM0nJH96zCSP8A48THmpLoOm87RNhWhZE42nZ0DbYqY0xcwXs8MXC2fufM6PQ20qxY3J8FR8YdaobNf8ap3VfvrSTmn5smzo+h3JrBJxrnOVn+RjHN9Wvun66bzGdnW474z3/U8FhdBjDsyhLge0r3O/gB7EE81J8FwBf7+/mzFsSHzFWLXZvWCYWOKw4kciqWqSKxjcZzymIFqJsUrTXewYup85o7lXEarT9P1jDl5gm5pTqzSxLqXqkWSs4ATMXWo1qLTE3MkH6v/9KLWOdnWdW5dhI5DppzfWdvVcYVJ6L4ANK3Xdl9wsbcvMsAs4tnvnITG+nuTvDPbIP2GTiA/dvNvMRN/Y1rEWIeETwuU51w8s31yvlPhX9LqadV9quZkfKzqPWKdESusdaY8ZxytpHuYk+CogXR1osuykWKxqYh09hf5V4vmET8wcR2qLSPxdzpfxVRHzu+s7bTFSmCPfASt17aIvJmUM+Zg/gCDxHZzkkfQLVbk/KjqgSKala0/SHU6sWQVRLSm/HWpqkf0tHSUU/p8Fa8lfz46giefiWOJ5RI9xdCbjWJ8zMkTdBtzEkrFWRNpTdNaDIlSXlSQxTihVGB55mVF7sjHM6lqZewZVyfZmtL0POeup3/bGtpTZHsKd8/6OPtbiCBN+YSW89sXH2APYtc7J6FUe4XPOizf8Eh3roay5uJZB89Ym5mKOP6B0iLGP1Z1duPlVPeZ6svH6jP4sa7qWNZ29WV+7Ht0T1aYkyfoTubkFlytPLpaPnfn3PU8ePSNE6P6B3gTB8xJ8FVyQVaxUVaH78Zi5s5srSRFYiIT8W/18GoRU5y4f6m7R88zaVrJ6q5QKuLFNenPZ+5Y1qTSE7E5PN+Ivosfc/IEYU5mcrUC7mr53J2z1pPzCHA1Yq85eR+eNlb75HGiwzDkjVZYPZdoVJDFtDertEn43Z5PQWeoixixRFZK1Zxbtbc52bRUz/6Uj3WJsdTtYaykNXfn9azPOFpJmBMAAIA24u+C/hUCepSq5VS+S19IulsxWkzsYrGPzmfuWMFnKsTeIA1PcV6nV89oV2FOAAAA2oiJOSk+XF/y/5yIxmIfcVSwS0Mrc2e2+Ygh+xyOc47FVEPL78t1ESMWR0zfvz7/LFSXOelYH925uHpN+UwcK1036wqvngj/KmFOniDMCQAAQBvxAuYkTabpWGe21ijprmiUntX08u2+5Iv/IT4YtbI1qH8NTzcn6bLrgLP+WpdnrM2yt87dk8xmXnogdHdhTgAAANqI7eYkPdZqLPYpxskj5O3FjWLwPNu7qPrOSbE9X430pVj/vc1J8UpL91pzycOOfKyrdax3o756rV3FgE1nHC0mzAkoTv907x4CABgkdr1zsoeCYUiCYU5iqfI7LNudihhrTTYLIto3HSx1mBPPtWSdl2I+zlSnfKxLjCUW7d3onLvu7DnjaDHdyZws8DeLDs5f/xFYz/dOvBxxuhMbDNJHbk46JuX5EpI+mhbZ+t4Pvg8EYG/iZczJFN0r27yIOW6hht85OXhlrpPP3HmdngbaVbcxJ+K73s6iL4em77nriC+GK27rAvdtTja7BpO8jjmx1iHIqe1kTlovcn3u8u0pSQJAwJxcRpiTu+Qzd16np4F21T3MyQWrq+4c+n4p3k2HIUnbX0ao6XkehmVOgq99V6abk+L7JLc7ZQAXJNrm5OyHZienlyP3KGJCOG4sgNWxfOYtzUmKKL/87VYcZ3xrlxXHWXQ2xdehNtsTzUmxfXB98kYr547z6DEns/LX8xIJiHbRZ7NWego6cp78AfeFmEhfHNEOMIg2J6eX7GgniXdOEEJNEm+C3ducWEXe3tv5y+44Fk3xq3E29ZmuBdN2jznRAYsH+ov1Yp06cu5eyee1qsV3cbJir3Ne1fPYepFslkWvv79S91xvxT5WPs5tz9CD9y/AIBFz8khhThCaJcyJa7taxFtDbxp1nNa60zNfTxy/AUjbnebEil8MKxKwwjqLXStU2piaEzG0f7K6veM8dpgHsT7Vl574VhDrOi/mk/cXyThvVU+Q4rgAg0TMySOFOUFollYzJ9UidWQ7pVo0O/t7xmqN3xGnWrzm7X5zUoxTDCsS0PnrSTnjH2xOqvl0O4dNf39M/xDd91F+GTivHD30xPsXYJCIOXmkMCcIzdLtzUkYKFb22J6Vg6C7ILPiWNt6Xk3m5N3HKlKtUK3F+siat5qTagIj8/L3t6heJ9WXnuCt25uURu6vkTgd6wngJGJOHinMCUKztII5CbKecxZ5rcWiaE93efpvSnZ/3enPpxrBmrI46pU1Vsf1nI48mv/k6l3V9txuWZOqxu+eV74sOoigeFE5198f3Iq5GbpjXE97ddyO+ACDRMzJI4U5QWiWFjEncDzrfZ/6ejNaEuwEXJyIOXmkMCcIzRLmBDpZr5Rfb0brwdsdcH0i5uSRwpwgNEuYE+hkvVJ+vRkBwPFEzMkjhTlBaJYwJ9DJeqX8ejMCgOOJmJNHCnOC0CxhTqCT9Ur59WYEAMcTMSePFOYEoVnCnEAn65Xy680IAI4nYk4eKcwJQrOEOYFO1ivl15sRABxPxJw8UpgThGbp9uZEfH/CRNb7A0Hj63ZwKX/A4mNOAGCceFVz8pMb/6b/ThTmBKFZWsScpN+8Nr2Ktb5Iri/UpKRGuZc5OcYZYk4AYJy4vzn5/vO7qs1Y4TOZYFfS6a5iN88KeMbq7imSP1GYE4RmaR1zst8XIMyKean3XorfVt4UYaSUb/0mcswJANyFeIg5+fr1JVQdK/zOLRj2I9/rb8yj5UuUHiVWstpNJK/bRcJ9wpwgNEsrm5NiXWvZGFGpW5WxVTd7xi2OVUzeysdqFAmLJFvX7e+//n4ZoTz09Xd27gZzAgDjxKPMiXg65mMF+/2Q0Ogrgs9ReMYSWeUJOPtvDnTOdFyYE4RmaRFzEn5/YqpYxfrNgLWti2lPnNbc0pfaRej+FsLU6dze/75q+U8EcwIAdyGeak5CCK+SOXkrZOX7O23Rs9gu+qRDFA90jmWN6E/YSl4k0yfMCUKztI45+aHqK1q385ebdhG/2F80et4MEY7C8jA6GWsK1ryK5qTq3wbBnADAXYjnmZOfBF72OyebPENWqee7Yqm+19PPY+ZB4qd1EXGKyYtu1eR3KqcwJwjN0rLmZMSQjLzjMd2ceIJUd+nOlqtpfefET6uTwZwAwF2IB5qTEMI/T8TfvOQ7J7HlP5wUZxfs0r86YrXdSknnLOYVHAZmijAnCM0S5mRHczKSW+u4Vn+L7tyEOfEngDkBgFWJx5qTEMLr05m83P/nJEhzYrUE270UsxXdPGO9D7FWW8/L6jNdmBOEZmlZcxI+K+Bq8a37C59gha0eMj5uMfkme9C3biExJx1DN5EG39uiYE4AYJw4yZzovxScmpM376ejHivMMCfpv+JAHS3YrqMY2Zm5yCrv4/m7zK6/3RzCrFAILSn/D8Dvu5uTac8TaGS9Un69GQHA8Uw0J9bDL308v8dNO+Rjhdo7J5vG4q7ccuRz3/QJDnNi7S3mZoVtNSfpSZlUkoR6H4CngjmBI1ivlF9vRgBwPHPNiefxHLKyWIwVjMI9ZAbAX98L5Z2D7YKqrsPK0JqFCN40C4/4WBdCQpgTOIL1Svn1ZgQAxxMPNyc5+VhpenljvmvTTRxVXAHdeRNWxLG2o21RrImICU4R5gQhIcwJHMF6pfx6MwKA44mHmJPq4U1jLabiScn7zB0Uc4KQEOYEjuC1ogAABon7mxPnMzI9JFA67yzMCUJCmBMAAIBziPubkz6F7K9s8e9EYU4QEsKcAAAAnEO8qjlBuwpzgpAQ5gQAAOAcIubkkcKcICSEOQEAADiHiDl5pDAnCAlhTgAAAM4hYk4eKcwJQkKYEwAAgHOImJNHCnOCkBDmBAAA4Bwi5uSRwpwgJIQ5AQAAOIeIOXmkMCcICWFOAAAAziEm5gQ9SqfXfwhdVpgTAACAc4j2OyRW+/izHCGErizMCQAAwDnE65mT8PuX+p7kiweKmLpnsV0PVNzrTNiZgD//C6pjNTyLMLKYCFWFOQEAADiHeJI5ydNId202rEYd0wqr4/y0i1BWB512bDRdIr5ehKupuhp6TaqhOuIgVBXmBAAA4BziBd45CdKciMw9QTaNIlTxkGpknYm1XU3VszJW//Tf6hD5+vSdRM8URErW+SqeuOIcPXEQcgpzAgAAcA7xPHMS5DsJ0ahlg1F9FjtXh6425mm8cyvmbO3aZOgZdxOqugjRNicdJ2WWnKuhz0g+L2s9m84sQpYwJwAAAOcQT33nJJTK6OCo8oPtW0JWiW76x6zo3xy+2VuMHzKfkG+I7WIy1vqIQcV6Wn08Z2SinKvhn76enY6z0xzResKcAAAAnEM8+2Ndob3K90TT7WII3ZI3+tOu5pYPFErVuV6N9MzmcdIOxeGsA9ME0sZiKGvlxWqI6zMf3epWjYOQU5gTAACAc4iXMSdR1v152sVQVreQlcLV0Yst0VEi69X2rEA+d5F2MZo1XzGK3sj/1WmIk1JcDR3KyiE/ypMSQlVhTgAAAM4hXuljXeJlSIrOUCpJi40d2/n6BKOMLu51jmX11x3yjeqSFvuLgHojX+fiyneshidIflL04iPUrSeak7//+vut9kdJmBhkFn2ZXCd/gc7wIlNIL4ZZl9bE9C7LZqbvl1Z7uNh9BzBOvMZ/iLfaQ1YZp41pnyDr1GBUtNa2FcdzyGB8TzRxSHE1xAq3blSn3LEaegX8S+GMg1BVjzMneaGjnxzVylgf7mFWkGIcK7hVCM7Kp4Nqqh17PfFbsdbZuq6axn1U8a3NSb5dPArg1sTzvuekuB19JbgOWBwi1Kp2azidngjYF9+zq3pIPvc07XQ18vZNiydy69I5V6b1hHbEQaioZ5kTXeUUi0JRCU0pkiY6nGrRPNK+N90OxJnwwevcZICLQZ5QglfNSdGqPWFl4DnEs//PSao0q/hZ+1rJ58daHaLjE0o6H6sxbSnGtPKxxo2ZMcjnOLjUx8izGv65BOlt7rIm6BZ6tDnZYP3G2l/Hiw/2iDIr32X92lj/el4P7ZlUXz7pLj3f1nUQCevK1R9/Vp6bZRlZT2u7O09rGfM0mtazel5CDStsno81unMIHcFaaucQACPEK5kThBC6gjAnLooHOis/sW1Ftg5xxtGJBXfx2jS1NNrEdSjmMCv+9PPlr6Sbzu+s7eq4+ctZ4xapjpun4YzsX4eR/AHGiZgThBD6FObEi6eO14XOfsWr3lXtryflnJonz46i35nAJhnnOlv9RTLO9Wntn66bzmdkW4/7znzX81hcBDHuyBDiekj3OvsD7EHEnCCE0KcebU6s0sR6ilSLJGcBJ2LqUK1FpyfmSD5W/+lFrXOyrevcuggdh0w5v7O2q+MKk9B9AWhar+2+4GJvX2SAWUTMCUIIfepZ5iQ4aiBdneiybKRYbCoinf1F/tWiecQPTFyHastI/J3OVzHVkfM7azttsRLYIx9B67UtIm8m5Yw5mD/AIBFzghBCn3qcOQml4qyJtKZpLYZEKS8qyGKcUCqwPPOyInfk45lUtTL2jKuTbE1pep5z19O/bQ3tKbI9hbtnfZz9LUSQpnxCy/ntiw+wBxFzghBCn3qiObkFVyuPrpbP3Tl3PQ8efePEqP4B3kTMCUIIfQpzckWuVsBdLZ+7c9Z6ch4BrkbEnCCE0KcwJ3AhXksIAMBJxJwghNCnMCdwIRao7BeYAgAcRsScIITQpzAncCEWqOwXmAIAHEbEnCCE0KcwJ3AhFqjsF5gCABxGxJwghNCnMCdwIRao7BeYAgAcRsScIITQp55oThb4m0UH56//CGzf94EUD2mt7C91En+SaZqC50tIRpJxxrG+94PvAwHYm4g5QQihTz3OnIjvejuLvhyavueuI74YrrjtKXA3LZv+4c7m5J3JK1twkeFO5qT1ItfnLt+ekiQABMwJQghlepY5uWB11Z1D3y/Fu+k2JNWXaeN9PxOVmpNi+ynJOBOompPi+yRXuH0A7k7EnCCE0KcebU5SRPnlb7fiOONbu6w4zqKzKb4OtdmeaE5+2ouVfff65I1WMoPnMQ37MjrvMW7xpGzwXyf5yzx/z3m04h92X4iJ9MUR7QCDRMwJQgh9CnMSguMzSztt5y+741g0xa/G2dRnuha0chAjbj4TlQYsHugv1ot16txz+qOmd048F2RHPs7R826bZdHr76/UPddbsY+Vj3PbM/Tg/QswSMScIITQpzAnIexTpDoLGlEw6Titdadnvp44fgNg5SBGfPmK1I7I6Uo2zcUazuq/hznpyKc6dLGnWJ/qS098K4h1nRfzyfuLZJy3qidIcVyAQSLmBCGEPvVoc1ItUke2U6pFs7O/Z6zW+B1xqsVrd1H7MuIUwzZF7lsHEd/atZM56c7HSfVeGBmi+z7KLwM9or5Cmu53HRZgFhFzghBCn3qWOQkDxcoe27NyEHQXZFYca9szr+qIr88+VpFqhWot1vc4j5Y5qSYwMi9/f4vqdVJ96Qneur1JaeS8jMTpWE8AJxFzghBCn3qcOQmynnMWea3FomhPd3n6b0p2f93pz6cawZry+LjF/02+acnjWO2eQVvPVzV+/gfHqnG655Uviw4iKF5UzvX3B7dibobuGNfTXh23Iz7AIBFzghBCn3qiOYHLct8/JfxmgSmsBHYCLk7EnCCE0KcwJ3AhFqjsF5jCMvB2B1yfiDlBCKFPYU7gQixQ2S8wBQA4jIg5aa9aEDpRnhvt3Hr3mlj+YfwH2jfmBHZlgcp+gSkAwGFEzEmjfqoNhE6R88Z8yM3Yets29fevIeYE9mWByn6BKQDAYYg6xmoff5bfWtevNmBhnDemp8+jhDmxwJzcgAUq+wWmAACHIeoYq73vWa5zsA7RAU+sck4uKOCpOG9MT59HCXNigTm5AQtU9gtMAQAOQ9QxVnvfszwkXsLajraHKQas9snjV9udhcjJBQU8FeeN6enzKGFOLNQ3xM9lvT8QdMy6hRmVfev3e0wHcwIAfkQdY7X3PcuD25zoY/1HvdvfM823u6uc12v7s/bd8v9H/mej9VIVDUmH4hCbPuLATVZWo4jTMZYnsrWGziV6IM4b09PHuqfy+2KzS/S8rDAnFv+Yk/Sb16bXr9YXyfWFmpTUKHcxJ4flKcCcAIAfUcdY7X3Pcp1D2q14bB5KHxINC+QZzlOI/PNoNyr48LvUtnblx26LhlLkUHIsm27F+PnhVp9i8MGxrFCeDUhx3piePuKWCdKNhE+rX7yR/ffmMcKcWHyYk/1+uT4r5qXeeyl+W/keAxUr+5FvIsecAMCVEXWM1d73LA+T3jkJRp3UdFTT6LraCG5zYvUxi4YQQs1dFF8W41v55H32GKu6LJ4WeO3/sa7ijwjrptP34HtvGqrpXpsozIlFxZwU7YplY0SlbhXElh3yjFscyyrERai8USQskmxdt2o+b2aZkxM/2YU5AQA/oo6x2vue5WH2/zmp1jfFUfLh+qqcfx7t0py8Su85vCelKgaHPbA65Dmkuzaj532co3vG6otcbIEfnDemp4++EUJiPELJjYi7eL+7r1uYE4uP/3Mi6nK/GbC2dVnsidOaWyjV5R39LXKz4cxtk4bI54dZH+vy+67pYE4AwI+oY6z2vme5zqGjXtFx4mXMSf4y2G+q6D75IXlYKwfrWJFYdQrVsdKz44xstcAPzhvT06d4v4SaD2mKNv3u6xbmxKLyH+I73qnIt/OXm3YRv9hfNFrvSISS8RDvYOg0NmNZU7Dm5c/nhynmxD+vPcCcAIAfUcdY7X3P8jDwsa48VN5Nt4SzzUlxV94n7fzGGqs4enqU59hiH8/oHWP5I7/AwHljevpY90vIbMnmVir+GNF3n/Oe3U+YEwtlTkYMicecOI+1DqnG8fT379Kdrerfb07EQFM+1uVZ3v3AnACAH1HHWO19z/LgMCehVqy8c8576pZwkjkJRulfPFbEsfoXI4hjPS3Ol548rZk6X4r1eSzOG9PTx3+/6FupeBPtdPd1C3NicXVzMpJb67hWf4vu3IQ58b9z0mpOrJfHgDkBAD+ijrHaO57lwS5KrG2tvGfx2E1wkYY/AfGnhP//sE9e5h3Sl5sDRYTNgXkofbg+qi9O31j5Ua/M2BRXFX5w3piePvpmSTesXfleT7SO+31cmBML78e6gq+YFv2FT7DCVg8ZH7eYvLN2H1k3/3zDjMo+jX+8MwmYEwBoQdQxVnvHszyUipI0h9ZKxZpLdehqu7MQObmggKfivDE9ffIbanN7Rtuc6D7FQ3SfvYU5seAb4m/AApX9AlMAgMMQdYzVPv4sP1jFWQ9WOTOLg4yJwWExnDemp09+m0TDSATDVIg+MfsdhBVEH65bWm/bpv7+NcScwL4sUNkvMAUAOAxRx1jt48/yW+v61QYsjPPG9PTZ6P0DIW8Mpbc6Y2b7izGtsU65bZv6+9cQcwL7skBlv8AUAOAwRB1jtY8/y2+t61cbsDDOG9PT5xgVf+acdds29fevIeYE9mWByn6BKQDAYYg6xmoff5bfWtevNmBhnDemp8+jhDmxwJzcgAUq+wWmAACHIeoYq338WX5rXb/agIVx3piePo8S5sQCc3IDXksIAMCJqGOs9vFn+a31/ef36TmgJ8tzoz3kZvQLc2KBOQEAgGsh6hirffxZfmudXEoAYE7ahTmxwJwAAMC1EHWM1T7+LEcI7arX6/X95zdKhTkpgjkBAIBrETEnCC2nr19fKJd/ATEnAAAA5xAxJwgh9CnMCQAAwDlEzAlCCH0KcwIAAHAOEXOCEEKfwpwAAACcQ8ScIITQpzAnAAAA5xAxJwgh9CnMCQAAwDlEzAlCCH0KcwIAAHAOEXOCEEKfwpwAAACcQ8SctFctCJ2oh9xop9/m/nX+xpwAAADMImJO2quW079LDj1WrTcm6r7N/euMOQEAAJhGxJy0Vy0XrzZgYVpvTNR9m/vXGXMCAAAwjXiGOfkZN29Ms8rzvIiuX23AwrTemKj7Nvev863Nyf8AG0BubYamC04AAAAASUVORK5CYII=" alt="" />

在开关FTP的匿名登录之后,程序的运行结果也相应发生了变化

我们已经明白了如何通过WMI"获取"IIS FTP的匿名登录设置信息,现在要继续学习如何去"设置改变"这个开关值

3. 遗留的问题

. WMI Scripts代码可以在IIS 7.5 FTP工作正常
. 从WMI的整体架构来看,理论上应该是WMI Scripts可以实现的功能,WMI COM API C++代码也应该可以实现
. 但是实际的实验结果是:枚举IIS 7.5 FTP配置信息的代码只能工作在IIS 6下,在IIS 7.5下无法工作得到结果,难道是因为在IIS 7.5下不支持WMI的那套机制了?(我不敢乱作猜测,很有可能是我不知道)
. 从IIS 6到IIS 7.5是一个比较大的跨越,不论是从软件架构、功能、还是API接口上来看,因此我们在针对IIS进行主机防御和修复工作的过程中,需要针对IIS 7.5的情况单独作研究

Relevant Link:

http://msdn.microsoft.com/en-us/library/ms525041(v=vs.90).aspx
http://msdn.microsoft.com/en-us/library/ms525885(v=vs.90).aspx
http://technet.microsoft.com/en-us/library/cc772200(v=ws.10).aspx
http://forums.iis.net/t/1173524.aspx
http://technet.microsoft.com/en-us/library/cc731244(v=ws.10).aspx
http://blogs.msdn.com/b/robert_mcmurray/archive/2012/10/03/programmatically-starting-and-stopping-ftp-sites-in-iis-7-and-iis-8.aspx
http://www.iis.net/downloads/community/2007/01/iis7-native-api-(cplusplus)-starter-kit
http://technet.microsoft.com/en-us/library/cc732976(v=ws.10).aspx

5. Microsoft.Web.Administration

IIS 7.0 and "above"(IIS 7.5) provide a comprehensive managed-code management application programming interface (API) that allows complete manipulation of the XML configuration files and convenience access to server objects.
IIS includes Microsoft.Web.Administration, which is a new a management API for the web server that enables editing configuration through complete manipulation of the XML configuration files. It also provides convenience objects to manage the server, its properties and state. The configuration editing aspect of the API provides programmatic access to read and write configuration properties in the IIS configuration file hierarchy and specific configuration files. The object management aspect of this API provides a series of top-level administration objects for direct management of the server

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <ahadmin.h>
#include <crtdbg.h>
#include <string> using namespace std; void PrintPropertiesOfElement(IAppHostElement *pElement)
{
HRESULT hr = S_OK; IAppHostPropertyCollection *pProperties = NULL;
IAppHostProperty *pProperty = NULL; hr = pElement->get_Properties(&pProperties); DWORD properties_count = ;
hr = pProperties->get_Count(&properties_count); VARIANT vtIndex;
vtIndex.vt = VT_INT;
for(DWORD i=; i<properties_count; ++i)
{
vtIndex.intVal = i;
hr = pProperties->get_Item(vtIndex, &pProperty); BSTR strName;
BSTR strValue;
hr = pProperty->get_Name(&strName);
hr = pProperty->get_StringValue(&strValue);
_tprintf(_T("name : %s, value: %s\n"), strName, strValue);
}
} void PrintElementsOfCollection(IAppHostChildElementCollection *pCollection)
{
HRESULT hr = S_OK; IAppHostElement *pElement = NULL; DWORD elements_count = ;
hr = pCollection->get_Count(&elements_count); VARIANT vtIndex;
vtIndex.vt = VT_INT;
for(DWORD i=; i<elements_count; ++i)
{
vtIndex.intVal = i;
hr = pCollection->get_Item(vtIndex, &pElement); BSTR strName;
hr = pElement->get_Name(&strName);
_tprintf(_T("element : %s\n"), strName);
}
} void PrintElementsOfCollection(IAppHostElementCollection *pCollection)
{
HRESULT hr = S_OK; IAppHostElement *pElement = NULL; DWORD elements_count = ;
hr = pCollection->get_Count(&elements_count); VARIANT vtIndex;
vtIndex.vt = VT_INT;
for(DWORD i=; i<elements_count; ++i)
{
vtIndex.intVal = i;
hr = pCollection->get_Item(vtIndex, &pElement); BSTR strName;
hr = pElement->get_Name(&strName);
_tprintf(_T("element : %s\n"), strName); //PrintPropertiesOfElement(pElement);
}
} int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr = S_OK; IAppHostWritableAdminManager * pWMgr = NULL;
DWORD dwElementCount = ;
USHORT i; IAppHostElement *pAdminSection = NULL;
IAppHostElement *ServerElement = NULL;
IAppHostElementCollection *pAdminSectionCollection = NULL;
IAppHostChildElementCollection *pChildElements = NULL;
IAppHostElement *pElement = NULL;
IAppHostPropertyCollection * pElemProps = NULL;
IAppHostProperty * pElemProp = NULL; BSTR bstrConfigCommitPath = SysAllocString(L"MACHINE/WEBROOT/APPHOST");
BSTR bstrSectionName = SysAllocString(L"system.applicationHost/sites");
BSTR bstrPropertyName_ftpserver = SysAllocString( L"ftpServer" );
BSTR bstrPropertyName_security = SysAllocString( L"security" );
BSTR bstrPropertyName_authentication = SysAllocString( L"authentication" );
BSTR bstrPropertyName_anonymousAuthentication = SysAllocString( L"anonymousAuthentication" );
BSTR bstrPropertyName_enabled = SysAllocString( L"enabled" ); VARIANT vtPropertyName;
VARIANT vtValue; // Initialize
hr = CoInitializeEx( NULL, COINIT_MULTITHREADED ); // Create WritableAdminManager object
hr = CoCreateInstance( __uuidof( AppHostWritableAdminManager ), NULL, CLSCTX_INPROC_SERVER, __uuidof( IAppHostWritableAdminManager ), (void**) &pWMgr ); //"MACHINE/WEBROOT/APPHOST/Default Web Site"
pWMgr->put_CommitPath ( bstrConfigCommitPath ); //Gets an IIS 7 configuration section that has the requested name and configuration path.
hr = pWMgr->GetAdminSection(bstrSectionName, bstrConfigCommitPath, &pAdminSection);
//Represents a collection of elements that belongs to a collection.
hr = pAdminSection->get_Collection(&pAdminSectionCollection); //foreach the ElementCollection
hr = pAdminSectionCollection->get_Count( &dwElementCount );
for ( i = ; i < dwElementCount; i++ )
{
//get the item from the collection
VARIANT vtItemIndex;
vtItemIndex.vt = VT_I2;
vtItemIndex.iVal = i;
hr = pAdminSectionCollection->get_Item( vtItemIndex, &pElement ); //get the child elements from the item
hr = pElement->get_ChildElements(&pChildElements);
//get the ftpServer item from the child elements
vtPropertyName.vt = VT_BSTR;
vtPropertyName.bstrVal = bstrPropertyName_ftpserver;
hr = pChildElements->get_Item( vtPropertyName, &ServerElement ); //get the child elements from the ftpServer element
hr = ServerElement->get_ChildElements(&pChildElements);
vtPropertyName.vt = VT_BSTR;
vtPropertyName.bstrVal = bstrPropertyName_security;
hr = pChildElements->get_Item( vtPropertyName, &ServerElement ); //get the child elements from the security element
hr = ServerElement->get_ChildElements(&pChildElements);
vtPropertyName.vt = VT_BSTR;
vtPropertyName.bstrVal = bstrPropertyName_authentication;
hr = pChildElements->get_Item( vtPropertyName, &ServerElement ); //get the child elements from the authentication element
hr = ServerElement->get_ChildElements(&pChildElements);
vtPropertyName.vt = VT_BSTR;
vtPropertyName.bstrVal = bstrPropertyName_anonymousAuthentication;
hr = pChildElements->get_Item( vtPropertyName, &ServerElement ); //get the propertied from the authentication element
hr = ServerElement->get_Properties( &pElemProps );
//get the item from authentication properties
vtPropertyName.vt = VT_BSTR;
vtPropertyName.bstrVal = bstrPropertyName_enabled;
hr = pElemProps->get_Item( vtPropertyName, &pElemProp );
//set value from the item
vtValue.vt = VT_BOOL;
vtValue.boolVal = VARIANT_FALSE;
hr = pElemProp->put_Value( vtValue ); printf("anonymous switch: %s\n", vtValue.boolVal ? "enableed" : "disabled");
//PrintElementsOfCollection(ServerElement);
} // Commit the changes to the configuration system
pWMgr->CommitChanges ( );
return ;
}

代码工作的很好,实现了禁用IIS7/7.5 FTP匿名登录的效果

aaarticlea/png;base64,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" alt="" />

Relevant Link:

http://*.com/questions/20559426/iis-client-certificate-mapping-authentication
http://www.iis.net/learn/manage/scripting/how-to-use-microsoftwebadministration
http://www.codeproject.com/Articles/440548/IIS-security-settings-and-different-permission-usi

10. IIS WEBDAV匿名访问的自动化修复

需要明白的是,WEBDAV是一种扩展的HTTP协议,WEBDAV在IIS中本质上也是一种网站的形式存在的,而WEBDAV所共享出的文件夹就是这个网站的根目录

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABAgAAADiCAIAAABMa2K6AAAgAElEQVR4nO29P2jryr7+rTLFW7h0cYtrOMUN/IptOMU2rCaGU5zALlZgF8uwi0XYRTCrCGYXwaQJwkUQKYJIEYSLgFIE5CIgFwG5CShFQCkC4yKgFClUpFCxChWrmLeQoyj6MxrbsmVHz8MHIY9Go9FIHn8fjSQLlE/ikciZM5JZEAR2IbWthnAiVfZ26bjjDrdrWw067tCHNn1oawdNq9+kD2131HJHrbTNBZuIzyRmy1wrnDNe1Azl8NRw5vpMK/Jo+VMf8UhsbjXnLBOCIAiCIAhad80bZSYqzUWkpde2Gu5w27zsCCeScCLVthq+MehsNZTvde2g6Q63tYPk4FUIKTGdkS2eKKQrXnh4Jp6YuKHEj/FiE1MY9ZlKMAYQBEEQBEFQXLzx5bQjBmkkV+Lrbm2roXyv+8ags9Wg4447atW2GpRS5Xtd+V6Xv6eOGKyaGKMBqyAYAwiCIAiCICiulQhYa1sN3xv4wwW+E1C+18MZCqzeVMocLihcMAYQBEEQBEFQXAsZMZhBta2Gj/9xvYYI1kswBhAEQRAEQVBcq3IZG1qaYAwgCIIgCIKguFZlxABammAMIAiCIAiCoLhyHTFwdOronkvMO8N5dvIsGcpPMAYQBEEQBEFQXPmNGDg6dXTqTjCGsjGUPZf4PoGOZTruGEOZVRWmgjzxtTh3AfIFYwBBEARBEATFlV9U7bsCR6aOPLEHYzlEx8e87KRWJT3EF9L/4QvGYFrBGEAQBEEQBEFxsaLq6f6OwHlzBT7jDh3Lb8MIxHMJdQl1idVPjUEThwWCvwyjKf/wlct/fpVKMAYQBEEQBEFQXBnGYIp03xi8jQzQsUzfzEAInfES0vA/BydO09Zi7AIUF4wBBEEQBEEQFFd+xsD3A5PHDCY24G3+7dkDR+5+yxgxSLxrKDLDuLMIyhSMAQRBEARBEBRXbsbAHbXeHz4O31MUPHXgyHTcgTEoXDAGEARBEARBUFzZxiB+Z7+fHpm6w+0EP/ARd9RiG4PMW4kyHzmAMgVjAEEQBEEQBMWV34gBjzEYbmeOGETmeYYRKMYNplGiMQg+AgDAPOBCAwRB0PoqV2Mwzs0YMBYljhLAGPCLpBiDousFQdDaCyOQEARBa62ljhhoB82dr6y3ErEXxc0AbiWaQQxjUPi1RgDAWgNjAEEQtNbK7X8M3FEr7bkCd9Sy+k0qCOViVUWYxoBx0AEAgAGMAQRB0Lort/g1MAa+E3CH29pBU/le735r+qxyrJy/VnhnYQwAAIsAxgCCIGjdxRu/iim3FQUKm4HOVmNiBj5sanVj5fy1wjsLYwBAeZiqc2huNedZC8YAgiBo3bXE+HWFY+X8tcI7u77GIPPm5nC2+IqF1x+A5UO5nx0Sj8SwMZhhLRgDCIKgdVduIwbZK3LEyvrIkAeG1hcb+63Gfks4keSBkZZ5oY/Qzbaz74IxWABp8X2aMYjPAFA2aKyrDL+zAcYAgiAICmuFRgy0vigPDPPu3RsIJ5LQS/UGMAazKV9jEC5n2qUzbystQAlni8/AHoASQj92lWE/EPEGYooxiFuIcIoIYwBBEPSJtCojBo39ltYXzTvDeXacZ0fri+L+tm8MhBOptdeJrwJjMJvyNQZi1vX43I0Bu2Seg1t4rAbA0qBzGwP+tWAMIAiC1l0rMWLg3zgUjBiYd4Z/T5HQk4SeVNtq1LYa8pkcWQvGYDatuzFgh/vhj/EZAMoGTekqp72ViOcGJBgDCIKgdddKjBgIPamx3xL3t7W+6CMPAmMg+sYgPmjAH+XHf8yCdBgDMckYpIXdYtLdQYnZ0tLT4vi0QhgFpsX9aW6h8BANgOVDk7rKxC5RzHrGIHMtGAMIgqB1V/EjBoEB8McNGvutkCuYDBfUthqVvd3uQTe8Ir8xSPQAaW4BxkBMNwaJsfgiEhNhH+JINkb+wmM1AJYGzckYYMQAgiCoDCp+xKB70PU9QGO/JfTEyXMFvcnTBYszBmmJMAbBb3xazD2zW0gslj9kTzMA7GyMnAB8eih3VyniGQMIgqDSq/gRg8AY+E4g7A0qe7uBMRB6Uvvj3UTh4D48Tfz1SrzWBWMwmzGIRB78xiDTLbBDHJ7IJrGSMAagtNC5RwzwViIIgqDyaEkjBuKRSAXhfT40lQeG8HU38AZhJyD0JOHrbmVvt7K3O5Ux4JmBMZjBGCSm8+RMzMwI5ePETUVaCTAGAATQ/J4xSHPjcWPAuS4AAIBVo/gRA0qp8HU38AbBKEFgDISe1Nrr7Hxtpd1KFB8NiN8OC2MQiKznH5wFtWWczeGcmdkAKAM0j1uJONciGDGAIAhacy18xCC0qdRtdQ+6E2/wddc3BsHHwDDsfN3RLpXwWpH4nh3xwxgEWlNjAACYAUopf+awMZhhLYIRAwAAWHNWYsRAPpNbex3fAExmQpbAdwXt9NeVxo0BiQ0jMEYVEttlcTtbuAiMAQClobnVnIp51iIwBgAAsOasxIhBe6+jjwzzzqCOTl3dvDO0S0U+k32fYF522nudyHABxR+czSoCYwAAWADk451FAAAA1o6VGDGobTX0keE8SO6o5Y5a5LJu9ZtWv2leduxRW/7eig8XUBiDWQVjAABYBDAGAACw7qzEiEFtq9E96Ha/NTtbDeV73Ydc1rWDZmer0d7rRB479gVjMJvYxgAAAGZGhDEAAIB1ZlVGDHa+7ux83ekedLVLpXvQbe91ut+aviWI30Tka6E/b4vb2cJFYAwAAItBhDEAAIB1ZiVGDD6hVnhnCYwBAGAxiDAGAACwzuQavzo6dXTPJead4Tw70aUrHCvnrxXeWQJjAABYDCKMAQAArDP5jRg4uv9OIR9jKBtD2XOJ7xPoWKaCYAzl+WJaLgXvIQ3PBymRnInzaYmJJSQKxgAAUEJEGAMAAFhn8otffVfgyNSRJ/ZgLIfoUEGg4455mfB+oXwVWAKaFfonBPRJRTFSEu2Ev2CWqi9FBMYAALAYRBgDAABYZ/IdMZDfGXfoWH4bRiCeS6ggUJdY/Wbi2mnRfCRPaiDOUVQ8ps9cyhA7G4wBAKCEiDAGAACwzuQ6YjDxA52JK3DJBwSBurr8vZW4No8xYC8K5wli92CaZgMyrQh7u/EMkxkYg5JR9FGdRYU3Gvh8iDAGAACwzuQ3YuD7gcljBr4ZCOZ16upUEKgjd7/NPmLAXsRfFHvoIDEnexADIwYlZ02bzj/uAOSICGMAAADrTG7xqztqvT98HL6nKHjqQBDouJNmDGjSdX0ai9oT88TLobGxgsS14jcFpVUJIwY+Rded0o+VLLouExUejc0TwxXdeJSubQOCOCKMAQAArDPTjRgwpu5wO8EPhBEEd9RiGwP68dp8atidNaoQv5Uosm7EEkTWZedJ3FZ8xIDtXgoUmdUYZGZYDsF17hWpz4pUYwaCQ184K1INMD8ijAEAAKwz+Y0Y8BiD4fa0xiAtQGcbA8Y0sXDGkAJ7c3HLESxIq17hIjMZA/bS5Uceq1OfpdVEEITEeXbOzJYsvAFXqiZgTkQYAwAAWGdye8bAHW7Tcf7GIDFP4qLEcjgj+5k3l7gV4TM+Y8BeuvzIY3Xqs7SaMIxB2shVIEZLFt6AK1UTMCcijAEAAKwzSx0x0A6aO1+T30pEs67rJ35MK4Qm2QNG3J/4kbFi5rbKYwyCoDM+k5gnM1rljDzYtU2sxmx5MmG3THiamCezDrMF/fwtueg25CkksyZgXRBhDAAAYJ3Jb8Rg1Er0A+6o5Y5aVr9JBYExXJCXgug8MhNeGklPNBvhwIu9reStMFcsViQ/Y8AZsCZ6hkUYg6kCaIEZsvOT1m4ChzGYqgKZrcez1/GW5G/G+Y97Wn3SagLWDhHGAAAA1pl830r07gTc4bZ20FS+17vfmj7Uv8GmPKyqSE7GgB13BgFxZtQ4W+SRWFv++DuXmqS1TKQFpqoYAx5jMFXhYroxYCTyHPf4Kuz6pNUErB0ijAEAAKwzeY4YBGags9WYmAFo9UTyfsYg8yp1JC7MjJV5Io94fRhxM/vjPJXhbJl4IjtPWmnsXci8hJ/YkuwNzdNE/O2cVhOwduBQAgDAWrO6F7ahBYkswBgwPpJlGQN2HYL0xKEMEovX+clsGc6L6Ow6zxD3Z+4OwxiwN8RfmcR9568JWDtEjBgAAMA6k98/H0NrIrLEEYPERfFweYbII16fGQLomevA3zIkFhxH6hOfmZ+0/U1sSc5mSSuQvSEYg7IRfD0hCIKgdVSuIwaOTh3dc4l5ZzjPTp4lQ/mJLOZ1pYywLxL7LsgYJNaEP2ydmcyasOvDbwziBiPycSpTROYzBtNWm50NxuDTgEMJAABrTX4jBo5OHZ26E4yhbAxlzyW+T6BjmY47xlCeI6DllZD1WtKpln4+kbxfV5oZiSZGsTOfsjzGgB228ofOPLBrEq9DZIucFeAJ1jPTE1ty5mOamHm2+iCa/DTgUAIAwFqTX0zsuwL/LaW+PRjLITo+5mUnty2mKxLrZxqDsBZcteJFFvw/Bmnz4Sg5MWLmJNMYBJubLdqelsyazPsVZe4I23XwtCRnsyRuiKcNebIhmvw04FACAMBaw4qDGY8mJOR29A//YDDu0LH8NoxAPJdQl1CXWP3k20/j0Tk7Ja3OiVE+e8UymIGwyCKNQTwwzTQJ08JjDMJhK39UPRvsmqwyMxuD8HFkN29krbTMiCY/DTiUAACw1mQYgynSfWPwNjJAxzJ9MwMhdPl7xj8f06Q/Eo4solNG8+zMMAaLe8YgLYKc6sJ2BJ6HjxMXRfIkaob6ZLbMyjLbrURpzRvOxmjMxEWIJj8NOJQAALDW5GcMfD8wecxgYgPe5t+ePXBkxp8bRDxAODH+kRHNx8tJzJwY+qSV+ZlEFmMMlgbnrURLY3VqMltLFl6NlaoJmJM5D6V4JKalp1HUbrIrHF5aVCX5G3lFGjZegXh9ElMKb1IAPhO5GQN31Hp/+Dh8T1Hw1IEj03GHbQzi0Xn8Y2YEz28MMlM+pQiMQa6sTk1ma8nCq7FSNQFzMu2hzHyjduIqPMVOlT7DbqYVmOMezV9bzmok7kXhbZvYzoyZQmoLwOcj2xjEr6n76ZGpO9xO8AMfcUetvEYMGBI+3oOUNiAAY+CTaQyKru8aqPCv8WwEFguCplVa9D+PxwtfJ05bynNVO3yxOVJyWuH8NYxvglGfeH5GmYkZcoxf2bH+DG0bzzlnbRNHDNKaiOeALu5MAOATk9+IAY8xGG5nGgN2ImfsnnjHUdrgA24lyjQGhZ+mAIDVgRH9z2wMIiHgzBd62UEkZyGZhWcGrLNdqp9qPGHmyvMsYtckLWrPpbaZNmCGts39TADgE5OrMRivkDGIx/olifszRWAMAABzkLsxYMd57FhwmeFgvEo8ixhbjGdb3KDB/CMGC7UxiRVIPBkyZ+IfYQwA4GepIwbaQXPna/JbidLu9gkncj5gEDEDbJMQmSmDeSAwBgCAOcjRGKSFoTNfjY6HgzmG2mnBKKP+kTB3mbXlL2faEQP+PHO2MKNi0xqDqQwbAGUmt/8xcEettOcK3FHL6je1gyZjuGBBSjMDacaAlsAbEBgDAMAcLGfEYIY8ZCnGIH4BOzEGjedfZWOwgiMGiZXhGUNIa1vOXQCg5OQWBAfGwHcC7nBbO2gq3+vdb02fvDYEzSkCYwAAmINFGAN2Cv8AQjxPvsYg0QmkVZU9XBAvZ6FXtddxxIAxD2MAwILI0xgEZqCz1YAZWFkRGAMAwBwsecQgHNUVe1U7sUokKQZlTxNrsujgNa0pOC/VL6dteYxB5nmy/LYF4DPxyW+bgeIiMAYAgDnI3Rjwb5fxMTE9x+GCeCGM0DMyYhD+mFZUxP/kWFueoqZt2wUNbsSbMa1leOq8tLYF4DOxcGMgpjzBnCh9ZMgDQ+uLwonU2G8JJ5I8MBZXt3KKwBgAAOYgR2Mw7RXrzBGDIOdU6TO0AMNy8Fy6XkJtedqW0ZKM9IW2LWdp8WGEqcqBKwAgjRUaMdD6ojwwzLuJNxD3t4WeKPQkoScVXbVPJQJjAACYg6JGDKatJKeLWAVQW9QWgBVhVUYMGvst3xg4z47z7MgDI2wMhJNUb5D4QlKefzVe5tuHpt36QutGYAwAAHOwFsYAAADADKzEiEFjv9XYb4n72/6IgXln+N4gcAW1rUZlbzdx3cAPxI0B+8/Rlvxa0qm2vtD/YyYwBgCAOYAxAACAz0rxIwbdg67Qk3xjoPVFn3djcCLVtho+3YNufPWwB8jXGMSjc3YKfzmZK2LEAACwssAYAADAZ6X4EQPfGAg90R83aOy35IERGS4QemJlb7e114mvLmQpbbs8wXei00g0IZwFcm79cxiDzomgjYTOiaD8MsVnsfPYbt6KrfvtxlDcvfSqF27hZz8AYAZgDAAA4LOyKiMGQm9iAN6fK5ggOs+O5xLn2ekedLVLJbGQzMGBeKjNbww4Rx4yTUg4Q9pAAb+xmVlkKcag8ltFupwYg80/6uKDKr9K26ebjZONzeuG0HOqF67Q0wv/AgAApgXGAAAAPiurM2IwGR/44A1OJPPO8F2BT9wYpN2oE8+WmRJXYnSe6Dp4RgB4jMEMlZxWZPHGoPJbpfJbZefHhj4QKBXcV2Hnz43WYaf+fxuNo8rmoC30XGHfE3o6vAEAa0emMch8USYAAIDVZEkjBoxp96ArfN0NewP/iQKhJ1FHDyyBjzGUE7eSOUSQ+DEz7J5qxICzHMaAwOcxBpfi7t1u47pa36+LPYFSgVLBuhe0S6H2Q9y8loUTS+gR4Whjo7ez0dspPNABAPAjZhmD3HstCIIgaDkqfsSAUip83Q17g7AxoA9tYyj7rsBziXkZfcwgHmfzR/OcxoCdyBm7J45mpA0+rPutRJVLsXIpNkfV9nOjed7oHAr0l0CpoF0I9e9q88LbPHbqx9LmUaP2Y6d1pLWOtMJjHQAAJ5nGoPAaLq0dPgEz9PAAgE/MShiDyaDBG/7LSYWeRB/a1NGDcQPq6N1v2deiGCE45y097KUzG4N4rL+IuD9TZPHGoH3pCvv25lVz+67WOK219wXvVfB+CtKpIPVU98Wz7mzy4Jo3jn5ta5eWfGVK54b4j+5T+LcCAMAAxiDY2cLrMD8z9PAAgE/MShgD7VIJnjRo7XUqe5MBhMAY+EMHyvd6O/ZiovD9OTQ96E/MEP8YWZR4t084kee6ftwMsE1CZCZ380AWbwzqPVv44Vb67fp1pfJFqG4JlS/N+pdm80tTvzYopZ5H6S9qP3vWg0vGrj12ydi1Hl1zbOt3RB1Y6rmpnBqFfz0AAHEWZAzW7uq1bwzCner6Ttex/QsHLQY+JSthDNp7HWMov3sAR/etAn1ou6OWO2qZl53ut2Z7rxP/KwPG7UPxFJ4RgEUrzQykGQOadw3J4o1Bdc8S9mzhyNzo12rXm9WrndqVIV255q2jDWzzznFfPe8ndV3PfnYDnBfPffUmtfxF3VdPv7OlPin8SwIACFOqYQEAACgVK2EMalsN7VIxhrJvA8hlXfle9+d9V9DZarT3OmnvKoWmElnCMwbfTOG7JezbwqEtnIjCaXvjtN3tG+bINm5s/ZpoA6INCBm79Bd9h1L6i5Kxqw8d6YS0/jJbf1mdI7P1l1n49wQAEMA2BkX2bhAEQdB8WhVj0D3oyt9bna2G8r0eAa4gX5El3Eq0bwl/6MLflrBHhH1XODCE42r3XDVHjnFj++hD27ixrQeHjF3X9ewXT720fT+w89VsfTfbf1vtPRgDAFaOTGNQeA0BAADMxqoYg52vOztfd/y/MPPvI2rvdXzitw9B84gs3hhsn9rC76rw1RD+NIXvlvDDFPZr3XMlbAx8b+CPHuhD0j2wtv9rtL6Z7R9WZ9/q7FvtPaP9w+j2YAwAWC1gDAAA4LOyEsYAWqbI4o1B98oV/qMKX1Thv7rwhyH8aW383e6eyxNjMLKDqT9u4BuD9g+re2C194z2nt7eU9s/lPYPrdMzYAwAWCk4jcHGv9oAAADWCxiD0oks3hiQR6t+bAm/KcLvirClCv/RNv5uvY8YJBgDW+z5lkDt7KvdA00+M5W+1T3QS2gMBEFgfORf5Cs8H6SkFcIoEICAfI2B9yR6t9vuqOmNpcJ/EQEAoOTAGJROZFnGoHJobvxH3fiiCL8rlW9t8UT3Hz6Oow9t8cja/a6KR5p6QbQrW720lfPyGoM0sfNEColMw+nszRXeAmDFmdMY7FyQzUunMXSslw59aGoXO+LRttxrqSfb8AYAAFAsMAalE1mKMSCPVv3Yqh9btb/M+p/G9l+adGqGRwkiSCfW7t+qfGYqfSIe6Z1/VLFndI+M7nFuxmBdwl+eurEv/BNuYxD3G4XvPlh9ZjYGuwO7PqStByo/mfS5Q8fbnf1m52h3e1/xM1iD3cgqfq8Vn0+EnSFYmlkOD/ylZe5CZqedti7/jky7XXY5PNudqpETd3PaugEAcgHGoHQiyzIG5NFqHhg+mz9M8cwyR7Y+fOf99UQjWz612nuqdGx0DzTfFYg9o3ug52gMfGYLu5e29SBD5oAAZwYSsgdpNiDuHwBgMJsxCFyB8SDScdO4qrW/Nzsn4u4j7TzS+j/6xr/aWr8TWcvvteLz4RS24kWxs3HCWRr7IyORZ3VGaZmtwWhP/r1O2+JsdaNJBzqt8gCABQFjUDqRJRoDH98YqCeWcftuCeLGYPdvVTo2pGOje6h39tXOvtr5RyutMZg2G+eIASM/jAHgZDZjUBnS7XtKnjv0saGe1bb/XRN74mbfaV7T1gNt3dLGvhbOz+7HEn/PeBZF8jBWYcBTGk9vzCgtki1xXZ42SdvN+EYTC+HchakaNnHfGXVj7Gbmjs9wWHn2jrOcvCrGX8/VZ87Kr+lerxcwBqUTWbox8FFPLP3uwwPHH4zBmeU/edz+oXT2NenEUM6t7pEunuiLMwaJl9sZF+Aj85EZ9lppJbO3Ms+IAYmNFSRuPXHXAGAwgzFonlmbN9R+6dKHutmvtH7f8NOlvlY5o5uXdOeeNs69zqGYGAfE5+N54srMkFYgG87S4jVP2xd2gYwaJi7lSQw+Rmbi6zJ2Km0TmbuQ1g7spk7MzF59/iM7Z1F5VWzOTSyhMlNtiHFAV6d5ywyMQelECjUGCSMG18QY2cq52d5TxCNdPrP854+Vc6t7uFhjQGK303DmSQvE2TPxkjOrx58tzTmQmEmIZ4hXEvYAMJjFGPR0465LH5rOYGPz35v1P3e2v3e297rN752N7/bGP3TnmjbOvJ2/OuEffrYYUQIjJTITz8kDT2nx+bQ6M9blzBavG0+LMbaS1pKJq8yTM20pjbVqfC/SWmBm2Nua7QxZHPybWEJlptrQ/C28tD0qJzAGpRMpzhgY9x/eRBSeUfpme0+RT0310lYviHpBpFOze6iJpythDBhhdFo5iRfp+Y1BviMGJGYMOMsBIM4MxkDud+h4h44q9f82hd92hTNP6FPhkgp9Kpy5wqlTvfKEE2/7T1YEEJ6P54krLU+ktLRiGfCUFl+ati+cdWMXkthi0+4Fu27hzOy1GA3CVuK6/BvN3M3M/InZGClpVWKXwN5xnnqmNTi7qon1ZFSJZzczN8TTyLNtPa3YzOPOn7OcwBiUTqTAEYMhMUa2efv2t8eh1xOpF1b7hyKfmuoFkU5MsWd0DzTpWJfOF/uMwVQjBjwpDPOQlphZn8TqxQP9zDxpW5/KugAwgzEw7zr0tib1GsL/toSvivBNEf7QhK+q8FUV/lCELUnYkoQv3e1vyaFPfCYt2mAHDfE4IO2nkZ2Bp7R435tWycxOmydbYt0YTFsaI0/idhP3NK312IeSsV3OneWHf0OJO8iZmLZTU+0OZ5WmrfzMuznbuceTuLQ94m/8zw2MQelEijAG0onZPdK7h7p4pKuXljF6+5uztxED9dLqHqjdA1080ruHmnSsSSd691DrHKqLe11pfD6SOb5uZD5taTw9reR4JRNrmxb0kyQPwLMovsXEjwDEmdYYUKp4dw1vWBF+7wh/SMKexvPjFO+74j/hPD1eYrH8W+fJlrkoUuG0pfEMkfIzV+esErtwxiqM8tNaPp6fvZRRT3ZRuZDYMuxNJ+4OZ2JasTw7xVklRs7MI8VTefaGOGue1x7xn108+15aYAxKJ1KEMdD6xBjZ2oDIp6Z0bIhHunJuBaMHxo2tXVnikdY9VOUTTT7Tuwfa7ndl97vSPdZK9QdnmSMGUzmHNM8TLiFSWuEtAFafqY2BJ9NhbXd/R/giCv8YwinZfPvjgo1/tYUerd/QjT4VLmnzzw/PGMR/xYN0zngiLRqIFB7/aWQs4iwtbZ5nadqOJLZDYh6e0iJ1ZrRtYjZGM8657/GS43u9INI2xEhJ3B3OxLQ94tlTziplHgLOxMyjxlntqRpkhj3KrCd/YmmBMSidSFHGwL9raGTrQ1u9sPw3k6qX1sQYDCylr8tnevdAnViCA1XtG3K/dP98DMCKM7UxeN6lV/X6niL8IQs9Szi3hYEnXLjCmd1+oI1bKlx4lQEVtlJfSRTvx9g/6mkpkXR2gTQ9UOApjb/OlFIqCAAsAZ7TNTFPZGku353MLws7Ja227Bpy7nuZgTEonUgRxkDpm+ad8/5owch/RakpHunika70LfXC7Pyjtr7Ju9+V7pGqnOrqQFPHktTP+eFjAMCcTG0MRnXloLHxr7bwpSscmELfqY5od0w7j3TzlgoDujmkwn+jrmCeUCOSP/jIzsYJZ2nhj4mrfMgZitjiO8WoQ2Se0RpppTGyZe4RTQ8K41tkrMLfvIm7ADiJn2YrDg53IcAYlE6koIePpXNdGxLz1jFvneAtpcbIVi8t6cRo76ntPVU80tQLXbvSlVNDGSiqI6oDE8YAgJViamMwrKtHTX++9mdX2NeFC7cypBvXVDizhT2t9pdU+G9hsaxdxIP7s9EAACAASURBVAbWkfU6zcJxS+GVKRUwBqUTKcgYkEersy919iXtipCx59sD/+Yi48ZWL0z10tAGunqpK31dvdK1gaGdT1YpPBICAARMbQxum/bl7mT+vqseNaTjdutEax2rhf8ErgjrFbGBNQWnGeABxqB0IsUZA5/OvtT9R1MuLevBNe/90QNbv7bUS0290LQrXR8a+rUhHWutb7udH53CwyAAQJgZXlfqDRruZdM8a5hXrcJ/9lYQRGxgCeA0AzzAGJROpGhj4NPZl7onqnFjm/eueetoA0u70vUbXR8ack/d3e9goACA1WQGYwDYIGIDSwCnGeABxqB0IqthDIh/Z9E3pXuoakNi3tr6jSGfaO09afev3RlKK/xtD4CfwkNbMA+cxgDwgy8FWAI4zQAPMAalE1kZY+DjP0XQOZa6PXmeJwrQ5a0LOFLrDoxB7uBLAZYATjPAA4xB6URWzBjkBbq8dQFHat2BMcgdfCnAEsBpBniAMSidCIwBKBQcqXUnR2Ngjgx9oGkDTRto+kAzR0YuNVxQsYsDXwqwBHCaAR5gDEonAmMACgVHat2Z3xjoQ105l8WeKB52uwfd7uEE8agr9kT5VFIvFP1aM295A3rz1tAHmtpX5FNJPBLFo/cyu4dd8bAr9kTlXNaHeuGtl9xo+FKAxYPTDPAAY1A6ERgDUCg4UuvOPMbAuNHlU1k6FsUjUTzsdg/F9r6487fss/tD7Pwjij1R6onSsSgdS/KJpJzL6qWqXan6taZfa8aN7s+oF6p6ochnsnQiSceSdCxKx6LYE8WeKB1L6oXqI59I0okkHnbFI1E6FuVT2bhZOXuALwVYAjjNAA8wBqUTgTEAhYIjte7MbAy0K1U+laQTST6V2wdq59hQroh6bavXRBkQ9Zqo17ZyRTrHRvtAVfuqci7LJ5J8Ksmnsnwqy2eh6an8li7Jp5LSV9RLVRvoZEw8L9br/aJkbGsDTTmTpRNJPpW0K20RzTIzVBDmWR0AHnCaTd1isd7MvDP1a1290qZCv9bNOzPeaaxmaTAGpROBMQCFgiO17ogzGQPtSlXOZflM7h4ru4e6OrS1oa0MiHxJ5Is3LokyINrQ1m7s3UNDPtfMkREMEWgDTbtSJww0/VrTh7pxo/v3EVmPJNzReb8o/TWZBrIeiXqhymeyci5rV+oimmU2qCDMvC4AnOA0m4p4b2aMTOPGdF4cd0o5L45xYxgjcy1KgzEonQiMASgUHKl1ZwZjoF9r6oWiXqrtA6Xbt7SRLV8RqW+J55Z4ZnXfEM8s8dySLizliui3jnhhdQ5V89Zgo11prutRSukv6nnU++m57huvnut67k/P8yYOwf3paQNNvVT9xxhyb5YZ+2UBv8XQ4lXu02yqr3NiXKQNdPfVcV/dmXC0gb4WpZX6LCmnCIwBKBQcqXVnWmNgjgz/Mn/nSBEviXpjSxdEPLe6p1bnxGwff6BzYnZPfXtA1BtbuiSdnmremWloV5r7k1JKPY+6rue8eo7jOo5rv0xwHNd59ZzXN3tAqedR7Woy+JDjC4sixsAYGQyi/XK5IzZoSSr3aeb3TjxKi4vUK811Q/G063o/vUQ+ZHvLrH68gzFa2qvrvrre262QnuexQnm+0nj5WFqpz5JyisAY5BQEgBnv2sR9rqsK55ddnMoYPFj6UNevNbmvtU8t9cYW+1b3zOqcmu1jc7dn7vbMVmi669uDU6t7ZokXlnpjt88s5UK37sw4xlC3HZdS6v6kviWwX1z72SXPDhk71qNtPdpk7NjPvkPwRw8opdR2PP1a929GIg+59QkRY0D9G5liWPeWcfPRG5Q7YoOWpHKfZgm9U1YXR5OMgX/pwXFc76fXvmkl4nuDIKfjpIbyH/K8upRSvwTbJZGl05bGD4xB2UVgDPILAsAM4D7X1YT/yz6VMTBvDeNGN26M5g9dHTniBemcWe0Tc/fYbPXM1pEp9i33J/U82u1bO0dG68hs+fbgxOyeWeIFUUdO84du3ZnWfRTj1qJvrsB23izBk2ONHfOB+LcP2c+O9WiTZ8d+cW3HdV4n3sC4tfwHGPhfisrTLEFPyzYG3k/vgzcod8QGLUnlPs1m6OJo3Bi8Ro1BfEPv3uD1Q9CfEMq/fgjQvZ+e/qTtDluUUu+nxwrls0oLjzx82ERSeqS0Up8l5RSBMVhAEABNoXL/OC1NU53PCzQGI8O8NbqnunhFpMuQKzgyd46Mbt8KHg7W75ztQ2Pn0Ng5Mibe4NTsnlvSJZEGdvdEsx6sMPrQcD3qetR59ewXlzy7viXwXQF5ct6b4skx7wl5cog/dPDqeR71flF9qJu3Rl53E0WNwU2qMTBuDOPG0G+Md2+w9C+FP0DETll9rVqdV60+UZW7752hi6NMY+D+9PwgPqLdYcvzvN1hyw15g8xQ3n11ySvZvd7RxirbFfCURil1jyX3WKIhD+C7giAdxgCaiMAYLCAIgKZQuX+cliYy9w217JM/9ZsYKsS6N60703qwmnuaPLS7fat9au0emzu9qCuglOr3TvPA2D40tg+NnWDc4NTq9i1l5DR/RB8U1kemR6njerbjkWfX8l3Bo20+2sYdscZ2eB+tse17g8m4getRSvWRaT1Y/lhE7n2CcWPYr5429sy7rndbN042jZOq9yj63sBxHMdxEo1BcFvX4sRwBcKb5txEvJxcig1rqlZitGpeDb7qroCWve+doYujicbgZYLrervXO/EN7V7vBLiuN8mcFsq/leb99LSx2rra1p+0YC0/nfoDCC+hTWeVRil1e6IPpdTzvIkrCCWmlVbqs6ScIgs2BkIoQBeYwTpjabAoLY8QU/BDNP8P/AxBADSFyv3jtDTN/yuYmT+zx7DuLfJg6SOz+UMXr0jn3No9tVrH5k7P7PQtL+QKHNfb6ZnNA2PiDY7MnZ7ZOjZ3T63OuSUO7Oa+od8Y5JGQR0IeLevONB/syU1ELy55dq2xYz7Y5r1t3tvGPdGuDf+G3UDWo23ckWDQwP1FzQfbr6F1n3+fIPb1xpWnXbfsm7q0X68fWvqtpV3sRoYOJrk/fikSQ8wcr/FnFpVXBB8pZ+ZiE1ecdvcZ+WEMyqD5u0Q/+A5ebOC6Xmuw7RcezITVGmy7rjfJnBLK2y+u+9PzO4Sdy+bOZVO5l/yP7k/PX7Rz2fQ/vm86vTQf3044R6KPX5/wRy+9tFKfJeUUKc4YxKP5iHgKiST6M74xSMs8Q/q0QQA0hcr947Q0zf8rmJk/u8d4sOwxkc+0xp7R6ZPdE3P7yGz+Y7RPzbAr8H7R9pm10zN3emarZ7aOzdax2fzHaP5j7ByZuydW95I0fxjymWaPCRkTe0z0a916tB3Xs19ca+zot5Z2beg3pn5jasMJ+o3p/zoGMu+JPrKsJ8d+cd2f1Hq0jWvdHpPw88fqlS78XyuOepXxf8mRPqHa94ybHfuyKv5d2znRdx5pZd/ZORSXbAxmKwrGYAbBGKy4wr0TOwJhGAPnozHYudymlO5cbjuO68/7CtIDY+AkhfJ+afQXbZ7X4/i9RPhj4A0YpUW9wWE3Av3oCuKllfosKafIYowBf9DPUxSjwLTNMUYMwgWGVw8vnZZpjcGkkknpOR3Y9VEJd7kIzRDoT5ufo8cgzovdPZQ3/9Sb+0b9L632Vd3Z1xL+nDgm96e3849W+1Otf9e29436X3r3ULafiI96oZj3xHq0zXuij0z1Snd/chRKqTEytWvDvCPWo2092OqF4rzY/ijEpEP4v1Z9aMcR/q/F3yfsnlv6cMe7rra/bvi/7rUz2ryile9O2Bjo6cYgcn9LZkrk7VIM8RiMeL8U78He+15mHvYq8bU+9Orpa0WaIjIN0tltmJiY2Krx0iJaA1dAy973RnonRojCMgaOaz9PcF1vu9/c7jcdx7Udz3Hc7X6TUuqn+Itc1/MzO05SKO+49vNkxKB+UgvjdxHxRPenxy4tzMQb/NMJoL4r+JgtUlqpz5JyihR9KxEj3GeslbnFtGcMEusz5xbJTCMGPL+1pVAJd7kI8X95F2cM7CfiOk7nQBH+V65+Uaq/K5V/S2TsZFT9TfKlWfm3VP1dqX5RhP9VOoeK8+L4qBeqNtD1G8O4MbUr3RiZnGV6v6jSVyeP/w4N9UJ1HccevxsDf8SgcWKFmXbEQD9v0FGt/VdN+I8k/KUKfyrCN72yb1b/0/1gDK71SbVSot54+JuYjbFWXDMYg3CMzj8zZzmM+lAOY7C4mUTBGKy+4l1cYgTC6BLVK815ccnY8XEcr3nesJ9dMnaa5w3/zchBij/vON4k80tSKP9Wmut69Bfd7FV9/P4h+BiG/qKZpQX4//xI/t4NoJS6rhfJFimt1GdJOUVWwBiwV0kM3+N5IgpfaMqsD9sY8PiEXIxBWuInVwl3uQiRucfN2Sd/2lL6wRjY7qsr9lThf6TKb0rli1LZkjf/lB0n++q++eg0viuV/yiVL0rlN0X4H0nsqe6btCtNvdL0oaEPDW1oyueq/czhN35R9UpXL3V/RfVC1fwbc5/sjz+xuvB/rcY/hg+PK4j0Ce59XfmnKvzebeyr3uQGYi/+eqLlGwPO+5H4A/pItsjFjhmMAU26YiKktE84JW18YNqgP3Gtz+AKaNn73sQuLvHnntMYkGfX9wD10zqltH5a9/2AnzKZf3Z5jEHgDWpHVfqL+n/c7vcS4rBbO6r66f4iTmPguwLjP80INOYNYAzKLlKoMUgMUCJhSqYxSEyhSb4/XkimeeAkHAT4P1rhaZAe/8j+wSuFSrjLRYjMPW7OPvnTltKYMVAvDeF/pMq/lcqWWvmqVr4qm3/J5NkJ/iXUeXWb/2iVr/KEP+TKH1LlD7nyVal8VStbqm8M1EvD838wXdccmeqFatyY+tDUhqY6MOQLTTpTpXNtQl9TLnXHccL/Rape6cqF7j9+YNwY2kAzR2bcGJA3b1D/pnC6gnCf4D3tehfV2n/bwg+zeayRJ1sbkd0R3b6mnTMtbAy0gTY5WutvDNJCfM5yGAXGl6btBWdzzWYVaLpgDNZCM3RxNG4MHJc8OWE2jzeDTWwebwYp/nxA2s0/4Ty+GXBdL7SWp9wptaOqNJI+pmeU5rsC9feGj1+98EdGaaU+S8opshhjwIj444EIOyjPNAmJW+Q0BomlLcIYcP4EwhhAC1L8y5v2ZVzsrUSvDhnbQrVb2dIqf6iVb1r1b73yl7r5t2I92sGtQeTJbv6jVfaM6g+z+sOo7hnVPaP6t175plX+UCtfNKHaJmPb++n6OM+2dCobt5Y2NLWhpY2Ifkv0O1u/s/V7W7+zlSudPL2Xb7846sBQBoY2ItqNpQ1N89YSe5LzbLuvjv1E4jviewNOVxDuE7zbhnG0WftLEf6xhCFt3NLmPa0M6cZXWf/45waJxoBxX3vaLfLxFcMZGB/jKdF+9WN6Ys60dSPlxOcTS07ceiQbjzGIN0ha+6Rl47yJiCfDqqjcfe8MXRxlGgPn1av1NiNbCafUepvOq8dvDOK4rieNpOph1Xw27ReX3xhQSuXf6j6Uvr3g6GMijAE0EVnwiAE/aYYhHspnZiPcIwaJ685pDGjWb2SQEpmhMAbQwpT45U081RdqDPxr9vXfdytfjco3rbqnV38Y1X2zsqdv/lCNO+vtDaREvDQqP/TqAakeWNV/rOq+7xD0yjet8l+9vtUOrv37dP7pmA+2dmNpviW4t41Hxxi7xtjV72z9xgxKJo9EHRjq0NLvbf3e1m6JdmOZD3b3oOv99Bwn2RjM3Cd4tw1lryqfSrU9pXqo1fp2tWc2DlTj1qKeR733e4qUvjI5Wnl8KWaIX9cmog1p1eq8avVhqdx97wxdHE0yBu8PH7961aMaY4vVo5r7mv3wcRr+AEL1oCrdSMFDzJylUUq7/6p1/1WjdPK88uQp51A6Hj6GJiLLvZUo/pGhxBLSopnoFamijQHNivhhDCYq4S4Xofl/BTPzZ/YY9pjYz7bnefK5tvG7Ut03K/tG9cCqHpFqz64emJsHmj4yzTvTvDO7faN6aFZPnGrPrvbs6iGpHvj2wBT+rcjnmvdR+lDXhqbx4Oh3E0tgPnvmi2c6VH90tJtJseadqQ5N7ZaYz54xdo1HR7+3jXtbH5r6te55nv1shx8+npn3PuFJdM42reNN+6KhX4jywNBHFvW894cNPM9/5EA6kSZHa+4vReLlcCh3hccT1q/By933zt8lxt9KVD2sMrZYPajyvJUoEcdxzSezclCtHFTpL2q/sN4jFC8teFNz5B1EiekwBmUXWaQx4Lm0P0P6PCMGJOQuwsYgzSQwKpYcBFBKk4wBjQ0jMEYVFn/YV0ll29+CNP+vYGZ+nh7Df8zAdb3ab63NQ1I9tKo9Uj11amdO7dytHVv1I12+MpSB0ejptXOn1ndrfbd25lRPneoRqR5YmwfW5m8t1/Wi+um1f7StZ8+3BJZDrVdqvVLLpdYrVYamfmPoI0O9MfUH2080HWo8ucajYz177b2299NLfMBgNiJ9gtgTI0Mc3k/v3R54Hv3lib23sBJfCmgJKvdpNn+XGP+DMz9wZ8DzB2dpvF1KiP7twGylMcAfnJVdZDHGIDI4EF8az8wTxyeOKiSmp72VKLECmenTBgHQFCr3j9PSNP+vYGZ+nh7DHhP7yfY8zxhZwr+6jQu3eurULtz6ldsYuI2B17i066dm/cSsX9iNa69x7dUHbv3KrV241VOn0XeEf3WN0dtNOB8h95Z0qtg/qeVQy6XkJyU/KfGo7VHLcfUHot1Z5rNDvMkiy6WWQ+2fVDqRyQPxPM9+yme4IN4ndA+6PExy40sBLUHlPs38LyknDGPgOBPcVzdu/iME+dNC+aC0qVhoaaU+S8opsuBbiYoi7X8M3s/1JI+RVxAATaFy/zgtTfxf3oUaA+IPGjgO/UWlU3Xjd2n7xmsMveaNtz3ytm/fuHufb4685tBrDL3tobfxuyR9fJNPBO1Kk89Vh078gP3rDRri1wfkc1Ub6PQXdV+dvIYL5u0TBAGAZVBiNbeaUxHvzbSB7jqO++rOguNoA30tSiv1WVJOkbIag3yBMZhd5f5xWprI3JfH2Cd/6jcxqRD72XZfXfqLSieq8P+6O0O39UhbD7T1QFuPtPVIdx8nM60HunNPWw90e+gK/68rnaoMV+CjXqrisWx71KEZ2B4Vj2XtUqO/qPvq2s+5uQK/WQrp+gAACyLSmxkjwxiZ7qsbvDeZE/fVNUamMTLWojT8QpdOBMYgD2AMZheMwVI0/+Ux9smf+k1MLGT85g0o1W/Mzd92an9r7Qev69COQzsvtP1MOy8T2g9ebU/b/HfLuDEzXYGPeWftft/VbiyXUo9Sj1KX0mDe/6jdWLvfd617i9I3VzDOtQuCIOjTKfI1N0amNtDVK20qtIFujMx4p7GapeEXunQiMAZ5gKuDM7PkIwX44fyyz2IMHi0yJvazHfzjmHym1L+0Nr6Im3va9onVOifbJ9bmnrbxu1jfaslniueF/h35F/WfNw7++dj76Xn+ez/f5HmeeqG299riiaLdWNazS14968nVbizxWNn9u61eqP4jy47j2M82yenRAgAA+EzAGJROBMYgl81BMwsjBissnpN/RmPwaJFHy356tweUUjK2tStNPJbFI1E8lrUrjTzZlFI/gndfXT+It59t+8mezAS8pTgvzuQpQM+jlNrPtn6ty2eydCzJZ7J+rdvPNqU0sAS5/GsBAAB8SvALXToRGANQKDhS6848xsDHtwf20ySmd93JM3CO4zgvzgcP8ETYbw2yx2RS2ptb8P/qePJQneu6r+57mbAEAADABMagdCIwBqBQcKTWnfmNwQQ/pg9swJNtP5H5Y3e/kEixuHEIAAB4gDEonQiMASgUHKl1JzdjAAAAYMWAMSidCIwBKBQcqXWH0xjwvywVAADAigBjUDoRGANQKDhS647IZwyK7eggCIKgGQRjUDoRGANQKDhS6w6nMQAAALB2wBiUTgTGABQKjtS6A2MAAACfFRiD0onAGIBCwZFad2AMAADgswJjUDqRz2sMwLpQ+NkC5gHGAAAAPiswBqUT+aTGAACwHHI0BgLTJUaWsjMvFJ6aBInCRxV4pNK2LqSr2HrynA+ZlSy2zTmrtCKNH69AvD6JKYU3KVgcMAalE4ExAADMQb4jBuEgIzH+nipq5E+foZLsYC6xntPWas7aMiL+tNCTZ4sLbdu0pptqj6ba5YXuEWdNEve08PZPPBaMmUJqCxYNjEHpRGAMAABzMKcx4Az1SIoxSAwvgkWMcmaGEQ/Ft8uoxnJqG2lnRouxI9fE2kZKnrO28SPLrg/PmcBTJXZr59X+7KJma//cz5Z4sfG2jR9r9n6RxZwtYGnAGJROZDWMQfjfNFgnaJYimRPnE4vN+GLkd4cDukLwychrxIAzPpvtiz/Vl5SnkuwuiL/8hdY2UkJm9abqCRfatuxt8fwExKuXWDGeyufVaTPKYZzwmU20oLOF0Yw87Z9ZTr5tCxYHjEHpRIo2Br4ZaG41AzLtwYdTlq+rjXdG/L0bT2mE+fMz1YYYO4U+FKwgSzAGwZeFkYdRDmfUxVnJxMrECw+m0wZPOdY2UufEamR0hYWaLp5F/AeCvdFw+fm2P085mS3P39TztH+8AoknTOZM/GPuZwtYGjAGpRMp1BgEliBcpSAl+3xN6Rb5f+fYhXOWE/nhEab5HUrLEO+XOVcHYMksecSAkZJYTuK3fp7vUfjLmNgtxD9y7kXutWUXKEwfojH6vVxqmzjDqH9aO8dX5zxb8t0j/nI4N8pzyOasLWfjs2cS2zbxbMQv2uoDY1A6kRUwBpm1Sj1fmX0K+/eYzHSRht1LMkrL7EMZ20JPClaZ3N9KxPhqJH7L2OFIYoFzBq/xeDS+oXiAldjDLLS2weqZHd3MneGC2jZtE4ktH8mWdpIs/2zhL2eG9k8rcJ7252m0eGJ8Jq1tOXcBrBQwBqUTKc4YpLmCxIolnKyx34N4hsR5RmJmtninFq8Duz5T1TkxM3pSsFIs0xiwU+LpPHmmIhIPZcZP4WyZe5F7bTmbjr+fSesA821bdpcbnnL+CjCqxA55c2l/nnJm+DHizDNzJdOOQjwDT9DPkwesJjAGpRNZT2MQ6e6nDegJ8+rItOVkpsTrzBMBpP3moScFK8XiXlfKTuf8Ek21lakqyZiGe5LELzW7tvl+5dm9XHij7J6Qs2Lzd1CRdojXlj1lty2jtosOXtOai60lt3/aecuoME/1Ft22YHHAGJROZA2NAbvnmqqfTSw2bRGjF2Zsa+Z+P7w6Zz0BWD45PmOQds6TaYwBiX0r+VecoZLxaWIdGP1PYs5cajvtrvG0ErtuudQ2rTHjrR3vaWeoW3z1yPyCWnjO9s/8BZmzkolfInYjp7X5EtoWLA4Yg9KJrJUxmLZX4j3vU36wIyUzftQ5q8EoJ75u4q/dPLsJwCLI638M2OnTxqA8ce3MJH6ReQL6aWs1Z22FLLEzF9K28ZaMFM7oD9P6THbJxbY/o7WXXNtpS4u0/JLPbbA0YAxKJ1Kah4/jHzl/L9nbYvyAsevDn4fxQwhA4eR7K1GO8HyvVwfUFnuE2oIVBMagdCJFG4Og2HCVODfE6F/mDO4jS4W573CY1j+EO1AeRwFAUaysMQAAADAnMAalEyn6D86CajBSUs/XaYZfE1dhXMBIWxRJz4z4GfVhbJp/fwEoFhgDAAD4rMAYlE6kaGMQFBuuEsDYK1gXYAwAAOCzAmNQOpHVMAYAgDUFxgAAAD4rMAalE4ExAADMAacxEI9EAAAA6wWMQelEYAwAAHMg8hmDYjs6CIIgaAbBGJROBMYAADAHnMYAAADA2gFjUDoRGAMAwBzAGAAAwGcFxqB0IjAGAIA5gDEAAIDPCoxB6URgDAAAcwBjAAAAnxUYg9KJwBgAAOYAxkA8EsuwmwCAEgJjUDoRGAMAwBzAGMAYAAA+KzAGpRNZDWMQfmku15ka+idg9r8CZ/5n8FSrz7ktAD4fMAYwBgCAzwqMQelEijYGvhlobjUDeOwBwxgIWZq2tHBifPWpNpRYAjsdgBUHxmBxxoBSYSoKb4pFY96aDAqv3kqBtgK5AGNQOpFCjUFgCcJVClISTtDpg/7kE527nERjMHNwHy4nbVsArBe5GYNR1zirkFG38D2aoQUyd9Ma7BgnG9ZgZ6qSYQwimLdm2m8Z4l20FVgEMAalE1kBY5BZq4QzNSue5rQN7HIS43hGQB+fSSstbaPwBmDtyMUY2GNinG7QX455VrHHhHPT7G9cJBu/b5+hBdi76ThOsHeO4/CXnK8xSByJjSSm5WGQtiLnfaFTwQ52/en8h5jzhFlxZm6rzMPNzpB2SrBPv7RCGKuA5QBjUDqRxRgDRmcR2VZQEz/aTqtY9EzlMAaZKexyguif56J+OGfmeALj9ya+KLMLBmBB8H/ZczAGj7o9alGP2Le79r3Kswr7O5UxJsj0/GnXERgtkLGbd5I92vH3bqohEUoF+sujlNJf3rTGIDiOid1IJCf5GKKRj+GXyBelJRabL5lXwdnXwtmHOJeTYXWYua04D3dmfs7zIbNMdjdVeDt/emAMSieyMGOQuK1InsAYhLvgxIpFz9SsK/2c/XtmOZkp4XSBzxiQkOvILH85pwEERbRkY2BdbXuORl9lz9HMywY7s/DRD/B/zfm/oVOR2VbmRf19785r/CXPYwyCusXn2aEYwxjEExONR5Ah9+gtHNFSKohHongkBBEw+0I4u7dnnCeMEyN8vi3CQsR/Nfg3MXNbZR7u+PFlGM7EnGl1Zmw6Pg+WA4xB6UQWaQwy80xrDBgRP7vHzFzE+J1gbGuq+jDiFZ56ArBMlmkM3u4jsunzLv1pGll3EzEC/fiizO+mEIv/pv0astvq7T4imz63/L3jv5sobAzMZ3MyH5L5bDKMOSjQIAAAE/NJREFUQdpwQWJwxri+Gx55SJymNctUzcjZ1Oat+bYLQvDxQ5skBbucZwJnZ844GzOzzQl/OTO3FefhZp9C8dOM7UsZeTBiUCwwBqUTWQ1jQKe8lWiKc5rZpxMOY8BO4SmHsW6meQCgEBZtDKxh2zjZMI4n2Dc71FXpeJs6kj1sBunGyYY1aEXWDYdijCifx5yH0zO/wvxtZV76uyD4xPZukq4fb5gXrOGRd2Pgy7cHVKBUMG/ffUKQGKlVvJ7xGZ5LszxjCDyB4/wIk7EswY90BUoFgWYGu5Ejm3jCJJ5CmWdOWn5GtnlbgLuc2dqK83AzzoFgPlJO2uk37YZgBpYMjEHpRIozBsHmMmuVcKam35bDvurDaQDS0nlyZuZhZIYxACvCoo2BcbxBPZv+cugvQj2Lugp9btOHJn3YpuNdOm7Thx1616Q3deN4IzKAEP8qpcX0QXr468/Ilrh0hrYyevG92/2wd88ifVHpQ9s4Zm0ubAwigwPv9iC0NFKrcHCWdp2V55ruIoxBZrec2M6TSPftEpJAqXlrCh8jl7TtsnvgNJOZWb3EvUj7VWKskrZW2l4srq1yMQaMj2lnV+YpymkMZji1AKs98wg1oXUSKdoYBMWGq8Te0JzBfWQpo/fn7JSn9Q+MX4Ucv8wAzMPCRwyu2+ZZjToqfZXp0w593KYPDXpXp6NNelOj11U6rHmDmnG8YV0ljxhEIi0SC/giTiDykcQCiLhmbivzovlx75rRvXuSN6827DuRDDuMkj+OGCQ/V2A+m5ROHkJIrFvifFpiYuwlctxbEknkudljpnYWxCNROBIFwZ9Sfz78C8J4xiDzKM9wGkROwsSZxPn42cheKy0l97biOdzxQ884lxJJPAMZDoRdyJynFmAAY1A6kUKNAXmzBOyU9xOU+VVP6+LTyknsc8PpmZ0yoz6MTfNUHoBiWbQxII8WuZX1ow3nrkUdid436G2d3tTosEoHFXpdtc8r+pFARlJ8xeDLxQihIrFX4ipp+XNpK3PQ1o+Eyd49tuhTlz7L9EmiY4k+Se6DuHlV2R5U2CVH4n6WMaA08VaitLCMEdXF4y3Oy7fs68qMZufEvytGECavzKJvT9BGlPmGfna/nTaTuQtzGgOS9MM0szGYp61mPtycIwb8m5uqnNkaCmS3ZA6RJrRWIkUbg6DYcJU+N9NekQJg+SzDGDxa9hMxTuvu3Q69a0wupQ8q9GrD7W8YJzV7nLHpSATGjr3SorHEFXNpK/uZ6L2qe7dDn8TdQW3zqhKmerEhOZ3Nyw1GyeGbhVJfRhR6bVG8YoyP4UT23RqMUCwSwLGvB8+D/2qd4OJ38L6dtzvpJ8r86y62pSzQGGSuxVmf+duK83AzTpjEc4OdLfE8DOYz/S1YHDAGpRNZDWMAAFgplmMMyKOlHwr0fpsOa3RQoYMqvRTohUAvBP1QyPynM0aQlzhiEP4YX4WRMnNb6QcCvd+mT1L9qir/7HZeW+3Xnbaz037Z2X3abo23tVe1epHqDSKhvx/wpbmCRGOQGaMnjh4w5uOrJ24o99Bt8sJNP9j1b5f391kQI9fC2f9jED/EaScAz1WbcJ60+XjmzBGDyHkbX8qu2JxtxW8M4gc9cSn7XEobv0rzEjADSwbGoHQiMAYAgBhLGjEYm+bxBh3V/bEC+3TDu5gYA7Mn2Pcae9Np4VdkJv4xM/Kbaigvta3uNPN4g442fWOg/pTVn7LiSsqrpDiS/CK2Hpqao25eZRmD8P1Cv7x3gpSUPzgLZjIvtSZG8Iybi8LFJi5KnJ8H/zla/4WbwhviUTTSpUkP1MaD6XiQnRZzT3UmrAjztBXP4eY/9GnnFY8FhTFYEWAMSicCYwAAiLEcY2AN2uS8QgcV92LDOBTMi5Z+KDhnAr0Q7BPB7O8U3g7ztJVx3vT3zrvdbV3V6oNqmNrFhuaodeZjBvF3EE3+zeCXF351KeMPzj4Nb//SNXkf/9v/dtHw1BcCR7QVyBEYg9KJwBgAAGIsxxgYx5tOf8M+FfQDgdxI5NEid6pxXCPHgnsu6EcZz+auCGltpR9V/L0zTjbtO5k8Ws7YILeSeyd692J9UGW7AhIzBjP88/EnQ2Q+SusLwS7aCuQIjEHpRGAMAAAxlnQr0b1mHG+aFzvh54ztMbGuu/pRJfGVRCtIWlv5e2Gc1MmDESQ6jmP0d8hIrA+qmSXDGMSbmofC67kKoK1ALsAYlE6kCGPAeIhq/gcBAQDzsxxj8DnAdRAAwGcFxqB0IgUZg8T5+EfC/XLPadMBAAxgDAAAAMAYlE5kNYwBz4tE4h/jhST6B3gDAKYFxgAAAACMQelEVuNWokRjwBnfJ+bhdBQAgERgDAAAAMAYlE6kuIeP2QF9ZIYR2TPGHxLzAAAygTEAAAAAY1A6kVU1Bmk5M8tJfA4BxgCAqYAxAAAAAGNQOpG5jQEVBAAKpPB+81MCYwAAAADGoHQieRiDeLbMqCLtTiHGMwbxDImrsDcHPhkwBgsCxgAAAACMQelEVtIYxB9Kjq+YmIKHj8sGjMGCgDEA4FNS/3e98DqANQLGoHQiRRgD/v8x4HxaAK8rLS0wBgti0cbAgyBo6ZJPJRgDMBUwBqUTWboxCF/Uz3xuWEgSu1jOdPA5gDFYEEswBkV2fBBUSi3aGMB1fD5gDEonUtCtRAs5ffksBPhMwBgsCBgDCPp8ChsDDEcAHmAMSifyiYwBKCEwBgtiGcbgF6WUYooppkubRoxBvp0GjAE/m1t27YtV27LIo2Xemo2vZuOrad4VX7E4MAalE4ExAOsMjMGCWNKIQdFxEqaYlmoKY7AibP9J61u28P8pviswH6j5QFfTG8AYlE4ExgCsMzAGC2IZxsDz6C86GTpIn/eeRO922x01vbHEkx/zmMd82jyMwYpQ/c3c+B9N2NhtfDWtR1c6U6RThTw6uXsDe0zUviKfStKJJMeQTiTpRFL6ChmTtBJgDEonsnRjIB6JAOQCpRTGYEGIy7mVKGm6c0E2L53G0LFeOvShqV3siEfbcq+lnmz73iBxLUwxxTRzCmOwIkinem3Lanw1zUcqnyn6raXfWuKpQsZuvt5A7Su+AdCHun6tqZeqci4r54rSV9QLVb2coPSVtBJgDEonUoQxaG41AZgT/2yEMVgQSzAG3k+PfpzuDuz6kLYeqPxk0ucOHW939pudo93tfcXPYw1242t5Pz1BEBLn2TkjU0EQeErInHKWw65z4gvZAjHWmqqGkZT4htglxMuZrT7hnOG9468PppxTGIMVQTrVG19N89GTz2T91iJPDhnb+siSznL2BtKxJJ9Ial9xQyKPlnalaVeqdqVpA027UsWjbloJMAalEynIGGz8qw3APBAOY1DkV2vlxYjm2V/hxG804xAkpnteqiswHkQ6bhpXtfb3ZudE3H2knUda/0ennqf1O5mRbiRaZUfYidH5nPEoTzmRMtMi9WkdRWI5aWJH8Oy9zozjZ6hP4loCnwPBlHMKY7AK+M8VWI+edKbot5b97DiOazuu9WjrIzNfbyAdi/KprF4o+lDXh7oxMsgj8e2BdW+9GQMNxgB6F4ExAOsJ4TMGhf8GrCbsaJ79FZ6qqLRCPM/zXNf7+T6tDOn2PSXPHfrYUM9q2/+uiT1xs+80r2nrgbZuaWNfC+f3p6wo82POID873Q9PM/OnTTPLiYfC8ZS0coL8jLUiKYlTRt3S9jozoJ+q9cLpidtKbKtITvY+Ypo4hTEonGRX8OLaLy55cswHot3k6Q2kY0k+k+UzWbtS1QtVvVDUC9W40e1n23Vd8mBhxACKiqy8MfDrOe0i8OkhMAZzsBLGIBSvNM+szRtqv3TpQ93sV1q/b/jpUl+rnNHNS7pzTxvnXudQzIx0E+PF5HD249LEyHtaV5BZTnw+cWmwVtqUJ+JntAbbFWRG4ZkRP39Mz4jvI/vLWQdMGVMYg8KZuIJTRb+17BfXcVzHce0Xx352yNi2Hol5T7Sh7w2cxlczrZzI9ystm28M1At1chPRmBg3unqpaleq7w20K029UGAMoHeRlTcGG/9q0/Ton7EIfG4IjMEcrIIxcF9dz3Vd1/Vct9nTjbsufWg6g43Nf2/W/9zZ/t7Z3us2v3c2vtsb/9Cda9o483b+6vj5/XUTw/1IMOrnD88H6wbzrusKghBJFwQhnB5elzGfWU54u34lw+UE9fTT/XXD5XDmCdcntWU+tmGk/oz5eB3S2jle53g9I3UOt0m82oxtYZ5nHsagcKx703cF9Bfd3Wtv/9FqfGmSZ8d+dja3WtWtdu3LrnFnaUNTPFWs+1RjQELegJFHOpaUc1m9VM1b03qwXNd1Xde8M5W+og0013Wte1PpwxhAIREYA7CeEBiDOVgFY/Aer7y6cr9Dxzt0VKn/tyn8tiuceUKfCpdU6FPhzBVOneqVJ5x423+2w2slRvkfIv63aWJwHC8hsZxITvY0s5xwaWkpnPVh5GG3RmL7JO5pYower0M8f9q+s8VuMfa2MOWZwhisAuKp6ry69BftHknSqdr8zw55csiz0/zWbXyTan8o5q2pjyzxVM0siu0KiG8M/BcQXShKX9GuNPuJuK6rX2vKuWLema7rKucwBlBIpFBjQCmNTIP0+Ef60QPEE8Mfw0vj64JPAFmYMQi62sTYZapOeWVZBWPgOo776rqO47465l2H3takXkP435bwVRG+KcIfmvBVFb6qwh+KsCUJW5Lwpbv9re3nD6/rB4iu4wiC4KcLghDJE0l/y/meJ1jXn5/EqbFtBeWE809VTiwU/lCf8L6EwmInPh+sFUw/FJtUn8R9mbaceH0Sj0XafsXbn3Es4t8+xrYwzzMPY7AKBMZA7Ek733YbWztkbJNnRzpTqn/I1f/K+sjSbriMQSa+MfDxvYF/WxEZE+VcNm5013W1SzxjAIVEVs8YLG4GfCbIIkcMwhE/I/qfyhikZS7EXayEMXiLWihVvLuGN6wIv3eEPyRhT+OPeBIjZn8+MdJNiTWTI3tGJJ0ZlaaVw4i20yLpRCfAk58dPUfaJ5yHEfHH6xwpM9zyadF/eN3MbfG4i9WJvFd8HsZgFRBPVcdx3Z+ef5+X++paDzZ5ctQLsfIfeWNL1m/M/IyBqJzJ1r3luq71YKkXinKu+PcUqX1Fv9Zd18VbiaAPIkXfShTUJJ5Cpwz6E9eicAWfFLKsW4kSA/d4fBlJTCwkLcPyvcEqGAPnxXYdx3Ec6sl0WNvd3xG+iMI/hnBKNvcVx3Fcx3FebKFH6zd0o0+FS9r8sxOkB6Gh82ILguA4H8xAkMfPP0lJWtdPFwQhXE6QJ5iPrJuYzlNOeLuMeqaVH9mX8BkVqcNU5fh1jrRnZL8ibRvkCRsMRj0j20qcj9Q5vEVGm2Oefx7GYBUQT1Xbce0Xhzw51ti2Hm3zgZAnZ/M/HeGLLPwu5W4MHMfxny7wjYF5a7iuq16q+rXmuq5xY8AYQO8iK2AMNmLxfSQEpLOOD/j7WHgICxYBWfCtRPHQPx7TC6GbjuIf49k48yyBVTAGQbxCn3fpVb2+pwh/yELPEs5tYeAJF65wZrcfaOOWChdeZUCFLXES37yEYp2X1DgyMU+wriAI4XI+rvUhT2Tdtwj1Qx34y4mcS+x9YexvOI6POAQhzXuklxPfR/Z+Besmti27/dnbYpSZ1laMPJiPzMMYrALiqRpxBcY9IU9O9UtX+F0SvuRqDHqicq68jxj0/ScNVG2gyWey0lfUS1U6lmAMoHeR1TMGG0nX/sMfI4nxbBQ3EZUAspRbidLi+MSlMAb8h8AfMXBebOfZpqO6ctBwXmzhS1c4MIW+Ux3R7ph2HunmLRUGdHNIhf+KQf7JzMf5ILpNzJNo8MLrhgtJzJO23UgdMsthbzcoM3FfPmT7WIe0dRN3PK2ctDyRdoiXHy4nvCOR/Yrs43sj8LVh2r5jnn8exmAVEE9V8uyQsWM92uaDbdwT45aQJ6f+tVv9Q6r+kacxmDxd8IbSV5RzRTmX5TNZPpWkE0k6lvznENJKgDEonUjRxgCA2SCLv5VIYIb78UVpOQUYgxgTY/BsOy82HdbVo6Y/X/uzK+zrwoVbGdKNayqc2cKeVvtLmsQ3mGKK6RxTGINVQD7XOMlhc2Piv42UgdJXyJiklQBjUDqR0hiD+L4XHtqCeSALHjFIjODD6QTGgKOotEI8z7OfiPNsO8+E3jbty93J/H1XPWpIx+3WidY6VoM8zrONecxjfs55GAMwLTAGpRMpyBgUu9fQJxBZyutKScgMYMRghqLSCvE87z1eeSLeoOFeNs2zhnnVCqdjHvOYz3EexgBMC4xB6URgDKD1FFmiMSCx0D9xHsaA/xBMRgyeiD0m9hPBPOYxv4R5GAMwLTAGpROBMYDWU2TxbyWKf8w0BoHSykzMkGkSeFKmYhWMwXvUMiaYxzzmlzAPYwCmBcagdCIwBtB6iix+xIDEHiqI50l8GoG9Cmf6QlkFY2CPLXtMMMUU06VNYQzAtMAYlE4kD2MAQIEwerS007iwHjamomqyGsaA2I8WpphiurQpjAGYFhiD0onMbQwSwYgBtGjxnI2ZGUrL8o2BeCQCAABYL2AMSicCYwCtp3jOxswMpUUswhg0t5oAAADWCBiD0onAGEDrKZ6zMTNDaSnKGDgQBEHQ+gjGoHQiMAbQeornbMzMUFpgDCAIgqBMwRiUTgTGAFpP8ZyNlNLCb9BcWWAMIAiCILZgDEonGANoTcVzNhZ+d+aKA2MAQRAEMQRjUDrBGEBrKv6zEcwAjAEEQRAEY1A6ERgDaD3FfzaCGYAxgCAIgv5/V0OHpwCBKkkAAAAASUVORK5CYII=" alt="" />

WEBDAV不像FTP那样,是一个独立的服务程序,WEBDAV仅仅是一个扩展协议,允许客户端通过指定的格式进行访问,所以WEBDAV没有匿名登录这一说法,但是可以采用一定的手段对WEBDAV进行加固,大致有如下几个方向

. 直接禁用IIS WEBDAV扩展开关
. 单独针对每个WEBDAV站点进行目录读写、访问权限的细化设置

下面我们以禁用IIS WEBDAV扩展开关的为例展示修复代码

0x1: 通过API方式编程实现IIS 6 WEBDAV禁用

依然使用ADSI技术进行编程实现

// fixftp6.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include <atlstr.h>
#include <initguid.h>
#include <objbase.h>
#include <iads.h>
#include <adshlp.h>
#include <atlbase.h>
#include <iiisext.h>
#include <iisext_i.c>
#include <comdef.h> #include <lm.h> #include <string>
#include <sstream>
#include <vector>
#include <iostream> using namespace std; #pragma comment(lib, "Activeds.lib")
#pragma comment(lib, "Adsiid.lib")
#pragma comment(lib, "netapi32.lib") wstring logFilename; // 禁用WEBDAV
HRESULT SetIISWebDAVState(bool disable)
{
HRESULT hr;
IADs *pADs = NULL;
IADsContainer* iContainer = NULL;
IUnknown *pUnk = NULL;
IDispatch *pDisp = NULL; hr = ADsGetObject( L"IIS://localhost/w3svc", IID_IADsContainer, (void **)&iContainer );
if (FAILED(hr))
{
wprintf(L"ADsGetObject failed %x\n", hr);
return hr;
} //This class corresponds to the IIsWebService IIS Admin object, and contains the methods and read-only properties for the object.
IISWebService* webservice = NULL;
hr = iContainer->QueryInterface(IID_IISWebService, (void**)&webservice);
if (FAILED(hr))
{
wprintf(L"QueryInterface failed\n");
return hr;
} if (!disable)
{
hr = webservice->DisableWebServiceExtension(L"WEBDAV");
if (FAILED(hr))
{
wprintf(L"Disable WebDAV failed\n");
}
else
{
hr = webservice->DisableExtensionFile(L"*.dll");
if (!FAILED(hr))
{
wprintf(L"WebDAV disabled\n");
}
}
}
else
{
hr = webservice->EnableWebServiceExtension(L"WEBDAV");
if (FAILED(hr))
{
wprintf(L"EnableWebServiceExtension failed\n");
}
else
{
wprintf(L"WebDAV enabled\n");
}
}
return hr;
} int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr;
//ADSI 基于 com如果忽略了调用 CoInitialize 或 OleInitialize,AdsGetObject,它将返回 HRESULT 的 MK_E_SYNTAX (0x800401e4,"无效语法"),
hr = CoInitializeEx( NULL, COINIT_MULTITHREADED );
if ( FAILED( hr ) )
{
wprintf( L"CoInitialize failed. Error 0x%0x\n", hr );
return hr;
} SetIISWebDAVState(false); return ;
}

0x2: 通过API方式编程实现IIS 7.5 WEBDAV禁用

aaarticlea/png;base64,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" alt="" />

windows server 2003默认安装IIS 6,windows server 2008默认安装的IIS 7.5下,而在IIS 7.5环境下,WEBDAV是以一个"feature(功能)"的形式存在,所以在配置文件中就没有<webdav>这个元素项,通过IAppHostWritableAdminManager对IIS进行配置的这个方法无法使用,需要继续研究别的方法

undone

http://msdn.microsoft.com/en-us/library/windows/desktop/dd408159(v=vs.85).aspx

http://www.iis.net/learn/install/installing-publishing-technologies/installing-and-configuring-webdav-on-iis

http://www.iis.net/configreference/system.webserver/webdav


11. IIS 恶意Filter/Extension的自动化修复

undone

Copyright (c) 2014 LittleHann All rights reserved

IIS FTP Server Anonymous Writeable Reinforcement, WEBDAV Anonymous Writeable Reinforcement(undone)的更多相关文章

  1. How to set up an FTP server on Ubuntu 14&period;04

    How to set up an FTP server on Ubuntu 14.04 Setting up a fully-functional and highly secure FTP serv ...

  2. centos 安装FTP server详情&lpar;转&rpar;

    centos 安装FTP server详情 分类: linux 2013-12-27 16:45 227人阅读 评论(0) 收藏 举报 我们这里以安装vsftpd 服务器端为例子: 1.进入到cent ...

  3. setup FTP server on CentOS 7

    Setup FTP Server on CentOS 7 Install vsftpd vsftpd (Very Secure File Transport Protocol Daemon) is a ...

  4. apache ftp server的简单入门&lpar;properties验证&rpar;

    Apache FTPServer:(开源) Apache FTPServer是一个100%纯Java的FTP服务器. 它的设计是基于现有的开放式协议的完整和便携式FTP服务器引擎解决方案.FTPSer ...

  5. 启动BusyBox内建的FTP Server

    启动BusyBox内建的FTP Server   要启动BusyBox内建的FTP Server,我们需要先孰悉tcpsvd与ftpd这两个命令. tcpsvd可以建立TCP socket,并将它bi ...

  6. 【Raspberry pi】set up an ftp server

    http://www.debian-administration.org/articles/228 As a means of distributing large collections of fi ...

  7. arm 添加 ftp server 之 bftpd

    本来想装vsftp 结果装上以后执行报错 Segmentation fault , 换到几个 其它的小型ftp server 软件 ,试了 Stupid-FTPd,不能用. bftpd 可以使用,Ti ...

  8. Guidance of Set up FTP Server

    Step 1. Create a FTP folder in your C disk, named "FTPReport"(an example) Step 2. Install ...

  9. NAT后面的FTP SERVER终极篇

    原文引用:http://blog.chinaunix.net/uid-20592805-id-1918661.html   如果对于被动模式还有不同的意见,我们可以再看下这篇文章: http://ww ...

随机推荐

  1. Xamarin基础命名空间Microsoft&period;SqlServer&period;Server

    Xamarin基础命名空间Microsoft.SqlServer.Server   该命名空间包含大量的类.接口和枚举,用于操作微软SQL Server数据库.该空间支持Xamarin.iOS和Xam ...

  2. POJ 3020 &lpar;二分图&plus;最小路径覆盖)

    题目链接:http://poj.org/problem?id=3020 题目大意:读入一张地图.其中地图中圈圈代表可以布置卫星的空地.*号代表要覆盖的建筑物.一个卫星的覆盖范围是其周围上下左右四个点. ...

  3. php实现多任务并发探讨

    如果是后台任务,需要通过队列转换为异步执行 如果是网络任务,可以使用socket_select 或者stream_select来执行(基于select模型) 如果一定要使用多线程可以安装多线程扩展,用 ...

  4. IOS深入学习(4)之Coordinate System

    1 前言 在IOS中相信大家会经常跟一些bounds,frame之类的打交道,这不免会涉及坐标系统,今天我们就来介绍一下Coordinate System(坐标系). 2 详述 坐标系统是定位,大小, ...

  5. 【翻译】针对多种设备定制Ext JS 5应用程序

    原文:Tailoring Your Ext JS 5 Application for a Multi-Device World 概述 鉴于当今设备和表单因素的扩散,要针对所有这些可能性来优化应用程序已 ...

  6. Entity framework 绑定到Datagridview的添加删除修改

    Entity framework 绑定到Datagridview的添加删除修改 using System; using System.Collections.Generic; using System ...

  7. 制作chrome插件&sol;扩展程序&comma;禁止谷歌浏览器访问某些网站

    简单地说,浏览器插件,可以大大的扩展你的浏览器的功能.包括但不仅限于这些功能: 捕捉特定网页的内容 捕捉HTTP报文 捕捉用户浏览动作,改变浏览器地址栏/起始页/书签/Tab等界面元素的行为 与别的站 ...

  8. 基于Redisson实现分布式锁

    前言 最近开发了几个微服务上线了,发现定时任务执行了很多次,查看rancher发现这几个微服务都是多实例的,也就是说定时任务执行了多次,恰好所用框架中使用的是Redisson, 正好记录下使用Redi ...

  9. &lbrack;LOJ&num;6044&rsqb;&period; 「雅礼集训 2017 Day8」共&lbrack;二分图、prufer序列&rsqb;

    题意 题目链接 分析 钦定 \(k\) 个点作为深度为奇数的点,有 \(\binom{n-1}{k-1}\) 种方案. 将树黑白染色,这张完全二分图的生成树的个数就是我们钦定 \(k\) 个点之后合法 ...

  10. centOS下NFS服务器的安装配置详解

    一.NFS简介 NFS就是Network FileSystem的缩写,最早之前是由Sun公司所发展出来的.他最大的功能就是可以透过网络,让不同的机器.不同的操作系统可以彼此分享个别档案(share f ...