42
설치 및 실행방법 Jaewoo Shim Jun. 4. 2018

Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치 및 실행방법

Jaewoo Shim

Jun. 4. 2018

Page 2: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

Contents

SQL 인젝션이란

WebGoat

설치방법

실습

과제

2

Page 3: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

SQL 인젝션이란

데이터베이스와 연동된 웹서버에 입력값을 전달 시 악의적 동작을 수행하는 쿼리문을 삽입하여 공격을 수행

3

Client

Internet

Web Server

Database

Server

SELECT * FROM users WHERE id=‘$_POST[‘id’]’ AND pw=‘$_POST[‘pw’]’

Page 4: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

SQL 인젝션이란 – 정상(1/4)

데이터베이스와 연동된 웹서버에 입력값을 전달 시 악의적 동작을 수행하는 쿼리문을 삽입하여 공격을 수행

4

Client

Internet

Web Server

Database

Server

SELECT * FROM users WHERE id=‘$_POST[‘id’]’ AND pw=‘$_POST[‘pw’]’

POST /login.php HTTP/1.1 … id=guest pw=1q2w3e!@

Page 5: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

SQL 인젝션이란 – 정상(2/4)

데이터베이스와 연동된 웹서버에 입력값을 전달 시 악의적 동작을 수행하는 쿼리문을 삽입하여 공격을 수행

5

Client

Internet

Web Server

Database

Server

SELECT * FROM users WHERE id=‘guest’ AND pw=‘1q2w3e!@’

POST /login.php HTTP/1.1 … id=guest pw=1q2w3e!@

Page 6: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

SQL 인젝션이란 – 정상(3/4)

데이터베이스와 연동된 웹서버에 입력값을 전달 시 악의적 동작을 수행하는 쿼리문을 삽입하여 공격을 수행

6

Client

Internet

Web Server

Database

Server

SELECT * FROM users WHERE id=‘guest’ AND pw=‘1q2w3e!@’

POST /login.php HTTP/1.1 … id=guest pw=1q2w3e!@

“John의 정보”

Page 7: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

SQL 인젝션이란 – 정상(4/4)

데이터베이스와 연동된 웹서버에 입력값을 전달 시 악의적 동작을 수행하는 쿼리문을 삽입하여 공격을 수행

7

Client

Internet

Web Server

Database

Server

SELECT * FROM users WHERE id=‘guest’ AND pw=‘1q2w3e!@’

POST /login.php HTTP/1.1 … id=guest pw=1q2w3e!@

“John의 정보”

“Hello John!”

Page 8: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

SQL 인젝션이란 – 공격(1/4)

데이터베이스와 연동된 웹서버에 입력값을 전달 시 악의적 동작을 수행하는 쿼리문을 삽입하여 공격을 수행

8

Client

Internet

Web Server

Database

Server

SELECT * FROM users WHERE id=‘$_POST[‘id’]’ AND pw=‘$_POST[‘pw’]’

Page 9: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

SQL 인젝션이란 – 공격(2/4)

데이터베이스와 연동된 웹서버에 입력값을 전달 시 악의적 동작을 수행하는 쿼리문을 삽입하여 공격을 수행

9

Client

Internet

Web Server

Database

Server

SELECT * FROM users WHERE id=‘$_POST[‘id’]’ AND pw=‘$_POST[‘pw’]’

POST /login.php HTTP/1.1 … id=guest pw=AA’ or ‘1’=‘1

Page 10: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

SQL 인젝션이란 – 공격(3/4)

데이터베이스와 연동된 웹서버에 입력값을 전달 시 악의적 동작을 수행하는 쿼리문을 삽입하여 공격을 수행

10

Client

Internet

Web Server

Database

Server

SELECT * FROM users WHERE id=‘guest’ AND pw=‘AA’ or ‘1’=‘1’

POST /login.php HTTP/1.1 … id=guest pw=AA’ or ‘1’=‘1

“????의 정보”

SELECT * FROM users WHERE id=‘guest’ AND pw=‘AA’ or ‘1’=‘1’

SELECT * FROM users WHERE TRUE

Page 11: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

SQL 인젝션이란 – 공격(4/4)

데이터베이스와 연동된 웹서버에 입력값을 전달 시 악의적 동작을 수행하는 쿼리문을 삽입하여 공격을 수행

11

Client

Internet

Web Server

Database

Server

SELECT * FROM users WHERE id=‘guest’ AND pw=‘AA’ or ‘1’=‘1’

POST /login.php HTTP/1.1 … id=guest pw=AA’ or ‘1’=‘1

“????의 정보”

“Hello ????!”

Page 12: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

WebGoat

인터넷 상에서 실제 서비스 중인 웹서버를 대상으로 공격 수행은 불법

5년 이하의 징역 또는 5천만원 이하의 벌금

워게임 사이트, 또는 가상의 환경을 구축하여 공격을 수행하며 실습

http://los.eagle-jump.org

https://github.com/WebGoat/WebGoat

http://sqlzoo.net/hack/

etc

12

Page 13: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

WebGoat

https://github.com/WebGoat/WebGoat

OWASP(Open Web Application Security Project) 에 의해 만들어진 트레이닝

자신의 컴퓨터에 환경을 갖추어 실습 가능

자신의 컴퓨터에 취약점이 있는 웹페이지를 구성하기 때문에 보안에 취약해질 수 있음

13

Page 14: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 - VirtualBox

https://www.virtualbox.org/wiki/Downloads

14

Page 15: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 - VirtualBox

“Next >”버튼 눌러서 진행

15

Page 16: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 - VirtualBox

“Next >”버튼 눌러서 진행

16

Page 17: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 - VirtualBox

“Next >”버튼 눌러서 진행

17

Page 18: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 - VirtualBox

“Yes”버튼 눌러서 진행

18

Page 19: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 - VirtualBox

“Install”버튼 눌러서 진행

19

Page 20: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 – Kali Linux

https://www.offensive-security.com/kali-linux-vmware-virtualbox-image-download/

20

Page 21: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 – Kali Linux

앞서 설치한 VirtualBox 실행 후

왼쪽 상단에 “파일(F)-가상 시스템 가져오기(I)…”

21

Page 22: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 – Kali Linux

폴더 그림 클릭 후 다운로드한 ova 파일 선택

다음(N) 버튼을 눌러 진행

22

Page 23: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 – Kali Linux

“가져오기” 클릭

23

Page 24: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 – Kali Linux

새로 생성된 가상머신 클릭 후 “시작” 버튼을 눌러 시작

24

Page 25: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 – Kali Linux

기본 사용자 아이디 : root

기본 사용자 비밀번호 : toor

위 정보를 이용하여 로그인

25

Page 26: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 – WebGoat

터미널 실행

26

Page 27: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 – WebGoat

# cd Desktop

# apt update

# apt upgrade

# wget https://github.com/WebGoat/WebGoat/releases/download/7.1/webgoat-container-7.1-exec.jar

# java –jar webgoat-container-7.1-exec.jar

이후 아래와 같이 Webgoat가 실행되는 모습을 확인

http://localhost:8080/WebGoat 로 접속

27

Page 28: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

설치방법 – WebGoat

아이디 guest / 비밀번호 guest 로 로그인

참고

28

노란색 아이콘이 웹 브라우저

Page 29: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

실습

왼쪽의 “Injection Flaws” 클릭

아래쪽에 나타나는 “String SQL Injection” 클릭

29

Page 30: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

실습

String SQL Injection

30

Page 31: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

실습

String SQL Injection

31

입력란에 Smith 라는 문장을 입력 시 아래와 같이 테이블 조회가 가능

Page 32: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

실습

String SQL Injection

32

SELECT * FROM user_data WHERE last_name = ‘Smith’

SELECT * FROM user_data WHERE last_name = ‘AAAA’ or ‘1’=‘1’

SELECT * FROM user_data WHERE last_name = ‘AAAA’ or TRUE

OR 연산의 한 항이 TRUE면 값은 항상 TRUE

SELECT * FROM user_data

Page 33: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

실습

String SQL Injection

33

아래와 같이 성공하는 모습을 확인 가능

Page 34: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

실습

Numeric SQL Injection

34

Page 35: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

실습

Numeric SQL Injection

35

Columbia 라는 문자열이 직접 들어가지 않고 어떠한 정수가 들어가는 모습 확인 가능

Page 36: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

실습

Numeric SQL Injection

36

SELECT * FROM weather_data WHERE station = 101

SELECT * FROM weather_data WHERE station = 101 OR TRUE

SELECT * FROM weather_data

HOW???

OR 연산의 한 항이 TRUE면 값은 항상 TRUE

Page 37: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

실습

Numeric SQL Injection

37

도시 이름 정수 값

Columbia 101

Seattle 102

New York 103

Houston 104

해당 리스트를 마우스 오른쪽 클릭 Inspect Element 클릭

Page 38: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

실습

Numeric SQL Injection

38

Page 39: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

과제

WebGoat 환경을 구성한 이후, 아래 문제를 스스로 푼 뒤 문제에 대한 자신의 접근방법을 포함한 문제풀이 보고서를 작성하세요.

실습시간에 함께 풀어보았던 두 문제

Numeric SQL Injection

String SQL Injection

39

Page 40: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

40

Page 41: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

Contact

질문 사항

조교이름 : 심재우

장소 : 미디어센터 504호(엘리베이터 바로 앞)

이메일 : [email protected]

41

Page 42: Jaewoo Shim Jun. 4. 2018securesw.dankook.ac.kr/ISS18-1/HW5_2018_06_04.pdf · 2018. 6. 4. · Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2

42