IIS 6.0 확장자 파싱 취약점 > 기술자료 | 해피정닷컴

IIS 6.0 확장자 파싱 취약점 > 기술자료

본문 바로가기

사이트 내 전체검색

IIS 6.0 확장자 파싱 취약점 > 기술자료

WindowsServer IIS 6.0 확장자 파싱 취약점

페이지 정보


본문

 Microsoft IIS 5.0, 6.0 확장자 파싱 취약점이란?
Microsoft IIS 5.0, 6.0에서 확장자가 비정상적인 웹 페이지 요청시 제대로 파싱을 하지 못해 웹 스크립트로 동작하는 취약점이 존재 합니다.
 
 취약버전
Microsoft IIS 5.0, 6.0
 
 원인
세미콜론(;)을 포함한 웹페이지 요청시 파싱 대상이 세미콜론(;) 앞쪽만 인식하여 웹스크립트로 동작함
Microsoft IIS 5.0, 6.0의 asp.dll을 파서로 사용하는 확장자에 한해서 해당 취약점이 존재함
파일 업로드 시 필터링을 우회하여 악성파일 실행이 가능함
 
 대응 방안
기존 파일 업로드 보안권고문의 경우 파일 업로드 확장자 필터링은 jpg, hwp,pdf등 사용하는 확장자만 업로드 가능하도록 권고하고 있지만 해당 취약점을 이용 할경우 확장자 필터인 우회가 가능함으로 확장자 검사가 아닌 파일명 전체에 대한 검사를 통해서 필터링을 강화 해야함
파일 업로드 시 파일명에 세미콜론(;)이 필요 하지 않다면 파일명 검사 시 세미콜론(;)에 대한 필터링을 적용함
업로드 파일을 위한 데렉토리에는 실행 권한을 제거 해야 하며 업로드 된 파일이름을 임의로 변경하여 저장해야 함
첨부파일에 대한 검사는 반드시 Server side Script에서 구현해야 함
정식 Patch 발표 시 즉시 업데이트
안정한 코딩 예(ASP)
<%
Set Up = Server.CreateObject("SiteGalaxyUpload.Form")
Path1 = server.mappath(".") & "\upload\"

Fname = Up("file1")

if Fname <> "" then // 파일 첨부가 되었으면
if Up("file1").Size > 10240 then // 용량제한
Response.Write "용량초과"
Response.End
end if

if Up("file1").MimeType <> "image" then // 이미지 업로드 허용
Response.Write "이미지 파일이 아닙니다."
Response.End
end if
Filename=Mid(Fname,InstrRev(Fname,"\")+1) // 파일이름부분 추출

// 파일이름에서 세미콜론(;)이 존재하는지 검사한다
if NOT(InStr(Filename,";" ) Then
response.write "<script>alert(`업로드 금지 파일입니다`);history.back()</script>"
response.End
End if


// 중복시에 파일이름 부분을 변경하기 위해 분리를 한다
Farry=split(Filename,".") // .을 기준으로 분리
preFname=Farry(0) // 파일이름 앞부분

extFname=Farry(UBound(Farry)) // 파일이름의 마지막 확장자
// 파일이름의 마지막 확장자를 검사한다
if (NOT(extFname <> "jpg") or (extFname <> "hwp") or (extFname <> "pdf")) then
response.write "업로드 금지 파일 입니다"
response.End
End If

// 저장할 전체 path를 만든다, 파일이름을 만든다
Path2 = Path1 & Filename
saveFname=preFname & "." & extFname

Set fso = CreateObject("Scripting.FileSystemObject")
countNo = 0 // 파일 중복될경우 셋팅 값
fExist=0 // 같은 이름의 파일 존재 체크
Do until fExist = 1
If(fso.FileExists(Path2)) Then
countNo = countNo + 1
Path2 = Path1 & preFname & countNo & "." & extFname
saveFname=preFname & countNo & "." & extFname
else
fExist=1
End If
Loop

Up("file1").SaveAs(Path2)
response.write(saveFname & "저장완료")
else
response.write("Error")
end if

Set Up = nothing
%>


자료출처
http://hosting.whois.co.kr/board/view.php?ch=&id=notice&no=94645

댓글목록

등록된 댓글이 없습니다.


Total 2,640건 44 페이지
  • RSS
기술자료 목록
1780
XpressEngine   13869  2016-03-10 22:31  
1779
ClassicASP   22994  2016-03-09 22:31  
1778
호스팅   13892  2016-03-07 10:42 ~ 2017-09-21 00:00  
1777
Editor   15729  2016-03-03 17:30 ~ 2021-05-21 19:26  
1776
Editor   14632  2016-03-03 14:54  
1775
Editor   19616  2016-03-03 14:51  
1774
그누보드   12498  2016-03-03 13:28  
열람
WindowsServer   15477  2016-02-29 18:25  
1772
ClassicASP   17893  2016-02-25 08:45  
1771
ClassicASP   13653  2016-02-25 01:04  
1770
ClassicASP   19586  2016-02-25 00:52 ~ 2017-01-13 00:00  
1769
ClassicASP   15242  2016-02-25 00:48  
1768
ClassicASP   17765  2016-02-25 00:16 ~ 2016-02-26 00:00  
1767
WindowsServer   11945  2016-02-24 21:32  
1766
HTML   17568  2016-02-21 06:31  
1765
HTML   39035  2016-02-21 00:58 ~ 2016-02-21 00:00  
1764
일반   10189  2016-02-19 17:54  
1763
일반   10883  2016-02-19 17:32  
1762
HTML   14886  2016-02-19 16:59  
1761
Android   12180  2016-02-17 20:05  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.