IT/웹 보안 4

[Command Injection] 발생 원리, exploit 예시, 예방

Command Injection: 시스템 명령어를 실행하는 함수에 이용자가 입력을 통해 임의의 인자를 전달할 수 있을 때 발생- 공격에 사용되면 웹 애플리케이션에 임의 명령어를 실행할 수 있어 공격 파급력이 높음인젝션(Injection): 악의적인 데이터를 프로그램에 입력하여, 이를 시스템 명령어, 코드, 데이터베이스 쿼리 등으로 실행되게 하는 기법- 웹 애플리케이션을 대상으로 하는 인젝션 공격은 SQL Injection, command injection 등이 있음  발생하는 이유웹 애플리케이션을 개발하다보면, 어떤 기능에 대해서는 스스로 코드를 작성하기보다 이미 설치된 소프트웨어를 사용하는 것이 편리할 때가 있다. 업로드 디렉토리에 있는 파일들의 이름을 출력하는 웹 애플리케이션을 만든다고 할 때, 디렉..

IT/웹 보안 2024.06.08

[NoSQL Injection & Blind NoSQL Injection]

NoSQL Injection: 이용자의 입력값이 쿼리에 포함되어, 이용자가 원하는 요청을 실행하는 취약점 ㅡ SQL Injection과 공격 목적 및 방법이 매우 유사 SQL과 달리, NoSQL은 사용하는 DBMS에 따라 요청 방식과 구조가 다른데이 글에서는 MongoDB에서의 NoSQL Injection만 알아볼 것임 MongoDB에서는 SQL이 저장할 수 있는 데이터의 자료형인 문자열, 정수, 날짜, 실수 외에도 오브젝트, 배열 타입을 사용할 수 있는데,오브젝트 타입의 입력값을 처리할 때에는 쿼리 연산자를 사용할 수 있어,이를 통해 다양한 행위가 가능 >> Node.js의 express 프레임워크로 짜인 소스코드 예시const express = require('express');const app = ..

IT/웹 보안 2024.06.08

[SQL Injection & Blind SQL Injection]

SQL InjectionDBMS의 SQL 쿼리에 임의의 입력값을 넣어 쿼리를 조작하여, 인증을 우회하거나 데이터베이스 정보를 유출하는 공격- SQL을 이해하고 있다면, 모든 RDBMS에 대해 SQL Injection 가능SQLDBMS에 데이터를 질의하는 언어Injection이용자의 악의적인 입력값이 애플리케이션의 처리 과정에서 구조나 문법적인 데이터로 해석되어 발생하는 취약점 예시 상황웹 서비스 내에,로그인을 위해 아이디와 비밀번호를 입력받고, 이를 DBMS에 조회하기 위한 쿼리에 포함하여 쿼리를 실행하는 페이지가 있다 하자.  이때 user_table은 아래와 같다. 정상적인 쿼리아이디와 비밀번호 칸에 정상적으로 각각 dreamhack, password를 입력하면 쿼리는 아래와 같이 생성된다. 쿼리 설..

IT/웹 보안 2024.06.08

[Cross Site Request Forgery (CSRF)]

CSRF는 임의 이용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 클라이언트 측 취약점이다.  웹 서비스 예시 소스 코드이용자로부터 예금주와 금액을 입력받고 송금을 수행한다. 이때 계좌 비밀번호, OTP 등을 사용하지 않기 때문에,로그인한 이용자는 추가 인증 정보 없이 해당 기능을 이용할 수 있다. 송금 요청이 담긴 request는 아래와 같다.  1.attacker는 페이지에 악성 스크립트를 심고, 여기에 victim(정상 이용자)이 접속하도록 / 값을 입력하도록 유도한다.  eg) 악성 스크립트가 담긴 글을 게시판에 작성 악성 스크립트: HTTP request를 보내는 코드- HTML 또는 Javascript를 통해 작성할 수 있음 HTML을 통한 공격 코드 예시태그를 사용해 HTTP 요청..

IT/웹 보안 2024.06.08