- 이전 시리즈 참고 : https://velog.io/@sago_mungcci/API%EB%9E%80
1)XSS(Cross Site Scripting)
게시글을 작성할 때 스크립트 구문을 입력한다.
피해자(사용자)는 게시판의 글을 보고 내용을 확인하기 위해 클릭한다.
웹 서버는 사용자가 접근한 XSS 코드가 포함된 게시판의 글을 사용자에게 전달한다.
사용자 측에서 XSS 코드(ex.alert기능)이 실행된다.
XSS 코드가 실행된 것을 사진을 통해 확인할 수 있다.
공격방식은 자바스크립트의 특징을 이용하여 다른 사람의 컴퓨터에서 실행을 시킨다. ex) alert
스크립트가 실행되기만 해도 XSS에 대해 취약하다고 볼 수 있다.
웹 브라우저 내에서 적절한 검증이 없이 실행되는 것이기 때문에 사용자의 세션을 탈취/ 웹사이트를 변조/PC 오작동 등 발생.
공격자가 직접 접속하여 악성코드를 퍼트리는 것이 아니라 HTTP 프로토콜을 사용하는 과정의 취약점을 이용한 것으로
웹 서버로부터 클라이언트에게 전달되는 데이터에 악성스크립트를 삽입하기 때문에
사용자가 접속하게 되면 사용자의 클라이언트에서 실행되어 공격을 당하는 원리이다.
그렇기에 자연스럽게 여러명에게 공격을 가할 수 있는 방법이다.
공격이 단순해보이지만 오히려 특징잡기가 어려워서 막기가 더 힘들다.
예)아래 사진과 같이 게시판 같은 곳에 글을 쓴 후 상대방이 클릭하면 프로그램을 실행시키는 코드를 작성하는것.
이런 방법으로 피해자가 게시판의 글을 보고 접근했을 때 자동으로 alert의 알림 기능을 통해 프로그램을 실행 시켜보았다.
피해자는 alert의 기능이 있는 줄 인지하지 접근하였을 것이다.
즉, alert 가 아니라 악성코드였다면 이미 클릭한 순간 공격자에게 공격을 받은 것이다.
1)SQL-Injection
SQL Injection 이란?
SQL injection 은 코드 인젝션의 한 종류로서 클라이언트의 입력값을 조작하여 해당 서버의 데이터베이스를 공격하는 방식을 말한다.
클라이언트 - 서버 구성에서 사용자가 서버에 접속하기 위해 사용하는 프로그램 또는 서비스를 뜻한다.
가장 흔한 웹해킹 방법이며 데이터베이스를 손상시키거나 중요한 정보에 접근하려 쓰인다. 이 기법은 OWASP 에서 수년 동안 보안 위협 1순위로 분류되는 만큼 주의가 필요하다.
SQL in Web Pages
SQL injection은 보통 웹페이지에서 사용자에게 데이터베이스에 접근하는 입력창 (username 같이)에 SQL 코드를 입력하여 admin 이 모르는 사이에 데이터베이스를 실행시킨다.
예를들어 1=1은 항상 true 값이라는것을 활용하여
사용자 아이디 OR 1=1
이런식으로 넣으면 SQL statement 은 SELECT * FROM Users WHERE UserId = 사용자 아이디 OR 1=1;
이런 문장이 된다. 여기서 OR 은 둘 중 하나라도 true 면 true 값이기때문에 UserId = 사용자 아이디 OR 1=1; 의 값은 항상 true 가 된다.
--> 즉 이 쿼리문이 실행되면 해당 아이디값으로 로그인을 해서 기타 범죄행위가 발생할 수 있다....