일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- snort rule
- Slack
- Notion
- wireshark
- 리눅스 시스템 디렉토리
- Snort
- Common Vulnerabilities and Exposures
- 선제적 방어
- Malvertising
- OSI 7 layer
- cross-site scripting
- File Magic Number
- AWS EC2
- Defend Forward
- 멀버타이징
- CNA
- Cookie
- XSS
- honeypot
- Path/Directory Traversal
- CVE
- 미국 국방부
- Register
- 웹 브라우저
- t-pot
- AWS
- OWASP
- file signature
- Lateral Movement
- 레지스터
- Today
- Total
IT에서 살아남기
SQL Injection 본문
SQL Injection
클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격하는 공격 방식을 말하며, OWASP Top 10 2021 개정판 A03:Injection에 속한다.
SQL Injection 종류
- Error based SQL Injection
- Union based SQL Injection
- Blind based SQL Injection
Error based SQL Injection
논리적 에러를 이용하여 서버에서 정보를 얻어오는 기술로 사용한다.
공격 예시
- 로그인 시 ID와 PW을 입력하는데 이 때 서버에서 받아오는 구문은 아래와 같다.
1. SELECT * FROM client WHERE id='id' and password='password'
1번와 같이 들어와야 정상이지만
2. SELECT * FROM client WHERE id='' or '1' = '1' --
2번과 같이 id 컬럼 뒤에 or 구문을 통해 입력된 값이 하나라도 참이면 참으로 인식이 되며, '--' 때문에 password가 주석처리가 된다.
이를 통해 id에만 입력해도 로그인이 성공하게 된다.
Union based SQL Injection
SQL 문법 중 Union은 여러 쿼리를 하나로 이어주며, 공격자가 인젝션에 성공하면 원하는 쿼리문을 실행할 수 있다.
공격을 성공하기 위해 만족해야하는 조건이 2가지
1. UNION 쿼리와 테이블이 동일한 필드 개수
2. UNION 쿼리와 테이블이 동일한 테이터형
위 조건에 맞을 시 공격이 성공한다.
Blind based SQL Injection
서버로투버 특정한 값이나 데이터를 전달받지 않고, 참 혹은 거짓의 정보만으로 DB의 테이블 정보를 추출한다.
조건이 참인 경우 페이지가 정상적으로 출력하고, 거짓이면 페이지가 출력하지 않거나 응답 오류를 통해 정보를 확인한다.
예방법
- 입력 값에 대한 검증
> 검증 로직을 추가하여 부적절한 입력값에 대한 검증 후 차단
- Error Message 노출 금지
> 에러 발생 시 사용자에게 보여줄 페이지를 따로 제작하거나 메시지 박스를 띄우도록 변경
- 저장 프로시저 사용
> 사용하고자하는 Query에 미리 형식을 지정하는 것을 말하며, 지정된 형식의 데이터가 아니면 Query문이 실행되지 않음
'IT > 정보' 카테고리의 다른 글
File Upload Vulnerability (0) | 2022.12.17 |
---|---|
XSS(Cross-Site Scripting) (0) | 2022.12.16 |
OWSAP Top 10 - 2021 (0) | 2022.12.15 |
Snort Rule Option (0) | 2022.12.13 |
Wireshark 사용법 및 필터 정리 (0) | 2022.12.13 |