보안 Security

DVWA SQL Injection 공격 실습

JINNET 2023. 5. 21. 23:53

SQL?

SQL은 데이터베이스 시스템에서 자료를 처리하는 용도로 사용되는 구조작 데이터의 언어를 의미한다.

 

DVWA에 접속하여 SQL Injection 탭을 클릭하면 위와 같은 화면이 나오게 됩니다.

User ID에 아무 값을 넣은 뒤 Submit 을 클릭하면 되는데 필자는 ID값을 1로 지정하였습니다.

 

쿠키 정보 값을 알아야 하기 때문에 개발자 도구에 들어가 콘솔 탭을 누릅니다.

그 다음 터미널에 document.cookie를 입력하여 쿠키 정보를 확인합니다.

 
 

쿠키 정보를 알았다면 sqlmap이라는 프로그램을 사용해야 하는데 칼리리눅스에 기본적으로 설치 되어 있는 sqlmap을 사용해도 되지만 터미널에 접속해 사용이 가능합니다. 필자는 터미널에서 명령어를 통해 sqlmap을 사용하였습니다.

sqlmap -u 다음 이전에 User ID 입력란에 1을 넣었을 때 url과 방금 cookie 정보값을 입력하면 되는데 이때 security_level=0" 부분은 적지 않아도 무방합니다.

 

정보 값을 입력하고 ENTER키를 누르면 위와 같은 화면이 나오면서 터미널에 DBMS 종류가 MySQL로 보인다고 다른 DBMS에 대한 테스트는 제외 하기를 원하는지 물어보는 화면이 나오게 되는데 Y를 입력후 ENTER키를 누르면 다음 화면으로 넘어가게 됩니다.(DVWA는 MySQL을 사용하고 있기 때문이다.)

 

진행 중에 MySQL 관련 테스트를 모두 진행 할 것인지 물어보는 화면이 나오게 되는데 Y를 입력 후 다음으로 넘어 갑니다. 또한 마지막에 다른 파라미터를 계속 테스트하길 원하는지 물어보는 화면이 나오게 되는데 이미 id 파라미터가 취약하다는 것을 인지하고 있으므로 N을 입력 후 마무리 합니다.

 

이렇게 하면 위와 같이 최종적인 결과 값이 나오게 됩니다.

sqlmap을 활용하여 SQL Injection 공격 가능 여부와 개발 언어, 웹서버 DB 버전 등 여러 정보들을 얻을 수 있다는 걸 알수 있습니다.

 

 

이제 데이터 베이스의 정보를 수집해야 하는데 명령어를 통해 베이스 정보를 확인할 수 있습니다.

 

결과를 보게 되면 데이터 베이스 명이 dvwa라는 것을 확인할 수 있습니다.

 

 

테이블 이름을 알아내기 위해 명령어를 입력합니다.

명령어를 입력한 후 ENTER키로 다음으로 넘어갑니다.

 

위와 같이 user테이블에 사용자 정보가 담긴 것을 확인할 수 있습니다.

 

이제 user테이블 정보를 알기 위해 위와 같이 명령어를 입력하여 확인할 수 있습니다.

 

위와 같이 사용자의 ID, PW 최종 로그인 시간 등의 정보들을 알 수 있는 것을 확인할 수 있습니다.

공격 실습을 통해 SQL Injection의 취약점이 어떤 것이 있는지 확인할 수 있었고 SQL Injection 공격에 취약하면 피해가 심각할 것이라는 것을 느낄 수 있었습니다.

 

-끝-