본문 바로가기

전체 글

(33)
SQL Injection SQL Injection DBMS에서 사용하는 쿼리를 임의로 조작해 데이터베이스의 정보를 획득하는 것 *SQL이란? DBMS 에 데이터를 질의하는 쿼리 언어 Ex) 로그인 기능을 위한 쿼리 DBMS에 저장된 accounts 테이블에서 이용자의 아이디가 dreamhack이고, 비밀번호가 password인 데이터를 조회 SELECT * FROM accounts WHERE user_id='dreamhack' and user_pw='password' 더보기 - SELECT: 조회 명령어 - *: 테이블의 모든 컬럼 조회 - FROM accounts: accounts 테이블 에서 데이터를 조회할 것이라고 지정 - WHERE user_id='dreamhack' and user_pw='password': user_i..
DBMS 데이터베이스 (Database) 컴퓨터가 정보를 기록하는 곳 다수의 사람들이 데이터를 생성하고, 참조하고, 수정하는 웹 서버의 환경에 가장 적합한 자료구조 DataBase Management System (DBMS) 데이터베이스를 관리하는 애플리케이션 DBMS 종류 Relational (관계형) MySQL, MariaDB, PostgreSQL, SQLite Non-Relational (비관계형) MongoDB, CouchDB, Redis 두 DBMS 의 차이점: 데이터 저장 방식 관계형 - 행과 열의 집합인 테이블 형식으로 저장 비관계형 - Key-Value 형태로 저장 RDBMS (관계형 DBMS) RDBMS에서 관계 연산자는 SQL이라는 쿼리 언어를 사용하고, 쿼리를 통해 테이블 형식의 데이터를 조작..
[dreamhack] Exercise: CSRF Exercise: CSRF https://learn.dreamhack.io/203#2 로그인 | Dreamhack dreamhack.io 서론 이번 코스에서는 해당 취약점이 존재하는 드림핵 워게임 문제를 풀어보면서 관리자만 수행할 수 있는 메모 작성 기능을 이용해 보도록 하겠습니다. 배경 지식 본 문제는 파이썬 Flask 프레임워크를 통해 구현되었습니다. 해당 문제는 CSRF를 통해 관리자의 기능을 이용해야 하기 때문에, 관리자가 방문하는 시나리오가 필요합니다. 이러한 기능은 셀레늄을 통해 구현하였습니다. 문제 목표 및 기능 요약 CSRF-1 문제의 목표는 CSRF를 통해 관리자 계정으로 특정 기능을 실행시키는 것입니다. 문제애서는 다음 네 페이지를 제공합니다. 엔드포인트설명 / 인덱스 페이지 입니다. ..
CSRF Cross Site Request Forgery (CSRF): 사이트 간 요청 위조. 이용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 만드는 공격. XSS와 CSRF의 차이 XSS와 CSRF는 스크립트를 웹 페이지에 작성해 공격한다는 점에서 매우 유사합니다. 그렇다면 두 취약점의 공통점과 차이점을 알아보겠습니다. 공통점 두 개의 취약점은 모두 클라이언트를 대상으로 하는 공격이며, 이용자가 악성 스크립트가 포함된 페이지에 접속하도록 유도해야 합니다. 차이점 두 개의 취약점은 공격에 있어 서로 다른 목적을 가집니다. XSS는 인증 정보인 세션 및 쿠키 탈취를 목적으로 하는 공격이며, 공격할 사이트의 오리진에서 스크립트를 실행시킵니다. CSRF는 이용자가 임의 페이지에 HTT..
[dreamHack] xss-1, xss-2
[dreamhack] Exercise: XSS https://dreamhack.io/lecture/courses/184 Exercise: XSS xss-1를 함께 풀어봅니다. dreamhack.io 페이지설명 / 인덱스 페이지입니다. /vuln 이용자가 입력한 값을 출력합니다. /memo 이용자가 메모를 남길 수 있으며, 작성한 메모를 출력합니다. /flag 전달된 URL에 임의 이용자가 접속하게끔 합니다. 해당 이용자의 쿠키에는 FLAG가 존재합니다. 엔드포인트: /vuln Figure1은 vuln 페이지를 구성하는 코드입니다. 코드를 살펴보면, 이용자가 전달한 param 파라미터의 값을 출력합니다. Figure 1. vuln 함수 @app.route("/vuln") def vuln(): param = request.args.get("param",..
XSS 종류 Stored XSS Stored XSS는 서버의 데이터베이스 또는 파일 등의 형태로 저장된 악성 스크립트를 조회할 때 발생하는 XSS입니다. 대표적으로 게시물과 댓글에 악성 스크립트를 포함해 업로드하는 방식이 있습니다. 게시물은 불특정 다수에게 보여지기 때문에 해당 기능에서 XSS 취약점이 존재할 경우 높은 파급력을 가집니다. Reflected XSS Reflected XSS는 서버가 악성 스크립트가 담긴 요청을 출력할 때 발생합니다. 대표적으로 게시판 서비스에서 작성된 게시물을 조회하기 위한 검색창에서 스크립트를 포함해 검색하는 방식이 있습니다. 이용자가 게시물을 검색하면 서버에서는 검색 결과를 이용자에게 반환합니다. 일부 서비스에서는 검색 결과를 응답에 포함하는데, 검색 문자열에 악성 스크립트가 포함..
ClientSide: XSS 클라이언트 사이드 취약점 웹 페이지의 이용자를 대상으로 공격할 수 있는 취약점. 대표적인 공격 중 하나로 XSS가 있다. Cross Site Scripting(XSS) 공격자가 웹 리소스에 악성 스크립트를 삽입해 이용자의 웹 브라우저에서 해당 스크립트를 실행할 수 있습니다. 공격자는 해당 취약점을 통해 특정 계정의 세션 정보를 탈취하고 해당 계정으로 임의의 기능을 수행할 수 있습니다. 예를 들어, 드림핵 웹 페이지에서 XSS 취약점이 존재하면 https://dreamhack.io 내에서 오리진 권한으로 악성 스크립트를 삽입합니다. 이후에 이용자가 악성 스크립트가 포함된 페이지를 방문하면 공격자가 임의로 삽입한 스크립트가 실행되어 쿠키 및 세션이 탈취될 수 있습니다. 자바스크립트는 웹 문서의 동작을 정의합..