설치및실행방법 Jaewoo Shim Jun. 4. 2018
Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2
SQL 인젝션이란 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 SELECT * FROM users WHERE id= $_POST[ id ] AND pw= $_POST[ pw ] Internet Database Client Web Server Server 3
SQL 인젝션이란 정상 (1/4) 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 POST /login.php HTTP/1.1 id=guest pw=1q2w3e!@ Internet SELECT * FROM users WHERE id= $_POST[ id ] AND pw= $_POST[ pw ] Database Client Web Server Server 4
SQL 인젝션이란 정상 (2/4) 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 POST /login.php HTTP/1.1 id=guest pw=1q2w3e!@ Internet SELECT * FROM users WHERE id= guest AND pw= 1q2w3e!@ Database Client Web Server Server 5
SQL 인젝션이란 정상 (3/4) 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 Client POST /login.php HTTP/1.1 id=guest pw=1q2w3e!@ Internet SELECT * FROM users WHERE id= guest AND pw= 1q2w3e!@ Web Server Database John 의정보 Server 6
SQL 인젝션이란 정상 (4/4) 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 Client POST /login.php HTTP/1.1 id=guest pw=1q2w3e!@ Hello John! Internet SELECT * FROM users WHERE id= guest AND pw= 1q2w3e!@ Web Server Server Database John 의정보 7
SQL 인젝션이란 공격 (1/4) 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 SELECT * FROM users WHERE id= $_POST[ id ] AND pw= $_POST[ pw ] Internet Database Client Web Server Server 8
SQL 인젝션이란 공격 (2/4) 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 POST /login.php HTTP/1.1 id=guest pw=aa or 1 = 1 Internet SELECT * FROM users WHERE id= $_POST[ id ] AND pw= $_POST[ pw ] Database Client Web Server Server 9
SQL 인젝션이란 공격 (3/4) 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 Client POST /login.php HTTP/1.1 id=guest pw=aa or 1 = 1 Internet SELECT * FROM users WHERE id= guest AND pw= AA or 1 = 1 Web Server Database???? 의정보 SELECT * FROM users WHERE id= guest AND pw= AA or 1 = 1 SELECT * FROM users WHERE TRUE Server 10
SQL 인젝션이란 공격 (4/4) 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 Client POST /login.php HTTP/1.1 id=guest pw=aa or 1 = 1 Hello????! Internet SELECT * FROM users WHERE id= guest AND pw= AA or 1 = 1 Web Server Server Database???? 의정보 11
WebGoat 인터넷상에서실제서비스중인웹서버를대상으로공격수행은불법 5 년이하의징역또는 5 천만원이하의벌금 워게임사이트, 또는가상의환경을구축하여공격을수행하며실습 http://los.eagle-jump.org https://github.com/webgoat/webgoat http://sqlzoo.net/hack/ etc 12
WebGoat https://github.com/webgoat/webgoat OWASP(Open Web Application Security Project) 에의해만들어진트레이닝 자신의컴퓨터에환경을갖추어실습가능 자신의컴퓨터에취약점이있는웹페이지를구성하기때문에보안에취약해질수있음 13
설치방법 - VirtualBox https://www.virtualbox.org/wiki/downloads 14
설치방법 - VirtualBox Next > 버튼눌러서진행 15
설치방법 - VirtualBox Next > 버튼눌러서진행 16
설치방법 - VirtualBox Next > 버튼눌러서진행 17
설치방법 - VirtualBox Yes 버튼눌러서진행 18
설치방법 - VirtualBox Install 버튼눌러서진행 19
설치방법 Kali Linux https://www.offensive-security.com/kali-linux-vmware-virtualbox-imagedownload/ 20
설치방법 Kali Linux 앞서설치한 VirtualBox 실행후 왼쪽상단에 파일 (F)- 가상시스템가져오기 (I) 21
설치방법 Kali Linux 폴더그림클릭후다운로드한 ova 파일선택 다음 (N) 버튼을눌러진행 22
설치방법 Kali Linux 가져오기 클릭 23
설치방법 Kali Linux 새로생성된가상머신클릭후 시작 버튼을눌러시작 24
설치방법 Kali Linux 기본사용자아이디 : root 기본사용자비밀번호 : toor 위정보를이용하여로그인 25
설치방법 WebGoat 터미널실행 26
설치방법 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
설치방법 WebGoat 아이디 guest / 비밀번호 guest 로로그인 참고 노란색아이콘이웹브라우저 28
실습 왼쪽의 Injection Flaws 클릭 아래쪽에나타나는 String SQL Injection 클릭 29
실습 String SQL Injection 30
실습 String SQL Injection 입력란에 Smith 라는문장을입력시아래와같이테이블조회가가능 31
실습 String SQL Injection 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 SELECT * FROM user_data OR 연산의한항이 TRUE 면값은항상 TRUE 32
실습 String SQL Injection 아래와같이성공하는모습을확인가능 33
실습 Numeric SQL Injection 34
실습 Numeric SQL Injection Columbia 라는문자열이직접들어가지않고어떠한정수가들어가는모습확인가능 35
실습 Numeric SQL Injection SELECT * FROM weather_data WHERE station = 101 SELECT * FROM weather_data WHERE station = 101 OR TRUE SELECT * FROM weather_data OR 연산의한항이 TRUE 면값은항상 TRUE HOW??? 36
실습 Numeric SQL Injection 해당리스트를마우스오른쪽클릭 Inspect Element 클릭 37 도시이름 정수값 Columbia 101 Seattle 102 New York 103 Houston 104
실습 Numeric SQL Injection 38
과제 WebGoat 환경을구성한이후, 아래문제를스스로푼뒤문제에대한자신의접근방법을포함한문제풀이보고서를작성하세요. 실습시간에함께풀어보았던두문제 Numeric SQL Injection String SQL Injection 39
40
Contact 질문사항 조교이름 : 심재우 장소 : 미디어센터 504호 ( 엘리베이터바로앞 ) 이메일 : tlawodn94@gmail.com 41
42