[Lambda Runtime] Python 3.7 [API Gateway] REST API Method : POST Stage : Prod Lambda와 API Gateway를 연결 POST의 Request body에 전송되는 데이터를 Lambda 함수의 입력 값으로 받도록 한다. 공식 문서에 선언된 데이터 매핑 표현식을 참고할 수 있다. https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/request-response-data-mappings.html Amazon API Gateway API 요청 및 응답 데이터 매핑 참조 - Amazon API Gateway Amazon API Gateway API 요청 및 응답 데이터 매핑 참조 이..
파일 업로드 파일 업로드 취약점은 웹 사이트의 파일 업로드 기능을 이용하여 인가 받지 않은 파일을 서버에 임의로 업로드 하는 공격입니다. 웹 쉘 형태의 파일을 업로드 후 실행하면 서버의 자원을 장악할 수 있으며 웹 서비스를 실행하는 서버의 권한을 획득할 수 있습니다. 다른 페이지의 코드를 변조하여 클라이언트에게 악성 코드를 배포할 수 있습니다. 1. 공격 원리 파일 업로드 취약점은 아래표의 조건이 모두 만족할 때 발생하는 취약점입니다. No. 행위 발생 원인 1 악의적인 파일 업로드 파일 업로드 시 확장자 체크의 미흡, PUT 메소드 이용 2 업로드 경로 확인 업로드 디렉토리의 경로 노출 3 스크립트 실행 실행 권한 존재 파일 업로드 취약점은 다음의 과정으로 진행됩니다. 1. 파일 업로드 기능을 이용하여..
Stored XSS 공격 원리 공격자가 악성 스크립트를 취약한 서버에 게시글 형태로 등록시킨 후 사용자가 해당 게시물에 접근 시 스크립트가 실행되어 피해를 발생시키는 공격 기법이다. Stored XSS는 다음의 과정으로 이루어진다. 1. 공격자는 게시판에 Stored XSS 취약점이 있는 것을 확인합니다.2. 공격자는 사용자 쿠키 정보를 탈취하는 스크립트를 포함한 게시물을 작성합니다.3. 희생자는 해당 글 열람 시 쿠키 정보가 공격자에게 전송됩니다.4. 공격자는 희생자의 쿠키 정보를 이용해 계정을 탈취합니다. 공격 실습 No.실습 위치비고1localhost/freeboard/write게시판 게시글 추가 기능 취약 페이지 구현 제목 제목은 필수 입력 항목입니다! 본문 Browse… 파일 용량 제한은 50M..
XSS(Cross Site Scripting) XSS는 공격자가 삽입 또는 제공한 악의적인 스크립트가 사용자의 브라우저에서 실행되는 취약점이다. 악의적인 스크립트 코드가 삽입된 입력 값을 서버가 적절한 검증 절차 없이 반환하기 때문에 발생한다. 공격 방법과 우회 방법, 공격 목적이 다양해 자주 사용되는 공격이기 때문에 서비스에 따라 정확한 보안 대책을 세워야 한다. XSS로 인해 발생되는 피해는 다음과 같다. 사용자의 개인정보 탈취 Keylogger 형태의 스크립트를 사용하여 키보드 입력 값 탈취 사용자의 쿠키정보 탈취 Document.cookie를 사용하여 해당 사용자의 쿠키 값 탈취 피싱 사이트로 강제 이동 Location.href등을 사용하여 페이지 강제 이동 악성코드 다운로드 및 실행 악성코드 다..
Blind SQL Injection 공격 원리 1. SQL Injection 공격 가능 여부 확인 2. 데이터 개수 확인(Table, Column, Data) 3. 데이터 문자열 1개씩 추출 4. 데이터 1개 추출 5. 모든 데이터 추출 6. 원하는 데이터 추출 논리 연산자를 이용해 True인 쿼리문과 False인 쿼리문의 결과를 비교하여 정보를 추출하는 공격입니다. AND 연산자를 사용해 논리가 맞지 않을 때 출력되는 데이터와 참일 때 출력되는 데이터를 비교하여 공격할 수 있습니다. 공격 과정은 다음과 같습니다. 취약 코드 구현 SQL Injection에 사용했던 관리자 로그인 페이지에서 실습한다. 관리자 로그인 php 코드는 gomguk.tistory.com/58 에서 확인할 수 있다. 공격 실습 N..
RDS(Relational Database Service) AWS 환경에서 관계형 데이터베이스를 제공하는 서비스이다. PostgreSQL, MySQL, MariaDB, ORACLE 등 다양한 벤더의 데이터베이스를 마이그레이션하거나 복제하는 것을 지원한다. 본 포스트에서는 AWS RDS(AuroraDB)와 Flask의 웹 애플리케이션을 연동하는 것을 목표로 한다. 개발 스택은 다음과 같다. [개발 환경] Python 3.7.3 Flask [AWS 서비스] AWS Codecommit(CI/CD) Elastic Beanstalk(앱 배포) AuroraDB 1. RDS 시작하기 베어메탈에 OS를 구성하고 DB 엔진을 설치하고 운영에 걸리는 시간에 비하면 빠른 시간 내에 DB의 설정이 완료된다. 다만, DB in..
1. 들어가기 클라우드에 관심이 높아지면서 클라우드 보안에도 중요성이 강조되고 있다. AWS 프리티어를 이용하여 본인이 직접 환경을 구축해서 실습할 수 있는 워게임이 있어 풀이를 해보았다. 2. 실습 준비 ServerlessGoat는 OWASP에서 제안하는 10가지 클라우드 보안 요소를 집약시켜놓은 Playground이다. 공식 Github는 아래와 같다. github.com/OWASP/Serverless-Goat OWASP/Serverless-Goat OWASP ServerlessGoat: a serverless application demonstrating common serverless security flaws - OWASP/Serverless-Goat github.com AWS사이트에서 제공하는..
더보기 https://docs.min.io/docs/ MinIO | The MinIO Quickstart Guide MinIO Quickstart Guide MinIO is a High Performance Object Storage released under GNU Affero General Public License v3.0. It is API compatible with Amazon S3 cloud storage service. Use MinIO to build high performance infrastructure for machine learning, ana docs.min.io MinIO의 소프트웨어 정의 제품군은 초기부터 클라우드 기반으로서 퍼블릭 클라우드, 프라이빗 클라우드 및 에지에서 ..
UNION SQL Injection 취약 게시판 구현 및 공격 실습 1. 공격 원리 1. SQL Injection 공격 가능 여부 확인 2. 컬럼 수 추출 3 . 각 컬럼 데이터형 추출 4. 데이블 목록 추출 5. 원하는 테이블의 컬럼명 추출 6. 원하는 데이터 추출 SQL에서 Union은 두 개의 쿼리문에 대한 결과를 통합하여 하나의 테이블로 보여주게 하는 키워드이다. 정상적인 쿼리문에 Union 키워드를 사용하여 인젝션에 성공하면, 원하는 쿼리문을 실행할 수 있게 된다. Union SQL Injection은 이전 Select 문과 Union Select 문의 칼럼 수가 동일해야 한다는 특징과 칼럼은 각 순서별로 동일한 데이터 형이어야 한다는 특징을 이용한다. 공격 과정은 다음과 같다. 2. 공격 실습..
SQL Injection 1. 공격 원리 SQL Injection는 코드 인젝션의 한 기법으로 클라이언트의 입력 값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격 방법이다. 문법적 의미가 있는 싱글쿼터(‘)와 주석(#)을 이용해 완성된 쿼리문을 주입해 공격자는 로그인 우회, 데이터 추출 등의 악의적인 행동을 취할 수 있다. SQL Injection의 공격 종류는 다음과 같다. 종류 대상/특징 Union SQLi UNION 절을 이용하여 두 개 이상의 쿼리를 묶어 원하는 정보를 DB에서 추출하는 공격 기법 Error Base SQLi 데이터베이스의 문법에 맞지 않은 쿼리문 입력 시 반환되는 에러 정보를 기반으로 공격하는 기법 Blind SQLi True인 쿼리문과 False인 쿼리문 삽입 시 반환되..