웹 해킹 기초와 실습
수업 내용 웹에 대한 소개 웹 게시판 만들기 실습 웹 해킹 실습 HTTP Protocol Web Server & Web Browser 웹 게시판 만들기 실습 Camp_Board 웹 해킹 실습
웹 해킹이 대세! 다양한 종류의 인터넷 서비스들
웹 해킹이 대세! 그들 중 단연 최고는 WEB!
웹 해킹이 대세! 사라지는 서비스들, 일부는 WEB으로 흡수
접속을 막아버리는 방화벽(Firewall) 웹 해킹이 대세! 접속을 막아버리는 방화벽(Firewall)
웹 해킹이 대세! Web까지 막을 순 없다!
웹 해킹이 대세! 웹 프로그래밍 언어 == 상대적으로 쉬운 언어
웹 해킹이 대세! 취약점이 가장 많은 서비스는 바로 WEB!
웹 게시판 만들기
웹 게시판 만들기
알아야 할 것들 WEB의 이해 HTML의 이해 PHP의 이해 Mysql의 이해
WEB의 이해 HTML 언어 사용 HTTP 프로토콜 기반으로 작동 인터넷 상에서 동작하는 여러 서비스들 중 하나 IE나 Firefox와 같은 Web Browser를 통해서 작동 HTML 언어 사용 HTTP 프로토콜 기반으로 작동 HyperText Transfer Protocol 요청/응답(request/response) 방식의 프로토콜 GET /index.html HTTP/1.0 -> index.html을 주세요 GET /logo.jpg HTTP/1.0 -> logo.jpg를 주세요
Web Server와 Web Browser의 관계
WEB 이해를 위한 실습 Web Browser와 Web Server가 주고 받는 내용 직접 보기 http://192.168.0.10/sniffer/sniffer.zip 패킷 스니퍼 실행 Start 버튼 클릭 http://192.168.0.10/test.html 접속 패킷 스니핑 결과 확인
HTML 언어 Web page를 만들기 위한 프로그래밍 언어 HyperText Markup Language 문서의 글자 크기, 색, 그래픽, 테이블, 하이퍼링크 등을 정의 HTML에서 사용하는 명령어를 태그(tag)라고 함 html, body, table, tr, td, font, a, img
PHP 언어 Server Side Script Language 원래 Personal Home Page Tools의 약자 PHP is Hypertext Preprocessor로 변경 Html 언어와 혼용하여 사용 가능 사용자로부터 인자를 입력 받아 동적인 결과 출력 가능 서버 내의 다양한 서비스들과 연동 가능
Server Side Script
PHP 언어 HTML에서 PHP로 인자 전달하기 <FORM> 태그 이용 GET 방식과 POST 방식 예제 GET URL 뒤로 인자를 이어서 전달 HTTP 패킷 안에 인자 전달 인자 크기에 제한이 있음 인자 크기에 거의 제한이 없음 인자의 내용이 웹 로그에 노출 됨 노출되지 않음
Mysql Database 관리 시스템의 한 종류 자료 보관, 검색 및 통계에 활용 이것은 파일이다. Mysql, Mssql, Oracle 자료 보관, 검색 및 통계에 활용 이것은 파일이다. Frm : 테이블 구조 MYI : 테이블 인덱스 MYD : 실제 데이터
Mysql 사용 예제 Mysql Client 테이블 설계 테이블 생성 자료 입력 활용 예제 /usr/bin/mysql 나이, 이름, 거주 지역 테이블 생성 Create table (…) 자료 입력 활용 예제
웹 게시판 만들기 SSH 접속 웹 경로 mysql 실행 192.168.0.1 /var/www/html/ root / camp 웹 경로 /var/www/html/ mysql 실행 Mysql –u root –p camp (패스워드 camp)
웹 게시판 만들기 테이블 설계 고유번호 - int , auto_increment 닉네임 – char(20) 내용 - text 카운터 - int 등록 날짜 – char (20) 업로드 파일 – char(20)
웹 게시판 만들기 (1) 새 글 쓰기 Write.php
웹 게시판 만들기 (2) 등록된 글 목록 보기 list.php
웹 게시판 만들기 (3) 웹 게시판 만들기 (3) 게시물 내용 보기 view.php 카운터 높이기
웹 게시판 만들기 (4) 파일 업로드 기능 구현하기
웹 게시판 만들기 (5) 게시물 삭제하기 delete.php 업로드 파일도 함께 삭제하기
웹 게시판 만들기 (6) board.html로 통일하기
쉬(하)는 시간
!!긴급!! 게시판에 누군가 이상한 글을 올렸다. 글쓴이의 IP를 찾아라!
!충격! 우리가 만든 게시판에 취약점이 있다. 글쓴이의 IP를 찾아라!
질문 총 몇 개의 취약점이 있을까?
Exploit (1) 카운터를 높이자. 글쓰기 도배를 하자.
Exploit (2) HTML 태그 입력 취약점 - 태그 쓰기 - Marquee - 테이블 탈출 - 창 흔들기 - 게시판 망치기
Exploit (3) 디렉토리 안의 파일 노출 취약점
Exploit (4) DB File을 훔쳐보자. 원격에서 접속해 보자.
Exploit (5) Fopen() 함수의 취약점 예상치 못한 파일을 받아보자. - ../../../etc/passwd
Exploit (6) Include 함수의 취약점 예상치 못한 파일을 받아보자 - ../../../etc/passwd - include http - include ftp - include ../로컬
Exploit (7) 업로드 - .php - .PhP - .html - .inc - .txt.php - .jpg.php
Exploit (8) system() 함수의 취약점
Exploit (9) Copy() 함수의 취약점
Exploit (10) Sql injection 취약점 - 암호 없이 게시물 삭제 - 원격 쉘 획득
원격 쉘 획득 실습 Bind Shell Program Reverse Shell Program
결론 (1) 웹은 해커의 놀이터
결론 (2) 해킹을 하려면 프로그래밍은 필수! 프로그래밍 불가능한 자 프로그래밍 가능한 자 소스 코드 해석 불가능 소스 코드 해석 가능 지도 없이 길을 찾아가는 것 지도를 가지고 길을 찾아가는 것 불을 끄고 물건을 찾는 것 불을 켜고 물건을 찾는 것 축구를 안 해본 사람이 감독을 맡는 것 축구를 해 본 사람이 감독을 맡는 것