Microsoft 내부 지원 정보
요약
보안 업데이트 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 관리자 사용
-
시작, 실행을 차례로 클릭하고 cmd를 입력한 다음 확인을 클릭합니다.
-
%systemroot%\system32\inetsrv 디렉터리를 찾습니다.
-
명령 프롬프트에서 inetmgr을 입력하여 IIS 관리자를 엽니다.
-
변경을 원하는 URL과 연결된 웹 사이트를 마우스 오른쪽 단추로 누른 다음 속성을 누릅니다.
-
영향을 받는 응용 프로그램이 이 웹사이트 아래의 가상 디렉터리인 경우 디렉터리 탭을 클릭하고, 로컬 경로 텍스트 상자에 지정된 경로에서 백슬래시 를 제거합니다.
영향을 받는 응용 프로그램이 이 웹사이트의 루트 디렉터리인 경우 홈 디렉터리 탭을 클릭하고, 로컬 경로 텍스트 상자에 지정된 경로에서 백슬래시를 제거합니다. -
적용을 클릭한 다음 확인을 클릭합니다.
방법 2: .vbs 스크립트 사용
-
다음 코드 예제를 사용하여 .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 -
명령줄에서 .vbs 스크립트를 실행합니다. 이렇게 하려면 다음과 같이 하십시오.
-
시작, 실행을 차례로 클릭하고 cmd를 입력한 다음 확인을 클릭합니다.
-
명령 프롬프트에
cscript [file_name.vbs].
참고 file_name은 .vbs 스크립트의 이름에 대한 자리 표시자입니다. -
명령 프롬프트를 닫기 위해서는, 나가기를 입력합니다.
-
추가 정보
이 보안 업데이트를 적용한 후, ASP.NET이 실제 경로와 요청된 가상 경로의 유효성에 대해 엄격한 검사를 수행합니다.
참조
MS05-004 업데이트에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 문서를 참조하십시오.
MS05-004: ASP.NET 경로 유효성 검사 취약성으로 인한 무단 액세스 문제