[수업] 5주차
SQL Injecction 정리
- What / 무엇인지
> 공격자가 임의의 SQL 쿼리를 삽입해 SQL 쿼리가 공격자의 의도대로 변조되게 하는 공격.
- Where / 어디에서 발생하는지
> 이용자의 입력값을 SQL 질의문에 사용하는 페이지
- Why / 왜 일어나는지
> 이용자의 입력값을 SQL 질의문에 직접 삽입해서 사용하기 때문에
- Scenario / 무엇을 할 수 있는지
> DB 데이터 추출
> DB 데이터 변조
UPDATE, DELETE, INSERT -> 이런 명령어들로 DB 변조가 가능하다.
> 인증 우회
> WEB SHELL UPLOAD
- Defense / 어떻게 막는지
(1) Prepared Statement
(2) 화이트 리스트 기반 필터링
Prepared Statement 가 적용이 안 되는 곳은 화이트 리스트 기반 필터링을 해준다
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
* XSS ( Cross-Site Scripting )
[ - ] Server Side Script
> 서버 측 에서 실행되는 코드
asp,jsp, php...
[ - ] Client Side Script
> 웹 브라우저에서 실행되는 코드
js , html, css...
* XSS 란?
> 클라이언트 측 스크립트를 삽입하는 공격
> 이용자의 웹 브라우저에서 실행됨.
[ - ] 취약점이 발생하는 이유
> 공격자의 스크립트가 그대로 서버에서 응답되기 때문이다.
[ - ] 발생 가능한 위치
> 파라미터 데이터가 응답에 포함되는 모든 곳
* 스크립트 삽입 전략
1. 서버에 저장 - Stored XSS
2. 서버에서 반사 - Reflected XSS
3. 클라이언트 조립 - DOM Based XSS
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
[ - ] Stored XSS
> 서버에 저장된다
> 저장된 페이지에 접속하면 스크립트가 실행된다
[ - ] Reflected XSS
> 서버에 저장되지 않는다.
> 내가 보낸 데이터가 그대로 응답되는 경우
> 검색 기능
검색창에 test 입력 - > test 검색한 결과 -> test가 그대로 출력
[ - ] DOM Based XSS
> 서버에 저장되지 않는다.
> 서버에 응답되지 않는다.
(개발자 도구, Burp Suite 으로 확인 가능)
> 클라이언트 측에서 조립된다.
(document.write 중점으로 보자)
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
* Stored XSS / Reflected XSS 차이점
- Stored XSS
> 이용자가 사이트를 지나가기만 해도 공격을 당한다.
> 다수를 공격할 수 있다.
- Reflected XSS
> 클릭을 유도해야 하기 때문에 사회공학 기법을 사용한다.
> 타겟팅 공격이 가능
> URL을 만들 수 있어야 한다.