1. SQL Injection
- SQL injection 공격 원리
- 웹 브라우저와 웹서버는 HTTP로 통신, 웹 서버와 Database는 SQL로 통신
- 공격자는 SQL 공격구문을 웹 서버에 전달
- 웹서버에서 DB에 SQL문 작성할 때 공격 구문이 따라붙음
- DB에서 SQL 공격구문이 그대로 실행
→ 조작된 요청이 전달되어 공격자가 원하는 결과를 얻음
2. SQL injection의 핵심 3요소
① 주석처리 : 뒷부분 무력화
- 오라클DB, MS-SQL : --
- MySQL, MariaDB : #
② 로직 : 논리적으로 참을 만들면 된다
ex) ' or 1=1 --
ex) ' or 2>1 --
③ SQL 중첩문 사용
- 앞의 SQL문을 마감하고 다른 SQL문을 뒤에 붙여서 실행하도록 유도
select ~~ ; drop table ~~;
ex) '; drop table~~;
- 앞의 select문을 뒤의 select문과 union으로 연결
- 주의사항 : 앞의 select문에서 요청한 개수와 뒤의 select문에서 요청한 개수가 일치해야 함
3. SQL injection 실습
- DVAW(Damn Vulnerable Web Application) 활용(admin/password) - mysql 사용
- SQL Injection : user id에 1~9번까지 입력하면 ID, 사용자 이름(first name)과 성(surname) 출력
- SQL문 추측 : select firstname, surname from [테이블이름] where userid='[입력부분]';
- ' or 'S' < 'T' # 와 같이 문자열 비교도 가능 - ASCII 코드를 비교
4. SQL Injection 대응방안
- Client 쪽에서 필터링 할 경우 Proxy 도구로 우회 가능
- Server 쪽에서 필터링을 도입해야 함
- secure code 함수 사용 : mysqli_real_escape_string() 함수 사용 : 인젝션 코드의 특수문자 방지
- escape 처리 : 특수문자가 고유의 기능을 하지 못하도록 하는 것 --> 특수문자 앞에 \(백슬래시)를 붙임 ex) ' → \'
→ 사람이 일일이 작업할 수 없으므로 secure coding 함수 사용
- mysqli_real_escape_string() - php에서 사용
: \x00, \n, \r, \, ', ", \x1a 앞에 \를 붙임 → sql injection에 사용되는 특수문자들의 동작을 막음
* \x : hex 구분자, \n : line feed 줄내림, \r : carriage return 커서를 왼쪽 끝으로 이동 (줄바꿈 : \n\r)
5. Cookie
- IP주소, 지역, 시간, 언어, 단말기 종류 등 포함
- 개인정보보호법에 근거하여 개인정보로 규정
- 쿠키값을 생성할 때 사용자 검증을 위해 IP주소를 난독화해서 포함
- 쿠키 : 클라이언트에 저장, 세션 : 서버에 저장 → 쿠키보다 세션이 안전함
6. 쿠키 vs 세션
● 쿠키
- 사용자의 웹브라우저에 저장 (인터넷 속성 - 일반 - 설정 - 파일보기 통해 쿠키값 목록 확인 가능)
- 사용자가 지우거나 타이머에 의해 설정된 시점까지 사용자의 브라우저 안에서 정보를 유지
- 스트링으로만 저장됨
- 재사용 위해 저장 가능
- 사용자에 의해 조작 가능
- 보안 측면에서 안전하지 않음
● 세션
- 서버에 저장
- 브라우저가 열려있는 동안에만 사용가능
- 세션을 임의로 중단시킬 수 없으며, 브라우저는 닫으면 세션은 없어짐
- 오브젝트 형태로 저장 가능
- 재사용을 위해 저장 불가
- 사용자에 의해 조작 불가능
- 보안 측면에서 비교적 안전
'SK 쉴더스 루키즈' 카테고리의 다른 글
[SK 쉴더스] 애플리케이션 보안 5일차 - OWASP Top 10(2) (0) | 2022.09.26 |
---|---|
[SK 쉴더스] 애플리케이션 보안 4일차 - OWASP Top 10(1) (2) | 2022.09.24 |
[SK 쉴더스] 애플리케이션 보안 3일차 - WebShell (1) | 2022.09.19 |
[SK 쉴더스] 애플리케이션 보안 2일차 - Web Hacking 실습 2 (0) | 2022.09.17 |
[SK 쉴더스] 애플리케이션 보안 1일차 - web 기본과 실습환경 (0) | 2022.09.12 |