보안 업데이트 887219(MS05-004)를 설치한 후 ASP.NET 응용 프로그램을 탐색하거나 디버깅하면 오류 메시지가 나타날 수 있다

요약

보안 업데이트 MS05-004를 설치한 후 일부 ASP.NET 응용 프로그램을 탐색하거나 디버깅하려고 하면 오류가 발생할 수 있습니다. 이 문서에서는 나타날 수 있는 몇 가지 오류 메시지에 대해 설명하고 이러한 문제를 해결하는 방법을 제공합니다.

현상

보안 업데이트 MS05-004를 설치한 후 URL에 후행 백슬래시(\)가 포함된 Microsoft ASP.NET 응용 프로그램을 디버깅하면 다음과 유사한 오류 메시지 중 하나가 나타날 수 있습니다.
리소스를 찾을 수 없습니다.
설명: HTTP 404. 찾고 있는 리소스 또는 해당 리소스에 종속되어 있는 리소스 중의 하나가 제거되었거나 이름이 변경되었거나, 일시적으로 사용할 수 없습니다. 아래 URL의 철자가 정확한지 확인하십시오.

프로젝트를 실행하는 동안 오류가 발생했습니다. 웹 서버에서 디버깅을 시작할 수 없습니다. ASP.NET 또는 ATL 서버 디버깅을 시작할 수 없습니다. 서버에 ASP.NET 또는 ATL 서버가 제대로 설치되어 있는지 확인하십시오.

원인

Microsoft Internet Information Services(IIS) 메타베이스에 지정된 URL에 후행 백슬래시(\)가 포함된 경우 이 문제가 발생합니다.

해결 방법

이 문제를 해결하려면 영향을 받는 웹 응용 프로그램에 대해 지정된 URL의 IIS 메타베이스에서 후행 백슬래시를 제거하십시오. 이렇게 하려면 다음 방법 중 하나를 사용하십시오.

방법 1: IIS 관리자 사용

  1. 시작, 실행을 차례로 누르고
    cmd를 입력한 다음 확인을 누릅니다.
  2. %systemroot%\system32\inetsrv 디렉터리를 찾습니다.
  3. 명령 프롬프트에서 inetmgr을 입력하여 IIS 관리자를 엽니다.
  4. 변경할 URL에 해당하는 웹 사이트를 마우스 오른쪽 단추로 누른 다음 속성을 누릅니다.
  5. 영향을 받는 응용 프로그램이 웹 사이트 아래의 가상 디렉터리인 경우 디렉터리탭을 누른 다음 로컬 경로 텍스트 상자에 지정된 경로에서 후행 백슬래시를 제거합니다.

    영향을 받는 응용 프로그램이 웹 사이트의 루트 디렉터리인 경우 홈 디렉터리 탭을 누른 다음 로컬 경로 텍스트 상자에 지정된 경로에서 후행 백슬래시를 제거합니다.
  6. 적용을 누른 다음 확인을 누릅니다.

방법 2: .vbs 스크립트 사용

  1. 다음과 같은 내용으로 .vbs 스크립트를 만듭니다.
    Option Explicit

    Dim objWebService, objWebSite
    Dim objSite, objArgs, strServer
    Dim WshNetwork

    Set objArgs = WScript.Arguments

    If objArgs.Length = 1 Then
    strServer = objArgs(0)
    ElseIf objArgs.Length = 0 Then
    Set WshNetwork = CreateObject("WScript.Network")
    strServer = WshNetwork.ComputerName
    Else
    WScript.Echo "Usage: CScript ModifyVDir.vbs [servername]"
    WScript.Quit
    End If
    WScript.Echo "Connecting to " & strServer

    Set objWebService = GetObject("IIS://" & strServer & "/W3SVC")

    For Each objWebSite in objWebService
    Set objSite = GetObject(objWebSite.AdsPath)
    If objSite.Class = "IIsWebServer" Then
    WScript.Echo objSite.AdsPath
    EnumVDir objSite, 1
    End If
    Next

    WScript.Echo "Done processing."

    Sub EnumVDir(objVDir, i)
    Dim objSubVDir, objDir
    Dim strNewPath

    For Each objSubVDir in objVDir
    If objSubVDir.Class = "IIsWebVirtualDir" Then
    Set objDir = GetObject(objSubVDir.AdsPath)

    If ((Right(objDir.Path, 1) = "\") and (Right(objDir.Path, 2) <> ":\")) Then
    WScript.Echo Space(i*3) & objDir.AdsPath
    WScript.Echo Space(i*3) & "Path = " & objDir.Path

    strNewPath = Left(objDir.Path, Len(objDir.Path) - 1)
    WScript.Echo Space(i*3) & "New Path = " & strNewPath

    objDir.Put "Path", strNewPath
    objDir.SetInfo
    End If

    EnumVDir objDir, i + 1
    End If
    Next
    End Sub

  2. 명령줄에서 .vbs 스크립트를 실행합니다.
    1. 시작, 실행을 차례로 누르고
      cmd를 입력한 다음 확인을 누릅니다.
    2. 명령 프롬프트에서 cscript [filename.vbs]를 입력합니다.

      참고 filename은 .vbs 스크립트 이름의 자리 표시자입니다.
    3. 명령 프롬프트를 닫으려면 exit를 입력합니다.

추가 정보

이 보안 업데이트를 적용하면 ASP.NET이 실제 경로와 요청된 가상 경로의 유효성에 대해 보다 엄격한 검사를 수행합니다.

참조

MS05-004 보안 업데이트에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
887219 MS05-004: ASP.NET 경로 유효성 검사 취약점으로 인한 무단 액세스 문제





Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.
속성

문서 ID: 894670 - 마지막 검토: 2008. 7. 14. - 수정: 1

피드백