컴퓨터보안/웹서버12 Server-side Request Forgery (SSRF) Server-side Request Forgery (SSRF)SSRF는 웹 애플리케이션이 내부망의 기능을 사용할 때 발생할 수 있는 보안 취약점입니다. 공격자는 웹 서버를 통해 다른 서버에 임의의 요청을 보내도록 유도할 수 있습니다. SSRF는 내부망의 중요한 자원에 접근하거나 민감한 정보를 노출시킬 수 있어 매우 치명적입니다.SSRF의 발생 원리와 예시SSRF가 발생하는 주요 원인은 웹 애플리케이션이 사용자 입력값을 사용하여 다른 서버로 요청을 보낼 때 적절한 검증이 이루어지지 않는 경우입니다. 예를 들어, 사용자가 입력한 URL이나 데이터가 그대로 내부 API 요청에 포함될 때 취약점이 발생할 수 있습니다.예시 코드 1: 사용자 입력 URL 요청from flask import Flask, reques.. 2024. 5. 29. File Vulnerability image-storagelist php".$value."";는 HTML 리스트 항목()을 생성합니다. 리스트 항목에는 파일에 대한 링크()가 포함되어 있으며, 링크의 href 속성은 파일의 경로를 가리킵니다. foreach ($scanned_directory as $key => $value) { echo "".$value.""; }?>upload.php 0) { #6. 오류가 발생한 경우 오류 메시지를 출력합니다. echo "Error: " . $error . ""; } else { #7. 동일한 이름의 파일이 이미 존재하는지 확인합니다. if (file_exists($directory . $name)) { .. 2024. 5. 28. 파일 취약성 관련 백그라운드 Q1. php 확장자를 가진 파일이 정상적으로 php 스크립트 엔진에 실행되고자 한다. (A)와 (B)에 들어갈 말로 올바른 것은? (A) (B) RunPHP, *.phpExecuteWith, PHPHandlerSetHandler, application/x-httpd-phpExecuteWith, application/x-httpd-phpGetHandler, application/html 1. Apache 웹 서버 기본 개념Apache HTTP Server는 전 세계에서 널리 사용되는 오픈 소스 웹 서버입니다. Apache는 HTTP 요청을 처리하고, 웹 페이지 및 리소스를 클라이언트(주로 웹 브라우저)에게 제공하는 역할을 합니다.2. 웹 서버의 동작 방식웹 서버는 클라이언트로부터 HTTP 요청을 받.. 2024. 5. 28. 파일 취약성 파일 취약성 개요서론많은 현대 웹 서비스는 글만으로 전달하기 힘든 정보를 전달할 수 있도록 이미지나 문서 등의 파일 업로드 기능을 제공합니다. 예를 들어, 이용자 간에 사진을 공유할 수 있는 이미지 공유 서비스들은 이미지 파일을 업로드할 수 있는 기능과 업로드된 이미지를 다른 이용자들이 다운로드할 수 있도록 하는 기능을 갖추고 있습니다.이러한 파일 공유 서비스를 개발할 때, 이용자가 업로드한 파일을 데이터베이스에 저장하는 것보다는 서버의 파일 시스템에 저장하는 것이 개발하기 쉽고, 관리 효율도 높습니다. 그러나 반대로, 임의 파일이 다운로드되는 취약점이나, 악성 웹셸 파일을 업로드하여 임의 코드를 실행할 수 있는 취약점을 발생시키기도 합니다.파일 업로드와 관련해서 발생하는 취약점은 파일 업로드 취약점(F.. 2024. 5. 24. 서버 관련 정리(간단히) 서버(Server)서버는 클라이언트의 요청을 처리하고 특정 서비스를 제공하는 컴퓨터 시스템입니다. 서버는 다양한 종류가 있으며, 그 역할에 따라 여러 가지 형태로 존재할 수 있습니다.서버의 종류와 역할서버 종류역할예시웹 서버클라이언트 요청을 받아 웹 페이지를 제공하며, 정적 및 동적 콘텐츠를 전달합니다.Apache HTTP Server, Nginx, Microsoft IIS, LiteSpeed프록시 서버클라이언트와 다른 서버 사이의 중개자로서 동작합니다.Squid, Nginx애플리케이션 서버웹 애플리케이션 프레임워크를 실행하고, 웹 애플리케이션 로직을 처리하여 동적 콘텐츠를 생성합니다.Apache Tomcat, JBoss데이터베이스 서버데이터를 저장하고 관리하며, 클라이언트의 데이터 요청을 처리합니다.M.. 2024. 5. 23. 서버 관련 정리(자세히) 일반적인 서버(Server)란?서버는 클라이언트의 요청을 처리하고, 특정 서비스를 제공하는 컴퓨터 시스템입니다. 서버는 다양한 종류가 있으며, 그 역할에 따라 여러 가지 형태로 존재할 수 있습니다. 서버의 종류와 역할:서버 종류역할예시웹서버클라이언트로부터의 요청을 받아 웹 페이지를 제공하며, 정적 및 동적 콘텐츠를 전달합니다.Apache HTTP Server, Nginx, Microsoft IIS, LiteSpeed프록시 서버클라이언트와 다른 서버 사이의 중개자로서 동작합니다.Squid, Nginx애플리케이션 서버애플리케이션 서버는 웹 애플리케이션 프레임워크를 실행하고, 웹 애플리케이션 로직을 처리하여 동적 콘텐츠를 생성하고 클라이언트에 반환하는 환경을 제공합니다.Apache Tomcat, JBoss데이.. 2024. 5. 23. 커맨드 인젝션 (Command Injection) 1. 커맨드 인젝션이란?커맨드 인젝션은 악의적인 사용자가 시스템 명령어를 실행하도록 프로그램에 입력을 전달하여 시스템을 공격하는 기법입니다. 이는 사용자가 입력한 값이 검증되지 않고 시스템 명령어로 실행될 때 발생합니다. 주요 특징은 다음과 같습니다:간단하지만 치명적인 공격: 시스템 명령어를 통해 전체 시스템 제어를 시도할 수 있어 매우 치명적입니다.개발자의 입력 검사 필요: 개발자는 반드시 사용자 입력을 철저히 검사하고, 가능하다면 system 함수를 사용하지 않아야 합니다.2. 커맨드 인젝션 예제@app.route('/ping')def ping(): ip = request.args.get('ip') return os.system(f'ping -c 3 {ip}')위 코드는 URL 쿼리를 통해.. 2024. 5. 21. NoSQL Injection 기법 정리(MongoDB) Blind NoSQL Injection 개요Blind NoSQL Injection은 데이터베이스가 직접적인 에러 메시지나 데이터를 반환하지 않는 상황에서 참/거짓 결과를 이용해 정보를 추출하는 기법입니다. 이를 통해 공격자는 데이터베이스의 구조나 중요한 정보를 알아낼 수 있습니다.주요 연산자NameDescription$expr쿼리 언어 내에서 집계 식을 사용할 수 있습니다.$regex지정된 정규식과 일치하는 문서를 선택합니다.$text지정된 텍스트를 검색합니다.$whereJavaScript 표현식을 만족하는 문서와 일치합니다.더 많은 연산자는 MongoDB 연산자 공식 문서를 통해 확인할 수 있습니다.공격 기법1. 기본 NoSQL Injection입력값을 조작하여 쿼리의 구조를 변경함으로써 의도하지 않은.. 2024. 5. 20. NoSQL Injection NoSQL Injection이란?NoSQL Injection은 SQL Injection과 비슷한 공격 방법으로, 입력값이 쿼리에 포함되면서 발생하는 문제점입니다. MongoDB의 NoSQL Injection 취약점은 주로 입력값의 타입 검증이 불충분할 때 발생합니다.MongoDB의 데이터 타입MongoDB는 다양한 데이터 타입을 지원합니다. 여기에는 문자열, 정수, 날짜, 실수 뿐만 아니라 오브젝트와 배열 타입도 포함됩니다. 오브젝트 타입의 입력값을 처리할 때 쿼리 연산자를 사용할 수 있으며, 이를 악용하여 다양한 행위를 수행할 수 있습니다.예제 코드 (Figure 1)const express = require('express');const app = express();app.get('/', functi.. 2024. 5. 20. ServerSide: SQL Injection # 들어가며 - 서론- DBMS에서 관리하는 데이터베이스에는 회원 계정, 비밀글과 같이 민감한 정보가 포함되어 있을 수 있음- 공격자는 데이터베이스 파일 탈취, SQL Injection 공격 등으로 해당 정보를 확보하고 악용하여 금전적인 이익을 얻을 수 있음- 따라서 임의 정보 소유자 이외의 이용자에게 해당 정보가 노출되지 않도록 해야 함- SQL Injection: DBMS에서 사용하는 쿼리를 임의로 조작해 데이터베이스의 정보를 획득하는 기법- Injection: 주입이라는 의미를 가진 영단어로, 인젝션 공격은 이용자의 입력값이 애플리케이션의 처리 과정에서 구조나 문법적인 데이터로 해석되어 발생하는 취약점을 의미드림이의 올바른 요청과 인젝션 요청드림이가 공장에 생산을 요청하는 그림으로, 드림이가 부품 .. 2024. 5. 16. SQL 문법 예시 및 정리 데이터베이스와 테이블 구조 예시데이터베이스: shop_db테이블: customers 테이블: orderscustomer_idnamecityorder_idcustomer_idorder_datestatus1John DoeNew York10112023-01-15completed2Jane SmithLos Angeles10222023-02-20pending3Alice BrownChicago10312023-03-05completed4Bob JohnsonNew York10432023-04-10completed5Charlie LeeChicago10542023-05-01cancelled 10612023-06-12completed 10732023-07-23completed 10822023-08-30complet.. 2024. 5. 15. 데이터베이스 정리 1. 데이터베이스(DB)란?조직 내에서 필요한 정보를 체계적으로 축적하고 제공하는 정보 서비스 기관의 핵심.DB 자체로는 아무것도 못하고, 관리 시스템(DBMS)과 함께 제공됨.2. 데이터베이스 관리 시스템(DBMS)사용자와 데이터베이스 사이에서 정보를 생성하고 관리해주는 소프트웨어.예시: MySQL, Oracle 등.3. SQL (Structured Query Language)관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위한 프로그래밍 언어.SQL의 3가지 명령어DDL (Data Definition Language):설명: 데이터베이스 구조를 정의하거나 수정하는 언어.주요 명령어: CREATE, ALTER, DROP.비유: 건물을 짓고 수정하는 것.DML (Data Manipulation Lan.. 2024. 5. 14. 이전 1 다음