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 / 기타 공격 / ......
• 공격 방법론에 따른 실습
• 실제 웹 페이지를 공격하는 일반적인 절차에 따라 실습
• 위의 공격 방식들을 적절히 사용하여 실제 해킹에 적용하기 위한 정리