보안 업데이트 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 IIS(인터넷 정보 서비스: Internet Information Services) 메타 베이스에 지정된 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 [file_name.vbs]
      .

      참고 file_name은 .vbs 스크립트의 이름에 대한 자리 표시자입니다.
    3. 명령 프롬프트를 닫기 위해서는, 나가기를 입력합니다.

추가 정보


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

참조


MS05-004 업데이트에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 문서를 참조하십시오.

887219 MS05-004: ASP.NET 경로 유효성 검사 취약성으로 인한 무단 액세스 문제