심화스터디2. Cross-site scripting(XSS)

챠챠비둘기·2022년 10월 6일
0

심화스터디

목록 보기
1/6

Cross-site scripting(XSS)

cross-site scripting(xss)은 웹 사이트 관리자가 아닌 공격자가 웹 사이트에 악성 스크립트를 끼워 넣는 공격을 의미합니다. 웹 애플리케이션이 사용자로부터 입력 받은 값을 제대로 검사하지 않고 사용할 경우 발생합니다. 이 취약점으로 인해, 공격자가 사용자의 데이터(쿠키, 세션 등등)에 접근하고 탈취하거나, 자동으로 비정상적인 기능을 수행하게 할 수 있습니다. 주로 다른 웹사이트와 정보를 교환하는 식으로 작동하기에 사이트 간 스크립팅이라고 부르기도 합니다. xss공격에는 크게 reflected xss, stored xssm 그리고 dom based xss 공격이 있습니다. 그중 이번 시간에는 reflected xss 공격에 대해 알아보도록 하겠습니다.

reflected xss

이 공격은 악의적인 의도를 가진 공격자가 악성 스크립트가 담긴 url(uniform resorce locator)을 만들어 일반 사용자에게 전달하는 공격입니다. 공격자는 url 뒤에 붙는 쿼리에 악성 스크립트를 작성하여 전달합니다.
ex>

$ curl http://vulnerable-site.com/query?keyworkd=<script>malicious-script-code</script>

reflected xss가 실행되는 과정
1. 악의적인 사용자가 보안이 취약한 사이트를 발견합니다.
2. 보안이 취약한 사이트에서 사용자의 정보를 빼돌리거나 원치 않는 프로그램을 실행시킬 수 있는 악성 스크립트가 담긴 URL을 만들어 일반 사용자에게 스팸 메일이나 문자 같이 사용자가 접근하기 쉬운 경로로 전달합니다.
3. 일반 사용자는 공격자에게 전달받은 URL 링크를 클릭합니다. 일반 사용자의 브라우저에서 보안이 취약한 사이트로 요청을 전달합니다.
4. 일반 사용자의 브라우저에서 응답 메세지를 실행하면서 악성 스크립트가 실행됩니다.
5. 악성 스크립트를 통해 일반 사용자의 정보가 악의적인 사용자에게 전달됩니다.

Port Swigger에서 문제 풀어보기


일단 사이트에 로그인을 한 후, 무슨 문제인지 살펴봅시당
reflected xss에 관한 문제로, Java Script 문자열을 수정하여 경고 함수를 호출하는 공격을 실행시키는 문제군요😎

Access te lab을 누르면 위의 사이트에 들어가게 되는데, 검색창에서 hyunbin을 작성하고 눌러봅시당. 역시 아무것도 안 뜨는군요....😅
버프 슈트를 실행시키고, 인터셉트를 켜 봅시다. 그러면 검색 기록이 들어 있는 패킷이 잡히겠죠?
이 패킷을 repeater로 보내봅시당


'hyunbin'을 검색해 보면, var searchTerms에 'hyunbin'이 잡힌 것을 확인 할 수 있습니다. 즉, 임의로 작성한 값이 자바 스크립트 문자열에 반영된 것을 확인하였습니다. 다시 사이트에 돌아가서, 검색창에 자바 스크립트 문자열에 넣을 '-alert(1)-'을 입력해 봅시다. 그러면

알림창이 뜨면서, solved 됐다고 뜹니다.

오늘도 하나의 문제 해결!!😍😍
임의로 작성한 값을 검색하고, 그 검색한 기록이 담긴 요청 패킷을 버프 슈트를 이용하여 가로채서, burp repeater로 보내 작성된 값이 java script 문자열에 반영되었는지 확인합니다. 문자열에 반영된 것을 학인하고, 이 문자열을 수정해 프로그램을 실행시킬 스크립트를 검색창에 작성하면, 작성된 스크립트 값이 자바 스크립트의 문자열에 들어가고, 그로 인해 문자열이 수정되고 스크립트가 실행되면서 원하는 프로그램이 실행되는 원리입니다.

profile
개발 + 보안

0개의 댓글