김승겸 한남대학교 컴퓨터공학과 인공지능 실험실

Slides:



Advertisements
Similar presentations
온누리교회 일대일 사역팀. CONTENTS 1. 예수님의 공생애 사역 2. 죄의 기원과 죄의 결과 3. 죄 문제의 해결 I. 예수님의 부활은 그리스도의 죽음과 함께 기독교 II. 인간은 하나님 앞에 모두 죄인이다. III. 따라서 나도 죄인이라는 사실을 깨달아야 한다.
Advertisements

지하철택배보관함 서비스 제안서 서울시 중구 광희동 1 가 86-2 동대문운동장역 (5 호선 )B1 Tel : Fax : ㈜보스크.
도로 ( 터널 ) 개설 제안서 제안자 : 구 효 서 연락처 : ( 대 ) (fax)
서울혁신기획관 익명성과 인간소외 심화, 공동체 해체 … 시민의 행복지수와 삶의 질 하락 … 2 I. 왜 … 마을공동체인가 ! 1.
2009 년 행정안전부 공직설명회 년 행정안전부 공직설명회 2 목 차 I. 개 요 II. 기능직 개편원칙 III. 정보통신현업 개편방안 IV. 주요 이슈.
2013 년 조사연구위원회 위촉식 및 활동 설명회 2013 년 조사연구위원회 위촉식 및 활동 설명회
E-article DB 이용안내 Copyright©2014 by 학술교육원. All rights reserved.
건강새마을 조성사업 주민 참여 모니터링 강 민 정.
Chapter 02. 웹에 대한 이해. Chapter 02. 웹에 대한 이해 웹의 역사 HTTP 웹 애플리케이션 기술.
목 차 I 방위산업의 정의 II 방위산업의 특성 III 방위산업의 현황.
1월 월간업무보고 경 리 부.
본인확인 서비스 제안서 CB 마케팅의 이해 한국신용평가정보 실명확인 서비스 안심실명확인 서비스 한국신용평가정보
자원봉사의 이론과 실제 경북대학교 사회복지학과 박석돈 교수
“힘들게 PC에 프로그램을 깔 필요가 있겠습니까?”
목 차 I 퇴직연금의 필요성 II 퇴직급여제도 종류 퇴직연금제도 도입배경 III IV 과학기술인 퇴직연금 개요 V
홍보출판 위원회 출판국 2010년 사역 계획서 발표자 : 출판국 국장 / 박수만권사 일시: 2010년 01월 17일(일) 1.
영호남 공동발전을 위한 학술문화 교류사업 보고
서울특별시 중구 통일로 10 연세재단세브란스빌딩
역대 정부개편의 교훈과 새로운 정부조직개편의 방향
김 상 국, 김 기 훈 한남대학교 컴퓨터공학과 데이터베이스 실험실
기록관리 업무담당자 교육 2017년 경상북도문경교육지원청.
발주시스템 Process 1.  ‘발주시스템 Manual’ 검토 후 회원가입 ( 홈페이지 주소 : )
웹 해킹 기초와 실습.
김종찬 김정석 이상미 임성규 담당 교수님 최병수 교수님
체위변경과 이동 요양보호 강사 : 이윤희.
프로그램 사용 안내서 프로그램명 : 멤버북.
Chapter 32 Analyzing Web Traffic
서버의 종류와 기능 환경공학과 권진희.
동호회 구축 제안서 인터넷전문가그룹 4biz.
ASP 정 보 보 호 학 과 양 계 탁.
박 명 호 한남대학교 컴퓨터공학과 인공지능 실험실
게시판이용자의 본인확인 - 제한적 본인확인제
HTML5를 이용한 모바일 웹 앱 학과:컴퓨터 시뮬레이션 학과 학번: / 이름:이성진 / 정지영.
인터넷 보안 정보 보안 개론 5장.
KORUS업무포털 사용자등록 및 로그인 가이드
지역맞춤형 일자리창출 사업 기관 평가
Visual c++ 이용한 영상처리 5조 과정 : 시스템제어 조장 : 김 신 호 조원 : 주강수, 유성민, 남민호
올바른 이메일 사용법
2016학년도 학교평가 안내 충청북도교육청 (기획관).
Web site 제작 제안서 대리점 홍보 및 쇼핑몰 사이트 ㈜ 모비즌닷컴.
Web Vulnerabilities 정보 보호 2008/05/31 Getroot.
CGI (Common Gateway Interface)
대촌중 최영미.
물류단지 총량제 폐지 이후 물류시설 공급정책 방향 국 토 교 통 부.
신 윤 호 ㈜엘림에듀 초등사업본부장, 중앙대학교 체육학박사
// 과제명 기재 미래융합서비스 모델개발 아이디어 제안서 – // 기업명 기재
CGI (Common Gateway Interface)
Cyber Shopping Mall 구축 - CD New - 안소연,박지윤,박종봉,정영은.
“Clean Privacy Information Protection”을 위한 심평원의 사례
지방공무원 임용시험 위탁 및 공동추진 충청북도교육청 (목) 총무과 교육행정 6급 안 병 대
전자세금계산서 Guide Book.
대박콜 전국화물 퀵서비스 회사소개서 (기업 퀵서비스,택배,문서수발).
실전 프로젝트: 홈페이지 구축 시트콤 프렌즈 팬 사이트 구축하기.
KORUS업무포털 사용자등록 및 로그인 가이드
연구개발비 종합관리시스템 이용안내 ( 연 구 비 카 드 제 )
1월 KB손해보험 설계사 시상 I. 설맞이 2017년 Good Start 상품시상 II. A군 FC 주차시상 5만원↑
제 17 장 MVC 모델과 구현 학기 인터넷비즈니스과 강 환수 교수.
3D ONLINE PLAMODEL PRODUCTION
존 듀이의 경험교육론에 기초한 초등학교 체험활동 특징에 관한 연구
주요공지로 정할 글을 올립니다. 제목과 주소를 복사해둡니다
제9주 예산 수립과 집행.
중등학생평가연수 (중학교) 일시 : (목) 10:00 장소 : 부산교육연구정보원 ㅣ중등교육과 ㅣ
V2.3 교육비 원클릭 신청 시스템 매뉴얼.
양초 한 자루의 과학 과학영재교육 전공 김 연 주 류 은 희 이 상 희.
KORUS업무포털 사용자등록 및 로그인 가이드
교육행정 및 교육경영 제 5장. 교육행정 조직의 실제 체육교육 이학재.
2019년 헤럴드경제 자본시장대상(안) 2019년 3월 헤럴드경제 IB금융섹션.
국제금융의 이해 I. 경제와 금융 II. 국제금융과 무역 III. 글로벌화와 국제금융 IV. 국제금융의 형태
접수번호 : MWC 2015 한국공동관 참가 지원서 - 프로젝트명(서비스/콘텐츠) : 업 체 명 :
우울증 예방 관리 강사 :.
Presentation transcript:

김승겸 한남대학교 컴퓨터공학과 인공지능 실험실 [Hacking Exposed] 웹 기획. 운영자를 위한 해킹과 보안중에서 8장. 입력 확인 공격 김승겸 한남대학교 컴퓨터공학과 인공지능 실험실

목차 Part I : 입력 확인 공격이란? Part II : 클라이언트-측 확인 루틴 우회 Part III : 일반적인 입력 확인 공격 Part IV : 일반적인 대응방법 Part V : 참고문헌

Part I : 입력 확인 공격이란?

정의 입력 확인 공격이란? 애플리케이션이 받아들일 수 없도록 되어 있는 데이터를 전송하려고 하는 시도 정상적인 데이터 전송 정상적인 사용자 비정상적인 데이터 전송 피해 서버 악의적인 사용자

입력 확인 공격 유형 예상하지 못한 입력 명령 실행 문자 버퍼 오버플로우

Part 2 : 클라이언트-측 확인 루틴 우회

자바스크립트 입력 확인을 수행하는 스크립트 자바스크립트는 서버에서 입력확인을 하기 위해서 작성 클라이언트측의 웹 브라우저에서 실행 브라우저에서 실행된다는 측면에서 안전하지 않다. 자바스크립트 확인 루틴 우회가능

아킬레스 Proxy server 역할을 수행 전형적인 HTTP proxy는 client browser와 web server사이에서 패킷을 중계한다. 아킬레스 또한 패킷을 중계하지만, 중계과정에서 intercept mode를 켜놓게 되면 패킷에 대한 변경이 가능하다. 웹 서버에서 브라우저, 브라우저에서 웹 서버로 가는 패킷은 아킬레스 proxy를 거치게 되고 그 패킷은 사용자에 의해서 변경할 수 있다.

아킬레스 패 킷 패 킷 Intercept mode를 켜놓고 아킬레스를 통과하는 패킷을 변경할 수 있다. 아킬레스 0.27 웹 브라우저 웹 서버

아킬레스 회원가입폼 간단하게 작성한 회원가입폼 각 폼필드의 내용은 post방식으로 서버에 전송 아킬레스를 사용하여 전송되는 패킷 내용을 볼 수 있고 수정이 가능하다.

아킬레스 아킬레스를 통해 본 패킷 내용 HTTP 헤더 내용 전송되는 데이터

아킬레스 아킬레스를 이용한 패킷 데이터 변조 post 방식으로 전송되는 데이터 변조 email과 phone필드 변경

아킬레스 변경된 데이터가 저장된 테이블 email과 phone에 저장된 내용 실제로 데이터베이스 테이블에 저장된 필드를 보면 바뀐 내용이 들어간 걸 알 수 있다.

아킬레스 로그인 아이디와 비밀번호를 입력하고 login버튼을 누르게 되면 아킬레스를 거쳐 패킷이 전송되고 웹서버에서는 다시 웹브라우저로 패킷을 전송하게 되는데 그 패킷 또한 아킬레스에서 볼수 있고 수정할 수 있다.

아킬레스 아킬레스를 이용한 패킷 데이터 변조 로그인 한 후에 main.php가 웹 브라우저에 나타나야 하지만 아킬레스를 로그인후에 웹서버 가 보내는 패킷내용 원본 패킷 수정된 패킷 로그인 한 후에 main.php가 웹 브라우저에 나타나야 하지만 아킬레스를 통해 링크를 수정할 수 있다.

Part 3 : 일반적인 입력 확인 공격

버퍼 오버플로 정의 정해진 STACK영역의 크기를 초과해서 데이터 삽입 즉, 함수의 실행후에 돌아올 리턴어드레스가 변경 이경우, 돌아올 주소에 임의의 명령어를 놓아들 경우에 해커가 원하는 명령어를 실행할수 있게 된다.

버퍼 오버플로 Perl을 이용한 버퍼 오버플로 테스트 perl –e ‘print “a” x 500’ echo –e “GET /login.php?user=faustus\nHTTP/1.0\n\n” | nc –vv www.victim.com 80 “GET /login.php?user=faustus\nHTTP/1.0\n\n”을 표준입력으로 받아서 netcat을 이용하여 www.victim.com의 80번포트, 웹서버로 전송하고 웹서버는 표준입력으로 받은 데이터를 표준출력으로 내보낸다.(정상적인 요청) echo –e “GET/login.php?user=`perl –e ‘print “a” x500’ \nHTTP/1.0\n\n | nc –vv www.wictim.com 80 login.php의 user에 faustus를 넣는 대신에 perl구문을 통하여 문자 a 500개를 전송한다 문자 500개를 보내는 과정에서 아무런 오류없이 500개의 문자가 받아들여진다면 버퍼오버플로의 취약성이 있다.

버퍼 오버플로 Perl을 이용한 버퍼 오버플로 테스트 perl을 이용하여 phone필드에 f문자 500개를 보낸다. info테이블에서 phone필드에 ‘f’가 15개 저장되어 있는걸 알 수 있다. 나머지 485개의 문자는 메모리의 어느부분엔가 들어가 있다고 추측을 할 수 있다.

동작을 위한 점 삽입 존재하지 않는 파일을 요구 $./getit.sh www.victim.com /servlet/webacc?user.html=login.htt Webacc 서블릿이 login.htt파일을 파라미터로 취하고 있다. $./getit.sh www.victim.com /servlet/webacc?user.html=gor-gor 존재하지 않는 gor-gor이란 데이터를 요구한다. getit.sh스크립트는 4장에서 보았듯이 netcat을 이용하여 GET형식으로 데이터를 웹서버의 80번포트에 전달하고 그 결과를 표준출력으로 받는다. 존재하지 않는 데이터를 요구하였기 때문에 오류를 표준출력으로 보여준다. ./getit.sh www.victim.com /servlet/webacc?user.html=gor-gor File does not exist: c:\Novell\java\servlets\com\novell\webaccess\templates/gor-gor/login.htt Cannot load file:c:\Novell\java\servlets\com\novell\webaccess\templates/ gor-gor/login.htt 이 오류에서 애플리케이션의 전체경로를 알수 있고 추가로 login.htt파일이 디폴트로 첨부되는 것을 알수 있다.

동작을 위한 점 삽입 ../를 이용하여 boot.ini파일 내용보기 ./getit.sh www.victim.com \ > /servlet/webacc?user.html=../../../../../../../boot.ini%00 [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(5)\WINNT C:\BOOTSECT>BSD=“OpenBSD” . . . . . . . . . . . . . . . . . . . . . . . . . User.html에 %00을 연결 %00은 널문자로 URL의 인코딩된 형태로써 웹서버는 ../../~~~boot.ini%00 전부를 서블릿엔진에 전달하고 %00은 널값이기 때문에 서블릿엔진은 아무값도 없는것으로 간주기 때문에 오류가 나지않고 디폴트로 login.htt를 뒤에 덧붙이게 되고 운영체제함수로 스트링을 전달한다. 하지만 운영체는 %00이후의 것들을 무시하기 때문에 ../../../../../../../boot.ini로 간주하고 이것은 netcat의 표준입력으로 들어가게 되고 boot.ini파일의 내용이 표준출력으로 나타난다.

동작을 위한 점 삽입 %00을 이용하여 /etc/passwd파일 보기 perl로 만들어진 way-board의 취약성 cgi-bin/way-board/way-board.cgi?db=Free db에는 기본적으로 Free라는 디렉토리 이름이 들어가게 되고 그 하위 디렉토리에서 설정파일을 읽어서 cgi에 전달하게 된다. Free 대신 db에 ../../../../../../etc/passwd%00를 대입 “../~~../etc/passwd%00/설정파일”이 전달되지만 %00이후 무시 /etc/passwd 파일 내용 볼수 있다.

동작을 위한 점 삽입 %00을 이용하여 /etc/passwd파일 보기

스크립트 공격 크로스-사이트 스크립팅 신뢰되지 않은 공격자로부터 웹서버가 데이터를 받아 이를 다른 사용자 어플리케이션에 넘겨주게 되는데, 이 데이터로 인해서 사용자의 어플리케이션(웹브라우저)에 피해를 줄수 있다. 악성스크립트 전송 공격자 웹 서버 악성스크립트에 의해 피해 입음 피해자

스크립트 공격 크로스-사이트 스크립팅 크로스-사이트 스크립팅은 사용자가 데이터를 넣을 수 있는 사이트에 잠재적인 위험이 있다. 찾고자 하는 키워드를 입력하는 검색 엔진 E-mail, 채팅 방, 웹 게시판 사용자가 입력하는 폼 필드 HTTP “GET” method

스크립트 공격 www.lycos.co.kr 검색엔진 검색엔진에서 키워드에 자바스크립트를 넣는다. search버튼을 누르게 되면 스크립트가 실행되는 것을 볼수 있다. 스크립트에 대한 필터링이 없는 것을 확인할 수 있고 취약성이 존재한다고 볼수 있다.

스크립트 공격 간단한 예제 게시판에 10000개의 경고메시지를 띄우는 스크립트를 올린다. 게시판 글을 읽는 순간 그 사람의 웹 브라우저에는 10000개의 경고창이 계속 띄어진다.

스크립트 공격 내장 스크립트 css공격은 애플리케이션의 다른 사용자를 대상으로 삼지만 내장스크립트 공격은 애플리케이션 자체를 대상으로 삼는다. 명령을 실행하거나 HTML출력을 엉망으로 만든다. 악성 스크립트를 전송함 으로써 웹서버에 직접 피 해를 준다. 공격자 웹 서버

스크립트 공격 내장 스크립트 hack.php <? Include ‘/etc/passwd’ ?>; passthru(“/sbin/ifconfig –a”); ?> hack.php 을 작성한후 게시판에 파일을 업로드하여 게시판내용에서 hack.php를 클릭한다. hack.php가 실행되면서 /etc/passwd파일의 내용이 출력되고 /sbin/ifconfig –a 명령어가 실행된다.

스크립트 공격 내장 스크립트 hack.php의 /etc/passwd와 /sbin/ifconfig –a 가 실행된 화면을 볼수 있다.

스크립트 공격 대응 방법 사용자 측면 웹 서버 관리자 측면 브라우저에서 스크립트 기능의 해제 링크가 아닌 직접 주소창에서 주소 입력 신뢰되지 않는 싸이트의 폼에 데이터 입력할때 주의 부적절한 확장자를 갖는 파일 업로드 금지 웹 서버 관리자 측면 웹 서버 패치 특수문자 필터링 ( <, >, “, ), (, &, +, - )

명령 실행 뉴라인(Newline)문자 return의 의미로 새로운 행으로 가라는 의미이다. URL상에서 %0a로 인코드 된다. URL/analyze.sh?-h+24&-I 임의의 변수들이 스크립트로 전달될 수 있는지 테스트 URL/analyze.sh?-h%0a/bin/ls%0a %0a를 이용하여 서버에 있는 디렉토리 목록을 반환한다.

명령 실행 Test.php 파일 내용 : <? echo `$id` ?> $id에 저장된 스트링을 `를 이용하여 스트링의 의미를 없애주고 echo명령을 이용하여 출력해준다. 변수 id에 전달된 /bin/ls%0adate는 디렉토리 목록을 반환하고 %0a는 뉴라인 즉, 엔터와 같은 의미를 가지게 되서 date란 명령을 실행하여 날짜를 출력해준다.

명령 실행 Test.php 파이프문자(%7c), 세미콜론(%3b), 스페이스(%20)을 이용한 명령 실행 /bin/ls;/bin/ls|grep main (id로 넘겨져 리눅스에서 실행되는 명령)

Part IV : 일반적인 대응 방법

일반적인 대응 방법 서버-측 입력 확인 문자 인코딩 정규 표현 강력한 데이터 타이핑 적절한 오류처리 인증 요청 사용자 최소-권한 접근

Part V : 참고문헌 웹 해킹 공격과 방어, 피어슨 에듀케이션 코리아 Perl 제대로 배우기, O’REILLY http://www.securitytechnet.com http://www.cert.org/archive/pdf/cross_site_scripting.pdf http://www.spidynamics.com/whitepapers/SPIcross-sitescripting.pdf

Part VI : Q & A