Web Security

Cslab
이동: 둘러보기, 검색

XSS(Cross Site Scripting)

대부분의 웹 해킹은 웹 서버 설정 혹은 프로그램의 취약점을 공격하지만 XSS는 사용자를 공격하는 기법이다. 예를 들어 악성 코드가 포함된 글(웹 페이지)을 읽는 순간 악성 프로그램이 설치되거나 공격자가 원하는 코드를 실행한다거나 혹은 쿠키, 세션 정보가 공격자에게 전송되어 이를 악용하게 된다. 즉 직접적인 공격 기법을 사용하지 않고 간접적인 매체를 사용하여 사용자에게 접근하는 사회공학 기법을 사용한다.

(실행 예)
- 다른 사용자의 개인 정보를 자신의 메일로 전송하게 함.
- 다른 사용자에게 악성 코드를 설치함.

⚫ Stored XSS

저장XSS는 공격자가 XSS 보안 취약점 공격을 위해 가장 많이 살펴보는 곳이 같은 사이트를 방문하는 다른 사용자들에게 보이는 데이터를 입력하는 부분이다. 즉 메시지입력 부분, 방명록, 댓글, 등을 남기기 위해 사용자가 입력하는 부분이다. 공격자는 이러한 FORM 필드 부분에 악의적인 스크립트를 저장하고 후에 다른 사용자가 해당 사이트의 같은 곳을 방문하면 해당 스크립트가 웹 페이지에서 로드 되면서 코드가 실행되는 것이다.

Web01.jpg


⚫ Reflected XSS

반사XSS 공격은 URL의 CGI 인자에 스크립트 코드를 삽입하는 것이다. 공격자가 이메일을 이용해 어떤 웹 페이지 링크를 보내고 그 링크를 전달받은 사용자가 링크를 클릭하면 그 링크에 대한 웹 페이지가 로드 된다. 그 때 웹 페이지에 대한 링크 URL에 삽입된 스크립트 코드가 실행되면서 웹 페이지의 내용이 변경된다.

Web02.jpg


⚫ WebGoat 실습

Web03.jpg


Profile page의 street field를 통해 XSS 공격을 실행할 수 있을 때, 다음과 같은 스크립트를 통하여 공격이 가능해진다. [쿠키 값 확인 : <script>alert(document.cookie)</script>]

Web04.jpg


SQL Injection

웹 서버에서 데이터베이스로 전달되는 SQL Query를 변경시키기 위해 SQL 서버에서 실행되는 코드에 악의적인 코드를 추가로 삽입하거나 변경을 하고, 이를 통해서 비정상적으로 데이터베이스에 접근을 하여 권한이 없는 사람이 데이터베이스에 접속 가능하도록 만들어 원하는 정보를 획득하거나 삭제하거나 조작하는 해킹 기법을 뜻한다.


Web05.jpg


⚫ SQL Injection (주석문을 이용한 공격)

SQL 코드에서 ‘--’은 주석문을 위한 코드로서, ‘--’ 주석문 이후의 문자열은 전부 주석으로 처리가 된다.

결과>  Select * from member where id=‘admin’--and passwd=‘’
        -> Select * from member where id=‘admin’


Web06.jpg