Today I Learned …
[수업] 5주차 정리 본문
* 해당 주차의 수업 내용을 정리합니다.
# 0) 리뷰
— SQL Injection 정리
> 원리, 시나리오, 대응방안
- SQL Injection 기법
> Union SQL Injection
> Error Based SQL Injection
> Blind SQL Injection
++ Blind SQL Injection 응답이 다르게 나오는 것이 에러 페이지여도 상관없음.
[Payload Example]
sotingAd=,(case+when+ascii(substr((select+user+from+dual),1,1))=0+then+1+else+(1/0)+end)
++ Time Based SQL Injection
[Payload Example]
page=1&board_id=&sorting=A.REG_DT&sotingAd=ASC;if+substring((select%20user_name()),1,1)=%27a%27+waitfor+delay+%270:0:1%27&startDt=&endDt=&keyword=
# 1) XSS (Cross-Site Scripting) 이해
## — Server Side Script & Client Side Script
> 두 가지 차이 이해
: Server Side Script : PHP, JSP, ASP ...
: Client Side Script : Javascript, HTML ...
## — 개념
> 클라이언트 측 스크립트를 삽입하는 공격
> 삽입된 스크립트는 클라이언트 측에서 실행된다! (정확하게는 이용자 웹 브라우저!)
## — 취약점 발생 이유
## — 발생 가능 위치
> 사용자의 입력이 응답에 포함되는 모든 곳
(사용자의 입력이란 클라이언트 측에서 전달하는 모든 데이터를 말함.)
> 적어도 내가 입력한 글자가 서버의 응답에 포함되는 곳에서 발생할 수 있다.
## — 영원한 우리 친구
많이 발생한다. 취약점 찾을 거 없으면 크사 찾으면 됨.
## — 스크립트 삽입 전략
1) 서버에 저장 : Stored
2) 서버에서 반사 : Reflected
3) 클라이언트 측에서 조립 : DOM Based
## — POC Script
alert(1);
prompt(1);
# 2) Stored XSS
## — 전략
스크립트를 서버에 저장한다.
## — 스크립트를 삽입하는 곳과 삽입된 스크립트가 응답되는 곳이 다르다.
## Step 1. Check
: 삽입한 내 글자들이 출력되는 곳
## Step 2. HTML 특수 문자 사용 체크
HTML 특수문자 Example : <, >, ', "
## Step 3. POC
POC Script 삽입
# 3) Reflected XSS
## — 전략
스크립트를 서버에 저장하지 않는다.
서버에서 반사되는 데이터를 활용한다.
ex)
검색어 djldjfslkdjfk
djldjfslkdjfk 에 대한 검색 결과가 없습니다
## — 스크립트를 삽입하는 곳과 삽입된 스크립트가 응답되는 곳이 같다.
** Repeater 활용
## Step 1. Check
삽입한 내 글자들이 출력되는 곳
## Step 2. 특수 문자 사용 체크
Repeater - autoscroll 기능
<"'>
## Step 3. POC
## — Reflected XSS 는 사회공학기법과 같이 활용된다.
* 사회공학기법
아래 링크를 클릭해주세요.
기업 관리자들
> 연봉 협상
> 연봉 재조정 공지드립니다.
* 악성메일훈련
추석 보너스
추석 경품
GET으로 되는지를 확인해야함 (url로 침투해야하기때문)
* Reflected XSS는 URL로 공격한다.
# 4) DOM Based XSS
## — 전략
클라이언트 측 브라우저에서 조립
## — 스크립트가 응답되지 않는다. (브라우저 개발자 도구)
## Step 1. Check
삽입한 내 글자들이 출력되는 곳
내가 쓴 글자가 조립되는지 확인
→ 문자가 검색되지 않는다.
## Step 2. 특수 문자 사용 체크
<'">
## Step 3. POC
스크립트 태그로는 실행 안된다. 왜?
<p>태그 내부에 작성되었기 때문. 그게 왜?
HTML에는 일정한 실행 순서가 있고 스크립트 태그가 실행되는 타이밍을 놓쳤기 때문.
## Event Handler
<script></script>
<img src=x onerror="alert('xss')">
⇒ URL 인코딩되어 전송되기 때문에 띄어쓰기를 %20으로 표기해주어야 정상 실행됨
<form>
<button>
URL로 공격한다.
즉 GET 방식이 되어야한다!
## XSS 찾는 법
다음시간
* XSS 필터링 우회 기법
* XSS 공격 시나리오
과제
* Lord SQL 틈틈이 (포맷 방지)
'Study > 수업' 카테고리의 다른 글
[수업] 7주차 정리 (0) | 2021.11.25 |
---|---|
[수업] 6주차 정리 (0) | 2021.11.18 |
[수업] 4주차 정리 (0) | 2021.11.04 |
[수업] 3주차 정리 (0) | 2021.10.29 |
[수업] 2주차 정리 (1) | 2021.10.22 |