INTRODUCTION • 웹 해킹 스터디 OT
웹 해킹
• 웹으로 제공되는 프로그램을 해킹
• 웹?
• World Wide Web(WWW, W3)의 준말
• 세상의 크기만한 거미줄
• 웹 사이트가 있고, 이는 웹 페이지로 이루어 짐
• 링크로 연결
• 인터넷에서 HTTP 프로토콜, 하이퍼텍스트, HTML형식 등을 사용하여 데이터를 교환하는 전송방식을 의미하기도
웹
<웹 서버> <웹 어플리케이션 서버> <데이터베이스>
<Server>
입력
출력
<Client>
<사용자> <웹 브라우저>
Request
Response
Internet
웹
<웹 서버> <웹 어플리케이션 서버> <데이터베이스>
<Server>
입력
출력
<Client>
<사용자> <웹 브라우저>
Request
Response
Internet
• Internet을 기반으로 함
• TCP/IP 프로토콜을 이용해 정보를
주고받는 컴퓨터 네트워크
• 웹은 기본적으로 HTTP 프로토콜 이용
• 웹 해킹을 위해서는 HTTP는 필수 지식
• 네트워크 특징으로 인한 공격 기법도 있음
• ex) SYN flooding
• ->이 부분은 당장 다루지는 않을 것
웹
• 사용자가 누구인지 기억해야 함
• 로그인, 인증
• 세션
• 인증한 권한에 따라 통제
• 접근 통제
• 사용 기술
• 쿠키
• 토큰
• 취약점
• 쿠키, 토큰 알아냄 -> 다른 사용자인 척
• 원래 없던 권한을 얻음
<웹 서버> <웹 어플리케이션 서버> <데이터베이스>
<Server>
입력
출력
<Client>
<사용자> <웹 브라우저>
Request
Response
Internet
웹
<웹 서버> <웹 어플리케이션 서버> <데이터베이스>
<Server>
입력
출력
<Client>
<사용자> <웹 브라우저>
Request
Response
Internet
• HTTP 메시지를 처리
• Client에게 Response를 넘김
• 취약점
• 프로토콜 자체의 취약점
• 웹서버 보안 설정이 잘못되어 취약점
웹
<웹 서버> <웹 어플리케이션 서버> <데이터베이스>
<Server>
입력
출력
<Client>
<사용자> <웹 브라우저>
Request
Response
Internet• 동적인 페이지를 처리
• 사용자 입력 처리
• 프로그램의 로직이 들어갈 곳
• -> 많은 취약점 생성
• DB 등 다른 백엔드 컴포넌트와 협업
• 취약점
• 프로그램 로직 자체
• 허술한 구현으로 취약점 생성
• 검증되지 않은 값을 다른 컴포넌트에게
넘겨 방어하지 못 함
웹
• DB
• 데이터를 체계적으로 저장하기 위해 이용
• SQL을 이용하여 DB 이용
• 취약점
• SQL injection
• DB를 보거나 조작
<웹 서버> <웹 어플리케이션 서버> <데이터베이스>
<Server>
입력
출력
<Client>
<사용자> <웹 브라우저>
Request
Response
Internet
앞으로 공부할 것
• 네트워크 이론
• Application / Transport / Network 계층 중심
• HTTP, DNS, TCP/IP, DHCP
• 라우팅 기본 원리
• 네트워크 프로그래밍
• TCP/IP를 이용한 간단한 프로그래밍
• 웹 기본 지식
• 프론트엔드 관련 : HTML, CSS, JavaScript
• 백엔드 관련 : PHP, SQL, (JAVA, python, ......)
• PHP가 점유율이 높아서.. 웹 해킹 문제로 자주 보여서...
• 암호화, 인코딩
• 대칭키와 비대칭키 암호 개념
• 자주 쓰이는 암호, 인코딩
• 웹 취약점과 해킹 기법
• 어플리케이션 지도 작성 / 클라이언트 측 통제 우회 / 인증 무력화 / 세션 관리 공격 / 접근 통제 공격 / 데이터 저장소 공격 / 백엔드 컴포넌트 공격 / 애플리케이션 로직 공격
/ 사용자 공격 : XSS / 기타 공격 / ......
• 공격 방법론에 따른 실습
• 실제 웹 페이지를 공격하는 일반적인 절차에 따라 실습
• 위의 공격 방식들을 적절히 사용하여 실제 해킹에 적용하기 위한 정리
교재

Web hacking introduction

  • 1.
    INTRODUCTION • 웹해킹 스터디 OT
  • 2.
    웹 해킹 • 웹으로제공되는 프로그램을 해킹 • 웹? • World Wide Web(WWW, W3)의 준말 • 세상의 크기만한 거미줄 • 웹 사이트가 있고, 이는 웹 페이지로 이루어 짐 • 링크로 연결 • 인터넷에서 HTTP 프로토콜, 하이퍼텍스트, HTML형식 등을 사용하여 데이터를 교환하는 전송방식을 의미하기도
  • 3.
    웹 <웹 서버> <웹어플리케이션 서버> <데이터베이스> <Server> 입력 출력 <Client> <사용자> <웹 브라우저> Request Response Internet
  • 4.
    웹 <웹 서버> <웹어플리케이션 서버> <데이터베이스> <Server> 입력 출력 <Client> <사용자> <웹 브라우저> Request Response Internet • Internet을 기반으로 함 • TCP/IP 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크 • 웹은 기본적으로 HTTP 프로토콜 이용 • 웹 해킹을 위해서는 HTTP는 필수 지식 • 네트워크 특징으로 인한 공격 기법도 있음 • ex) SYN flooding • ->이 부분은 당장 다루지는 않을 것
  • 5.
    웹 • 사용자가 누구인지기억해야 함 • 로그인, 인증 • 세션 • 인증한 권한에 따라 통제 • 접근 통제 • 사용 기술 • 쿠키 • 토큰 • 취약점 • 쿠키, 토큰 알아냄 -> 다른 사용자인 척 • 원래 없던 권한을 얻음 <웹 서버> <웹 어플리케이션 서버> <데이터베이스> <Server> 입력 출력 <Client> <사용자> <웹 브라우저> Request Response Internet
  • 6.
    웹 <웹 서버> <웹어플리케이션 서버> <데이터베이스> <Server> 입력 출력 <Client> <사용자> <웹 브라우저> Request Response Internet • HTTP 메시지를 처리 • Client에게 Response를 넘김 • 취약점 • 프로토콜 자체의 취약점 • 웹서버 보안 설정이 잘못되어 취약점
  • 7.
    웹 <웹 서버> <웹어플리케이션 서버> <데이터베이스> <Server> 입력 출력 <Client> <사용자> <웹 브라우저> Request Response Internet• 동적인 페이지를 처리 • 사용자 입력 처리 • 프로그램의 로직이 들어갈 곳 • -> 많은 취약점 생성 • DB 등 다른 백엔드 컴포넌트와 협업 • 취약점 • 프로그램 로직 자체 • 허술한 구현으로 취약점 생성 • 검증되지 않은 값을 다른 컴포넌트에게 넘겨 방어하지 못 함
  • 8.
    웹 • DB • 데이터를체계적으로 저장하기 위해 이용 • SQL을 이용하여 DB 이용 • 취약점 • SQL injection • DB를 보거나 조작 <웹 서버> <웹 어플리케이션 서버> <데이터베이스> <Server> 입력 출력 <Client> <사용자> <웹 브라우저> Request Response Internet
  • 9.
    앞으로 공부할 것 •네트워크 이론 • Application / Transport / Network 계층 중심 • HTTP, DNS, TCP/IP, DHCP • 라우팅 기본 원리 • 네트워크 프로그래밍 • TCP/IP를 이용한 간단한 프로그래밍 • 웹 기본 지식 • 프론트엔드 관련 : HTML, CSS, JavaScript • 백엔드 관련 : PHP, SQL, (JAVA, python, ......) • PHP가 점유율이 높아서.. 웹 해킹 문제로 자주 보여서... • 암호화, 인코딩 • 대칭키와 비대칭키 암호 개념 • 자주 쓰이는 암호, 인코딩 • 웹 취약점과 해킹 기법 • 어플리케이션 지도 작성 / 클라이언트 측 통제 우회 / 인증 무력화 / 세션 관리 공격 / 접근 통제 공격 / 데이터 저장소 공격 / 백엔드 컴포넌트 공격 / 애플리케이션 로직 공격 / 사용자 공격 : XSS / 기타 공격 / ...... • 공격 방법론에 따른 실습 • 실제 웹 페이지를 공격하는 일반적인 절차에 따라 실습 • 위의 공격 방식들을 적절히 사용하여 실제 해킹에 적용하기 위한 정리
  • 10.