WebGoat(웹고트) 이클립스에서 SQL Injection이 발생하는 원인 찾기(2)

소스코드를 통해 SQL Injection이 발생하는 원인찾기

[보안 취약점 진단 및 대응/WebGoat, Bee-Box] - WebGoat(웹고트) LAB:SQL Injection - String SQL Injection

 

WebGoat(웹고트) LAB:SQL Injection - String SQL Injection

실습 시작 전 준비 1. FullstackLAB 실행 C:\FullstackLAB\run.bat를 실행합니다. 이클립스에서 TomCat을 실행합니다. 2. VMware를 실행합니다. Window xp, Bee-Box, Kali Linux를 모두 실행합니다. 3. Window xp에서 프록시

psjin230.tistory.com


SqlStringInjection.java

 

#1 eclipse에서 Ctrl + Shift + R을 눌러 SqlStringInejction.Java를 검색합니다.

 

#2 문제가 되는 부분을 확인합니다.

외부에서 전달된 값을 검증, 제한하지 않고 SQL문 생성 및 실행에 그대로 사용하고 있어서 문제가 됩니다. Statement는 쿼리문을 안전하게 생성할 책임을 개발자가 가지고 있습니다.

 

#3 문제가 있는 코드를 수정합니다.

 

#4 실행결과 확인

사이트에서 Smith' or '1'='1을 입력해보면 에러가 발생합니다.

=> last_name 컬럼 값에 사용자 입력 값인 Smith' or '1'='1과 동일한 값이 없기 때문에 에러가 발생합니다.

=> 사용자 입력값은 select * from user_data where last_name = 'Smith\' or \'1\' = \'1' 형식으로 쿼리가 실행됩니다.