3학년/인터넷 보안(웹 해킹)

웹 보안_Chapter05 - 웹 해킹

김야키 2018. 12. 24. 17:04

Chapter05 - 웹 해킹


1.     웹 언어

l  HTML(Hyper Text Markup Language)

-       정적(Static)인 웹 페이지 전송

-       클라이언트의 웹 브라우저를 통해 웹 서버의 무엇인가를 바꿀 수 있는 가능성이 매우 낮기 때문에 웹을 이용한 공격이 매우 어려움

-       클라이언트에서 처리 됨

l  CSS(Client Side Script)

-       자바 스크립트(JavaScript)나 비주얼 베이직 스크립트 등과 같이 웹 서비스에 이용되는 스크립트

ü  서버가 아닌 클라이언트 측의 웹 브라우저에 의해 해석/적용됨

ü  클라이언트 스크립트(JS)를 작성

ü  클라이언트가 웹 페이지에 포함된 스크립트 파일 요청

ü  웹 서버가 해당 스크립트 파일 검색

ü  해당 스크립트 파일을 브라우저에 반환

ü  브라우저가 클라이언트측 스크립트를 처리

l  SSS(Server Side Script)

-       ASP(Active Server Page), JSP(Java Script Pages)와 같은 동적인 페이지를 제공하는 스크립트

-       ASP또는 JSP의 확장자를 가진 웹 문서를 요청한다.

ü  클라이언트가 웹 페이지(html) 요청

ü  웹 서버가 html파일 검색

ü  웹 서버가 스크립트 엔진에게 요청하여 스크립트와 일반 HTML페이지를 생성

ü  HTML스트림이 브라우저에 반환

ü  브라우저가 HTML을 처리

-       요청이 왔을 때 서버 측에서 해석이 되어서 클라이언트에 응답을 해 줌

ü  HTML위에 JSP 또는 ASP 스크립트를 올려서 보내 줌


2.     웹 사이트 정보 수집

l  웹 사이트 정보를 수집하기 위한 방법

-       검색을 이용하여 정보 수집

-       웹 프록시의 이용

-       구글 해킹

-       파일 접근

l  웹 프록시 이용

-       프록시(우회 접속)

ü  클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터나 응용 프로그램

-       웹 해킹에 사용되는 프록시 툴 - Paros

ü  프록시가 가능한 웹 페이지를 보여 줌

 

3.     개인 프록시: Paros

l  웹 변조를 가능하게 해주는 강력한 도구

-       웹에서 주고 받는 필드 값을 수정하여 주거나 받을 수 있음

-       자바 스크립트 제한이나 입력 값 등의 제한을 우회할 때에도 많이 이용되고, 서버로부터 받는 값을 수정할 때도 종종 이용할 수 있음

l  Web Browser에서 보내는 Request, Response를 조작하거나 임의로 패킷을 만들어 보낼 수 있음

 

4.     구글을 이용한 해킹

l  검색 인자를 이용한 검색 기능

-       site: 특정 도메인으로 지정한 사이트에서 검색하려는 문자열이 포함된 사이트를 찾음

-       filetype: 파일 유형에 한해서 검색하는 문자가 들어 있는 사이트를 찾음

-       link: 링크 로서 검색하는 문자가 들어 있는 사이트를 찾음

-       cache: 특정 검색어에 해당하는 캐시된 페이지를 보여줌

ü  검색 엔진에 의해 백업된 데이터에 취약점 정보 노출될 수 있음

ü  노출되면 안되는 정보가 백업되어 있을 경우에는 삭제를 요청

-       intitle: 페이지의 제목에 검색하는 문자가 들어 있는 사이트를 찾음

-       inurl: 페이지의 URL에 검색하는 문자가 들어 있는 사이트를 찾음

 


 5.     검색 엔진의 검색을 피하는 방법(크롤링)

l  robots.txt의 용도

-       일반적으로 검색봇이 크롤링하지 않았으면 하는 페이지는 차단하고(관리자 페이지등), 필요한 부분만 검색 결과에 노출을 허용하는 설정


l  크롤링과 인덱싱의 차이

-       크롤링은 페이지의 모든 정보를 가져오는 것, 인덱싱은 특정 키워드에 해당하는 부분만 정보를 가져온다.

-       크롤링 제어는 robots.txt

-       인덱싱 제어는 <meta name=”robots” content=”noindex, nofollow”>같은 메타 로봇 태그를 사용해서 제어


6.     크롤링을 제어하는 방법

l  문서를 크롤릭 차단

User-agent: *

Disallow: /


l  문서를 허용

User-agent: *

Disallow:


l  특정 폴더만을 차단

User-agent: *

Disallow: /members/

Disallow: /search/

Disallow: /images/


l  특정 검색엔진만 크롤러를 차단(구글만 차단)

User-agent: Googlebot

Disallow: /


l  특정 검색엔진만 크롤러를 허용(구글만 허용)

User-agent: Google

Disallow:

User-agent: *

Disallow: /


l  특정 페이지를 차단

User-agent: *

Disallow: /members/personal_info.html


l  robots.txt파일에 사이트맵 명식

User-agent: *

Disallow:

Sitemap: http://www.seo-korea.com/sitemap.xml


 

7.     디렉터리 리스팅(Directory listing)

l  URL(도메인 네임 + 디렉터리 경로)를 입력했을 때 해당 디렉터리 내의 모든 항목을 브라우저에 보여주는 기능


l  웹 브라우저에서 웹 서버의 특정 디렉터리를 열면

-       그 디렉터리에 있는 파일과 디렉터리 목록이 모두 나열되는 것


l  화면에 보이지 않는 여러 웹 페이지를 클릭 하나만으로도 직접 접근할 수 있음

 

8.     Directory listing 공격 패턴

l  자동화 툴 이용: 웹 퍼징(Web Fuzzing)

-       비 정상적인 데이터를 애플리케이션에 전달하여 에러를 유도하는 방법을 퍼징이라 말함

-       웹 사이트에서 추측을 통해서 알아낼 수 있는 페이지들을 자동으로 찾아주는 역할을 해 줌

-       Directory listing을 자동으로 여러 페이지를 해 주는 것


l  DirBuster

-       /애플리케이션상의 숨겨진 파일이나 디렉터리들을 브루트포스(Brute Force) 방식으로 검출해 공격 팩터를 찾는 멀티 스레드 자바 애플리케이션

ü  브루트포스: 정해진 파일 명이 아닌 랜덤으로 산출 해 낸 명칭을 자동으로 변경 해 가는 것

ü  무차별 대입 공격

-       단점

ü  자원을 많이 사용하는 것이 가장 큰 문제

ü  문제가 조금만 복잡 해 지면 매우 비 효율적으로 변함


l  브루트포스(Brute Force)공격을 막기 위한 방법

-       ID/비밀번호 입력 횟수 제한

-       패스워드의 정보를 여러 문자로 만들게 한다.

 

9.     Directory listing 실습 (DirBuster)

l  http://localhost:8080/Term_project/ - 공격 웹 페이지(실제 제작한 페이지)

-       실제 공격 할 페이지 생성

-       JSP로 생성된 페이지

-       Web Container로 Tomcat를 사용

-       DirBuster에서 제공 되는 키워드 리스트 사용

     

< DirBuster 실행 화면 >                                                        < DirBuster를 사용할 Web Page 설정 >


< 실행 중인 화면 >



       

< 실제 파일 리스트 >                                                        < DirBuster로 찾아낸 파일 리스트 >