목록보안/개인공부 (32)

이벤트 핸들러란 특정 요소에서 발생하는 이벤트를 처리하기 위해 존재하는 콜백 형태의 핸들러 함수입니다. 따라서 이벤트 핸들러 내에 XSS 공격 코드를 삽입해두면 해당 이벤트가 발생했을 때 우리의 XSS 공격 코드가 실행하게 됩니다. 자주 사용되는 이벤트 핸들러 속성으로 onload 와 onerror, onfocus가 있습니다. 해당 태그가 요청하는 데이터를 로드한 후에 실행, 만약 로드에 실패했다면 실행되지 않습니다. 해당 태그가 요청하는 데이터를 로드하는데 실패할 시 실행, 만약 로드에 성공했다면 실행되지 않습니다. input 태그에 커서를 클릭하여 포커스가 되면 실행되는 이벤트 핸들러입니다. 문자열 치환 XSS 키워드를 필터링할 때 의심되는 구문을 거부하는 대신에 단순히 치환 혹은 제거하는 방식의 필..

서비스 간 HTTP 통신이 이뤄질 때 요청 내에 이용자의 입력값이 포함될 수 있습니다. 이용자의 입력값으로 포함되면 개발자가 의도하지 않은 요청이 전송될 수 있습니다. SSRF는 웹 서비스의 요청을 변조하는 쥐약점으로, 브라우저가 변조된 요청을 보내는 CSRF와는 다르게 웹 서비스의 권한으로 변조된 요청을 보낼 수 있습니다. 웹 서비스는 외부에서 접근할 수 없는 내부망의 기능을 사용할 때가 있습니다. 예를 들어 백오피스 서비스가 있습니다. 백오피스 서비스는 관리자 페이지라고도 불리며, 이용자의 행위가 의심스러울 때 해당 계정을 정지시키거나 삭제하는 등 관리자만이 수행할 수 있는 모든 기능을 구현한 서비스입니다. 이러한 서비스는 관리자만 이용할 수 있어야 하기 때문에 외부에서 접근할 수 없는 내부망에 위치..

SQL Injection은 SQL을 이해하고 있다면, 모든 RDBMS에 대해 공격을 수행할 수 있습니다. 그러나 NoSQL은 사용하는 DBMS에 따라 요청 방식과 구조가 다르기 때문에 각각의 DBMS에 대해 이해하고 있어야 합니다. 이번 NoSQL은 MongoDB만 다루겠습니다. SQL은 저장하는 데이터의 자료형으로 문자열, 정수, 날짜, 실수 등을 사용할 수 있습니다. MongoDB는 이 외에도 오브젝트, 배열 타입을 사용할 수 있습니다. 예제를 통해 알아보겠습니다. const express = require('express'); const app = express(); const mongoose = require('mongoose'); const db = mongoose.connection; mong..

File Upload Vulnerability 공격자의 파일을 웹 서비스의 파일 시스템에 업로드하는 과정에서 발생하는 보안 취약점입니다. 파일 시스템 상 임의 경로에 원하는 파일을 업로드하거나 악성 확장자를 갖는 파일을 업로드할 수 있을 때 발생합니다. 원하는 시스템 커맨드를 실행하는 원격 코드 실행 취약점을 유발할 수 있습니다. File Download Vulnerability 웹 서비스의 파일 시스템에 존재하는 파일을 다운로드 하는 과정에서 발생하는 보안 취약점입니다. 공격자는 웹 서비스의 파일 시스템에 존재하는 임의 파일을 다운로드할 수 있습니다. 설정 파일, 패스워드 파일, 데이터 베이스 백업 본 등을 다운로드 하여 민감한 정보를 탈취할 수 있고 2차 공격을 수행할 수 있습니다. from flas..

웹 서비스는 쿠키 또는 세션을 사용해 이용자를 식별합니다. 임의 이용자의 쿠키를 사용할 수 있다면, 이는 곧 임의 이용자의 권한으로 웹 서비스 기능을 사용할 수 있습니다. CSRF는 임의 이용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 취약점입니다. 예를 들어, 이용자의 계정으로 임의 금액을 송금해 금전적인 이득을 취하거나 비밀번호를 변경해 계정을 탈취, 관리자 계정을 공격해 공지사항 작성 등으로 혼란을 야기할 수 있습니다. CSRF 공격에 성공하기 위해서는 공격자가 작성한 악성 스크립트를 이용자가 실행해야 합니다. 공격자가 이용자에게 메일을 보내거나 게시판에 글을 작성해 이용자가 이를 조회하도록 유도합니다. 공격 스크립트는 HTML 또는 JS를 통해 작성할 수 있습니다. img, form ..

XSS는 클라이언트 사이드 취약점 중 하나입니다. 공격자가 웹 리소스에 악성 스크립트를 삽입해 이용자의 웹 브라우저에서 해당 스크립트를 실행할 수 있습니다. 공격자는 해당 취약점을 통해 특정 계정의 세션 정보를 탈취하고 해당 계정으로 임의의 기능을 수행할 수 있습니다. 이용자가 악성 스크립트가 포함된 페이지를 방문하면 공격자가 임의로 삽입한 스크립트가 실행되어 쿠키 및 세션이 탈취될 수 있습니다. XSS 공격은 이용자가 삽입한 내용을 출력하는 기능에서 발생합니다. 예를 들어 게시물과 댓글이 있습니다. 대부분의 사이트는 막혀있지만 태그를 삽입하여 진행합니다. Stored XSS는 서버의 데이터베이스 또는 파일 등의 형태로 저장된 악성 스크립트를 조회할 때 발생하는 XSS입니다. 대표적으로 게시물과 댓글에 ..

쿠키 Connetionless, Stateless 특성을 갖는 HTTP에서 상태를 유지하기 위해 쿠기가 탄생되었습니다. 쿠키는 Key와 Value로 이뤄진 일종의 단위로, 서버가 클라이언트에게 쿠키를 발급하면, 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 같이 전송합니다. 서버는 클라이언트의 요청에 포함된 쿠키를 확인해 클라이언트를 구분할 수 있습니다. HTTP 프로토콜 특징 Connectionless : 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것 Stateless : 통신이 끝난 후 상태 정보를 저장하지 않는 것을 의미 세션 쿠키에 인증 상태를 저장하지만 클라이언트가 인증 정보를 변조할 수 없게 하기 위해 세션을 사용합니다. 세션은 인증 정보를 서버에 저장하고 해당 데이터에 접근할 수 있..

웹 브라우저는 뛰어난 이용자 경험을 제공하는 소프트웨어 중 하나입니다. 이용자는 브라우저를 이용하여 쉽게 정보를 검색하고, 동영상을 보고, 파일을 내려받지만 내부에서 어떠한 연산이 일어나는지는 전혀 알지 못합니다. 주소창에 dreamhack.io를 입력했을 때 웹 브라우저가 하게되는 기본적인 동작 과정 1. 웹 브라우저의 주소창에 입력된 수조를 해석 (URL 분석) 2. dreamhack.io 해당하는 주소 탐색(DNS 요청) 3. HTTP를 통해 dreamhack.io에 요청 4. dreamhack.io의 http응답 수신 5. 리소스 다운로드 및 웹 렌더링 URL scheme : http:// host : example.com path : /path query : ?search=1 fragment :..