IIS 6.0 확장자 파싱 취약점 > 온라인강의

본문 바로가기
 
 
 
오늘 1,873
어제 2,152
최대 2,454
전체 3,196,786
비즈니스의 시작 비즈명함 ~ 가격, 품질, 배송 3가지 만족을 드리는 비즈명함 / 즉석명함 / 급행서비스 / 서울 전지역 수도권일부 3시간배송

온라인강좌 홈 > 온라인강좌 > 온라인강좌

윈도우서버 | IIS 6.0 확장자 파싱 취약점

페이지 정보

작성일2016-02-29 18:25 조회2,402회 댓글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 56건 1 페이지
온라인강의 목록
번호 제목
56
열람중
54
53
52
51
50
49
윈도우서버 HTTP/1.1 새 세션 실패 (write.2015-03-10)인기글  Hit.4159
48
47
46
45
44
43
윈도우서버 IIS 응용 프로그램 풀 (write.2013-10-02)인기글  Hit.7823
42
41
윈도우서버 [Windows 2012] VPN 설정 (write.2013-05-14)인기글  Hit.7422
40
윈도우서버 [Windows 2008] VPN 설정 (write.2013-05-14)인기글  Hit.4247
39
38
37
36
35
34
33
32
게시물 검색
 
 
상호: 해피정닷컴 대표:정창용 사업자등록번호:119-05-36414 (08394) 서울시 구로구 디지털로 242 한화비즈메트로1차 1502호
전화: 070-7600-3500 팩스:02-865-3528 개인정보관리:정창용 mail@happyjung.com 에스크로확인
개인정보취급방침
COPYRIGHT 2001~2017 해피정닷컴. All rights reserved. 부가통신사업신고:서울체신청-1217 통신판매신고:2014-서울구로-0074
 
모바일 버전으로 보기