본문 바로가기
Hacking/bWAPP

XSS(Cross-Site-Scripting) Stored_Cookie, Session

by 알거음슴 2021. 6. 21.

XSS(Cross-Site-Scripting) Stored_Cookie

악의적인 스크립트 코드가 데이터베이스에 저장되어 저장된 코드의 내용을 확인한 사용자의 PC에 스크립트 코드가 실행되는 공격.

 

Stored

공격자가 서버(게시판)에 스크립트를 삽입하여 저장, 클라이언트가 해당 게시물을 읽을 경우 스크립트가 실행되어 Cookie정보, 악성코드 유입, 랜섬웨어 등 다양한 공격에 활용되는 방식.

 

 

1. XSS(Cross-Site-Scripting) Stroed_Cookies(low)

이번에는 Cookie값에 스크립트 코드를 인젝션하여 XSS를 실행하는 내용의 시나리오를 진행해본다. 좋아하는 영화 장르를 선택하면 그에 따른 결과를 출력해주는 페이지로 확인된다.

Burp suite 를 통해 패킷을 캡쳐할 경우 genre 이라는 변수가 GET_MethodCookie값에 있는걸 확인할 수 있다 action값을 스크립트 코드로 변환하여 Forward 진행해본다.

해당 스크립트로 인해 Cookie값에 스크립트 코드가 추가시켜 Cookie값이 불러질 때 마다 해당 스크립트가 실행될것을 예상해 볼 수 있다, Cookie값을 불러올 수 있는 테스트 페이지를 통해 확인해보자.

 

Session Mgmt – Cookie (HTTPOnly) 사이트를 통해 Cookies를 선택시 입력했던 코드가 Warning이 출력되는 걸 확인할 수 있다.

 

Burp suite 통해 패킷 확인시 Cookie 값중 movie_genra변수에 사전에 입력한 스크립트 코드가 적용되어있는걸 확인할 수 있으며, 코드로써 적용된 내용임으로 실제 페이지 내에도 movie_genre 내용이 없는 것을 확인할 수 있다.

 

 

2. XSS(Cross-Site-Scripting) Stroed_Cookies(high)

High level로 변경 후 동일하게 <script>alert(“Waring”)</script> 구문을 Cookie 값에 추가 하여 Forward 진행 후 다시 한번 확인 작업을 진행한다

 

스크립트 코드가 unknow로 변경된 걸 확인할 수 있다, 또한 warning 알람또한 출력되지않는걸 확인할 수 있다. XSS 공격이 실패한것이다.

 

XSS Stored(High)

case "2" :
                switch($genre)
                {
                    case "action" :
                        $genre = "action";
                        break;
                    case "horror" :
                        $genre = "horror";
                        break;
                    case "sci-fi" :
                        $genre = "sci-fi";
                        break;
                    default :
                        $genre = "unknown";
                        break;
                }

소스코드를 확인시 지정된 내용이 아닐 경우에 모두 unknown로 처리 하는걸 확인할 수 있다.

 

 

XSS(Cross-Site-Script) Stored(User-Agent)

악의적인 스크립트 코드가 데이터베이스에 저장되어 저장된 코드의 내용을 확인한 사용자의 PC에 스크립트 코드가 실행되는 공격.

 

User-Agent

HTTP 요청 시 Hearder에 포함되는 ClientOS version, 아키텍처, 웹 브라우저 등의 정보를 담고 있는 항목이다.

 

1. XSS(Cross-Site-Scripting) Stroed_User-Agent(low)

해당 페이지의 경우 접속자의 User-Agent를 확인하여 내용을 출력해주는 사이트로 확인된다 해당 log file 또한 다운받아볼 수 있는걸로 확인된다, 이번엔 이 User-Agent 에 스크립트 코드를 심어보도록 한다.

Burp suite를 통해 확인 시 페이지에 출력된 User-Agent와 동일한 내용이 확인된다, 해당 내용을 변조하여 <script>alert(“warning”)</script> 코드를 심어본다.

변조 후 Forward시 정상적으로 스크립트 코드가 작동하는걸 확인할 수 있다. 또한 페이지 내의 User-Agent 의 내용또한 스크립트 코드가 실행되었음으로 출력된 내용이 없는걸 확인할 수 있다.

 

 

2. XSS(Cross-Site-Scripting) Stroed_User-Agent(high)

이번엔 high level로 변경 후 동일한 작업으로 테스트를 진행해본다. Burp suite 를 통해 패킷을 잡고, User-Agent 의 내용을 변조, Forward를 진행해본다.

 

스크립트 코드가 코드로 인식되는 것이 아닌 일반 문장으로 인식되어 내용이 출력되고 있는걸 확인할 수 있다 이런경우에는 XSS 공격이 실패한 것을 확인할 수 있다.