취약한 웹 어플리케이션 DVWA를 통한 취약점 진단 실습입니다.
실습 : SQL Injection
난의도 : LOW
SQL Injectin 이란?
웹 개발자가 SQL 질의에 대한 공격 가능성을 배제하고, SQL 질의를 신뢰할 수 있는 명령으로 판단함을 가정합니다.
SQL 질의에서 접근 제어를 우회, 일반적인 인증 및 인증 확인을 무시, SQL 질의가 OS 레벨 명령을 할 수있는 공격입니다.
꽤 오래된 취약점임에도 불구하고 최근에도 많은 사고사례가 발생하고 있습니다.
위와 같이 입력이 가능한 폼에서, SQL Injection 공격이 가능한지 확인하기 위해 싱글쿼터 '를 입력 시도
입력 시 위와 같은 에러 발생, 여기서 알수있는 것은 싱글쿼터에 대한 검증이 이뤄지지 않고 있음과 MySQL를 사용하고 있다는 점을 알수 있습니다.
1. 입력 구문 : a' or 1=1 #
SQL Injection 대표 구문 a' or 1=1 #을 입력하여 공격 가능여부 파악
여기서 #은 Mysql에서 주석 구문
2. 입력구문 : test' or 1=1 union select null, table_name from information_schema.tables #
여기서 사용하는 information_schema.table은 모든 DB에서 사용하는 기본 table로 SQL injection에서 주로 공격 대상으로 삼아 시도합니다.
기본적으로 사용되는 table 및 schema에 대한 내용은 따로 자세하게 정리하여 포스팅하도록 하겠습니다.
아래와 같이 기본 table조회를 통해서 user 정보가 있을만한 table을 조회합니다.
아래 두번째 사진에서 보는것과 같이 "users" table이 존재하는 것을 확인 할 수 있습니다.
4. 입력구문 : a' or 1=1 union select null, column_name from information_schema.columns where table_name='user' #
users table에 어떤 column들이 존재하는지 확인하기 위해서, 조회를 시도
아래 사진에서 볼수 있듯이 password 필드가 존재하는 것을 확인
5. 입력 구문: test' or 1=1 union select user, password from users #
user정보가 들어있는 table과 column을 알았으니 쿼리문을 통해서 조회 시도
아래와 같이 db에 저장되어 있는 형태의 결과값을 확인 가능
* 번외로 지금 보여주는 비밀번호 형태를 봤을때 MD5로 인코딩된 비밀번호가 아닐까 예상,
** 32글자로 구성, 특수기호 없이 구성되어 있음//
실제로 돌려보지 않아서 정확하지 않을 수도 있습니다. ㅎ
감사합니다!
'보안 공부 > Web 보안' 카테고리의 다른 글
IIS HTTP 불필요 메서드 차단 방법 (0) | 2019.08.07 |
---|---|
SQL Injection 취약점 (0) | 2019.08.06 |
취약한 웹 어플리케이션 DVWA를 통한 취약점 진단_XSS공격 (29) | 2019.07.19 |
HTTP 불필요한 웹 메서드 차단 방법 (0) | 2019.05.21 |
서버버전 노출 대응방안 모음 (0) | 2019.01.02 |