如何确定是否在PowerShell中的站点,应用程序和文件夹级别的IIS中打开了目录浏览

时间:2016-09-26 16:28:10

标签: powershell iis

我第一次被要求提供一个powershell查询来确定IIS中是否启用了目录浏览。我发现,目录浏览不仅可以在站点级别启用,还可以在应用程序级别或Web服务级别启用。

这对我来说有点先进。 有谁知道这是如何工作的?

由于

2 个答案:

答案 0 :(得分:1)

您可以使用powershell IIS Snapin,以下示例将获取默认网站的值:

Get-WebConfigurationProperty -filter /system.webServer/directoryBrowse -name enabled -PSPath 'IIS:\Sites\Default Web Site'
ItemXPath                   : /system.webServer/directoryBrowse
IsInheritedFromDefaultValue : False
IsProtected                 : False
Name                        : enabled
TypeName                    : System.Boolean
Schema                      : Microsoft.IIs.PowerShell.Framework.ConfigurationAttributeSchema
Value                       : False
IsExtended                  : False

答案 1 :(得分:0)

这是我的第一个解决方案,因为它更简单,即使我不喜欢在PowerShell脚本中使用appcmd.exe,因为它对我来说似乎并不“优雅”。

有必要创建一个包含要检查的服务器列表的文件:serverList.txt。只需逐行输入主机名。

此脚本检查所有应用程序的配置,因为更改这些应用程序的配置更为常见。但是此验证尚不完整,因为您也可以更改公用目录的配置。我将在下一版本中对此进行修复。

结果只是有关DirectoryBrowse功能是否启用的信息。如果启用此功能,则可能是安全问题。因此,实现一个禁用此功能的功能可能是一个好主意。

<#
: IIS Security ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: Verifica desvios de seguranca nos site/app
:   - DirectoryBrowse
:
#>
$serverList = Get-Content -Path C:\Middleware\serverList.txt

foreach ($server in $serverList){
    $appList = Invoke-Command -ComputerName $server -ScriptBlock {C:\Windows\System32\inetsrv\appcmd.exe list app}
    foreach($app in $appList){
        $siteApp = ($app -split '"')[1]
        
        # SECTION:directoryBrowse
        $appConfig = Invoke-Command -ComputerName $server -ScriptBlock {C:\Windows\System32\inetsrv\appcmd.exe list config "$siteApp" -SECTION:directoryBrowse}
        $result = (($appConfig | Select-String -Pattern 'directoryBrowse enabled="false"') -split '"')[1]
        if ($result -eq "false"){
            Write-Output "$($server): $($siteApp) - Directory Browsing desabilitado"
        }
        else {
            Write-Output "$($server): $($siteApp) - Directory Browsing HABILITADO <<<<<"
        }
    }
}

结果...

PS C:\Middleware> C:\Middleware\IIS_Security_v1.ps1
WIN-UNDBQ49VK01: Default Web Site/ - Directory Browsing desabilitado
WIN-UNDBQ49VK01: SorveteriaBruna/ - Directory Browsing desabilitado
WIN-UNDBQ49VK01: SorveteriaBruna/Contrato - Directory Browsing desabilitado
WIN-UNDBQ49VK01: AcougueLindoBoi/ - Directory Browsing desabilitado
WIN-UNDBQ49VK01: AcougueLindoBoi/Contrato - Directory Browsing desabilitado
WIN-UNDBQ49VK01: FunerariaStones/ - Directory Browsing desabilitado
WIN-UNDBQ49VK01: FunerariaStones/Contrato - Directory Browsing desabilitado
WIN-UNDBQ49VK01: FtpHome/ - Directory Browsing desabilitado

PS C:\Middleware>